aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--AUTHORS20
-rw-r--r--FOO30015
-rw-r--r--MANIFEST.in10
-rw-r--r--api-docs/Makefile2
-rw-r--r--babel.ini4
-rwxr-xr-xdevtools/maketarball.sh3
-rw-r--r--docs/source/conf.py3
-rw-r--r--docs/source/devel/codebase.rst (renamed from docs/source/siteadmin/codebase.rst)125
-rw-r--r--docs/source/devel/originaldesigndecisions.rst336
-rw-r--r--docs/source/devel/storage.rst43
-rw-r--r--docs/source/index.rst18
-rw-r--r--docs/source/plugindocs/raven.rst2
-rw-r--r--docs/source/pluginwriter/api.rst24
-rw-r--r--docs/source/pluginwriter/database.rst111
-rw-r--r--docs/source/siteadmin/deploying.rst4
-rw-r--r--docs/source/siteadmin/media-types.rst34
-rw-r--r--docs/source/siteadmin/production-deployments.rst13
-rw-r--r--docs/source/siteadmin/relnotes.rst67
-rw-r--r--extlib/html5shiv/MIT.txt20
-rw-r--r--extlib/html5shiv/html5shiv.js3
-rw-r--r--extlib/jquery/MIT-LICENSE.txt (renamed from extlib/jquery/MIT.txt)3
-rw-r--r--mediagoblin.ini8
-rw-r--r--mediagoblin/_version.py2
-rw-r--r--mediagoblin/app.py5
-rw-r--r--mediagoblin/auth/forms.py1
-rw-r--r--mediagoblin/auth/views.py18
-rw-r--r--mediagoblin/config_spec.ini17
-rw-r--r--mediagoblin/db/migration_tools.py8
-rw-r--r--mediagoblin/db/migrations.py61
-rw-r--r--mediagoblin/db/mixin.py133
-rw-r--r--mediagoblin/db/models.py58
-rw-r--r--mediagoblin/db/util.py2
-rw-r--r--mediagoblin/decorators.py37
-rw-r--r--mediagoblin/edit/views.py47
-rw-r--r--mediagoblin/i18n/ar/LC_MESSAGES/mediagoblin.mobin22564 -> 24638 bytes
-rw-r--r--mediagoblin/i18n/ar/LC_MESSAGES/mediagoblin.po550
-rw-r--r--mediagoblin/i18n/ca/LC_MESSAGES/mediagoblin.mobin22314 -> 24163 bytes
-rw-r--r--mediagoblin/i18n/ca/LC_MESSAGES/mediagoblin.po557
-rw-r--r--mediagoblin/i18n/da/LC_MESSAGES/mediagoblin.mobin21386 -> 23311 bytes
-rw-r--r--mediagoblin/i18n/da/LC_MESSAGES/mediagoblin.po545
-rw-r--r--mediagoblin/i18n/de/LC_MESSAGES/mediagoblin.mobin22702 -> 24819 bytes
-rw-r--r--mediagoblin/i18n/de/LC_MESSAGES/mediagoblin.po586
-rw-r--r--mediagoblin/i18n/en/LC_MESSAGES/mediagoblin.po535
-rw-r--r--mediagoblin/i18n/eo/LC_MESSAGES/mediagoblin.mobin22387 -> 24144 bytes
-rw-r--r--mediagoblin/i18n/eo/LC_MESSAGES/mediagoblin.po596
-rw-r--r--mediagoblin/i18n/es/LC_MESSAGES/mediagoblin.mobin23107 -> 24884 bytes
-rw-r--r--mediagoblin/i18n/es/LC_MESSAGES/mediagoblin.po582
-rw-r--r--mediagoblin/i18n/fa/LC_MESSAGES/mediagoblin.mobin22210 -> 24126 bytes
-rw-r--r--mediagoblin/i18n/fa/LC_MESSAGES/mediagoblin.po539
-rw-r--r--mediagoblin/i18n/fr/LC_MESSAGES/mediagoblin.mobin23218 -> 25195 bytes
-rw-r--r--mediagoblin/i18n/fr/LC_MESSAGES/mediagoblin.po569
-rw-r--r--mediagoblin/i18n/he/LC_MESSAGES/mediagoblin.mobin24165 -> 25897 bytes
-rw-r--r--mediagoblin/i18n/he/LC_MESSAGES/mediagoblin.po559
-rw-r--r--mediagoblin/i18n/ia/LC_MESSAGES/mediagoblin.mobin21386 -> 23302 bytes
-rw-r--r--mediagoblin/i18n/ia/LC_MESSAGES/mediagoblin.po537
-rw-r--r--mediagoblin/i18n/is_IS/LC_MESSAGES/mediagoblin.mobin23175 -> 25008 bytes
-rw-r--r--mediagoblin/i18n/is_IS/LC_MESSAGES/mediagoblin.po559
-rw-r--r--mediagoblin/i18n/it/LC_MESSAGES/mediagoblin.mobin22407 -> 24263 bytes
-rw-r--r--mediagoblin/i18n/it/LC_MESSAGES/mediagoblin.po553
-rw-r--r--mediagoblin/i18n/ja/LC_MESSAGES/mediagoblin.mobin21955 -> 23923 bytes
-rw-r--r--mediagoblin/i18n/ja/LC_MESSAGES/mediagoblin.po548
-rw-r--r--mediagoblin/i18n/ko_KR/LC_MESSAGES/mediagoblin.mobin23379 -> 25185 bytes
-rw-r--r--mediagoblin/i18n/ko_KR/LC_MESSAGES/mediagoblin.po557
-rw-r--r--mediagoblin/i18n/nl/LC_MESSAGES/mediagoblin.mobin21850 -> 23774 bytes
-rw-r--r--mediagoblin/i18n/nl/LC_MESSAGES/mediagoblin.po553
-rw-r--r--mediagoblin/i18n/nn_NO/LC_MESSAGES/mediagoblin.mobin20935 -> 22783 bytes
-rw-r--r--mediagoblin/i18n/nn_NO/LC_MESSAGES/mediagoblin.po558
-rw-r--r--mediagoblin/i18n/pl/LC_MESSAGES/mediagoblin.mobin22222 -> 24051 bytes
-rw-r--r--mediagoblin/i18n/pl/LC_MESSAGES/mediagoblin.po557
-rw-r--r--mediagoblin/i18n/pt_BR/LC_MESSAGES/mediagoblin.mobin21560 -> 24133 bytes
-rw-r--r--mediagoblin/i18n/pt_BR/LC_MESSAGES/mediagoblin.po779
-rw-r--r--mediagoblin/i18n/ro/LC_MESSAGES/mediagoblin.mobin22885 -> 24857 bytes
-rw-r--r--mediagoblin/i18n/ro/LC_MESSAGES/mediagoblin.po569
-rw-r--r--mediagoblin/i18n/ru/LC_MESSAGES/mediagoblin.mobin28560 -> 31085 bytes
-rw-r--r--mediagoblin/i18n/ru/LC_MESSAGES/mediagoblin.po582
-rw-r--r--mediagoblin/i18n/sk/LC_MESSAGES/mediagoblin.mobin22277 -> 24563 bytes
-rw-r--r--mediagoblin/i18n/sk/LC_MESSAGES/mediagoblin.po768
-rw-r--r--mediagoblin/i18n/sl/LC_MESSAGES/mediagoblin.mobin21566 -> 23482 bytes
-rw-r--r--mediagoblin/i18n/sl/LC_MESSAGES/mediagoblin.po539
-rw-r--r--mediagoblin/i18n/sq/LC_MESSAGES/mediagoblin.mobin22754 -> 24623 bytes
-rw-r--r--mediagoblin/i18n/sq/LC_MESSAGES/mediagoblin.po559
-rw-r--r--mediagoblin/i18n/sr/LC_MESSAGES/mediagoblin.mobin21482 -> 23398 bytes
-rw-r--r--mediagoblin/i18n/sr/LC_MESSAGES/mediagoblin.po535
-rw-r--r--mediagoblin/i18n/sv/LC_MESSAGES/mediagoblin.mobin21712 -> 23628 bytes
-rw-r--r--mediagoblin/i18n/sv/LC_MESSAGES/mediagoblin.po543
-rw-r--r--mediagoblin/i18n/te/LC_MESSAGES/mediagoblin.mobin21628 -> 23544 bytes
-rw-r--r--mediagoblin/i18n/te/LC_MESSAGES/mediagoblin.po535
-rw-r--r--mediagoblin/i18n/zh_TW.Big5/LC_MESSAGES/mediagoblin.mobin21426 -> 23342 bytes
-rw-r--r--mediagoblin/i18n/zh_TW.Big5/LC_MESSAGES/mediagoblin.po535
-rw-r--r--mediagoblin/i18n/zh_TW/LC_MESSAGES/mediagoblin.mobin20709 -> 22667 bytes
-rw-r--r--mediagoblin/i18n/zh_TW/LC_MESSAGES/mediagoblin.po559
-rw-r--r--mediagoblin/init/celery/__init__.py4
-rw-r--r--mediagoblin/init/celery/from_celery.py51
-rw-r--r--mediagoblin/listings/routing.py8
-rw-r--r--mediagoblin/listings/views.py26
-rw-r--r--mediagoblin/media_types/__init__.py3
-rw-r--r--mediagoblin/media_types/ascii/models.py3
-rw-r--r--mediagoblin/media_types/ascii/processing.py6
-rw-r--r--mediagoblin/media_types/audio/models.py3
-rw-r--r--mediagoblin/media_types/audio/processing.py6
-rw-r--r--mediagoblin/media_types/audio/transcoders.py3
-rw-r--r--mediagoblin/media_types/image/__init__.py6
-rw-r--r--mediagoblin/media_types/image/models.py3
-rw-r--r--mediagoblin/media_types/image/processing.py59
-rw-r--r--mediagoblin/media_types/stl/model_loader.py3
-rw-r--r--mediagoblin/media_types/stl/models.py3
-rw-r--r--mediagoblin/media_types/stl/processing.py7
-rw-r--r--mediagoblin/media_types/video/__init__.py7
-rw-r--r--mediagoblin/media_types/video/migrations.py15
-rw-r--r--mediagoblin/media_types/video/models.py57
-rw-r--r--mediagoblin/media_types/video/processing.py156
-rw-r--r--mediagoblin/media_types/video/transcoders.py389
-rw-r--r--mediagoblin/media_types/video/util.py59
-rw-r--r--mediagoblin/mg_globals.py9
-rw-r--r--mediagoblin/plugins/api/tools.py3
-rw-r--r--mediagoblin/plugins/api/views.py8
-rw-r--r--mediagoblin/plugins/geolocation/__init__.py35
-rw-r--r--mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html (renamed from mediagoblin/templates/mediagoblin/utils/geolocation_map.html)3
-rw-r--r--mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map_js_head.html (renamed from mediagoblin/tests/test_tests.py)27
-rw-r--r--mediagoblin/plugins/oauth/README.rst4
-rw-r--r--mediagoblin/plugins/oauth/forms.py7
-rw-r--r--mediagoblin/plugins/oauth/templates/oauth/authorize.html2
-rw-r--r--mediagoblin/plugins/oauth/views.py8
-rw-r--r--mediagoblin/plugins/piwigo/README.rst23
-rw-r--r--mediagoblin/plugins/piwigo/__init__.py37
-rw-r--r--mediagoblin/plugins/piwigo/forms.py28
-rw-r--r--mediagoblin/plugins/piwigo/tools.py107
-rw-r--r--mediagoblin/plugins/piwigo/views.py167
-rw-r--r--mediagoblin/plugins/raven/README.rst17
-rw-r--r--mediagoblin/plugins/raven/__init__.py92
-rw-r--r--mediagoblin/processing/__init__.py42
-rw-r--r--mediagoblin/processing/task.py9
-rw-r--r--mediagoblin/static/css/base.css6
-rw-r--r--mediagoblin/static/images/icon_collect.pngbin588 -> 0 bytes
l---------mediagoblin/static/js/extlib/html5shiv.js1
l---------mediagoblin/static/js/extlib/thingiview.js1
-rw-r--r--mediagoblin/storage/__init__.py10
-rw-r--r--mediagoblin/storage/cloudfiles.py58
-rw-r--r--mediagoblin/storage/filestorage.py5
-rw-r--r--mediagoblin/submit/lib.py11
-rw-r--r--mediagoblin/submit/views.py22
-rw-r--r--mediagoblin/templates/mediagoblin/base.html82
-rw-r--r--mediagoblin/templates/mediagoblin/bits/above-content.html17
-rw-r--r--mediagoblin/templates/mediagoblin/bits/body-end.html17
-rw-r--r--mediagoblin/templates/mediagoblin/bits/body-start.html17
-rw-r--r--mediagoblin/templates/mediagoblin/edit/attachments.html15
-rw-r--r--mediagoblin/templates/mediagoblin/edit/edit_account.html11
-rw-r--r--mediagoblin/templates/mediagoblin/media_displays/image.html7
-rw-r--r--mediagoblin/templates/mediagoblin/media_displays/stl.html2
-rw-r--r--mediagoblin/templates/mediagoblin/media_displays/video.html41
-rw-r--r--mediagoblin/templates/mediagoblin/root.html11
-rw-r--r--mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html2
-rw-r--r--mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html2
-rw-r--r--mediagoblin/templates/mediagoblin/user_pages/gallery.html26
-rw-r--r--mediagoblin/templates/mediagoblin/user_pages/media.html62
-rw-r--r--mediagoblin/templates/mediagoblin/user_pages/media_collect.html46
-rw-r--r--mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html2
-rw-r--r--mediagoblin/templates/mediagoblin/utils/collections.html38
-rw-r--r--mediagoblin/templates/mediagoblin/utils/tags.html16
-rw-r--r--mediagoblin/templates/mediagoblin/utils/wtforms.html22
-rw-r--r--mediagoblin/tests/conftest.py15
-rw-r--r--mediagoblin/tests/pytest.ini2
-rw-r--r--mediagoblin/tests/test_api.py26
-rw-r--r--mediagoblin/tests/test_auth.py77
-rw-r--r--mediagoblin/tests/test_cache.py2
-rw-r--r--mediagoblin/tests/test_collections.py11
-rw-r--r--mediagoblin/tests/test_config.py2
-rw-r--r--mediagoblin/tests/test_csrf_middleware.py20
-rw-r--r--mediagoblin/tests/test_edit.py60
-rw-r--r--mediagoblin/tests/test_globals.py10
-rw-r--r--mediagoblin/tests/test_http_callback.py27
-rw-r--r--mediagoblin/tests/test_messages.py5
-rw-r--r--mediagoblin/tests/test_misc.py77
-rw-r--r--mediagoblin/tests/test_modelmethods.py167
-rw-r--r--mediagoblin/tests/test_oauth.py61
-rw-r--r--mediagoblin/tests/test_paste.ini2
-rw-r--r--mediagoblin/tests/test_pluginapi.py21
-rw-r--r--mediagoblin/tests/test_storage.py20
-rw-r--r--mediagoblin/tests/test_submission.py103
-rwxr-xr-xmediagoblin/tests/test_submission/evilbin96284 -> 49 bytes
-rwxr-xr-xmediagoblin/tests/test_submission/evil.jpgbin96284 -> 49 bytes
-rwxr-xr-xmediagoblin/tests/test_submission/evil.pngbin96284 -> 49 bytes
-rw-r--r--mediagoblin/tests/test_tags.py4
-rw-r--r--mediagoblin/tests/test_workbench.py2
-rw-r--r--mediagoblin/tests/tools.py83
-rw-r--r--mediagoblin/tools/common.py1
-rw-r--r--mediagoblin/tools/exif.py47
-rw-r--r--mediagoblin/tools/files.py2
-rw-r--r--mediagoblin/tools/pluginapi.py64
-rw-r--r--mediagoblin/tools/request.py3
-rw-r--r--mediagoblin/tools/template.py43
-rw-r--r--mediagoblin/tools/translate.py2
-rw-r--r--mediagoblin/tools/url.py2
-rw-r--r--mediagoblin/user_pages/forms.py4
-rw-r--r--mediagoblin/user_pages/routing.py9
-rw-r--r--mediagoblin/user_pages/views.py74
-rwxr-xr-xruntests.sh39
-rw-r--r--setup.py6
198 files changed, 12588 insertions, 8360 deletions
diff --git a/AUTHORS b/AUTHORS
index 64956ad4..ef70e8a5 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -11,32 +11,50 @@ Thank you!
* Aeva Ntsc
* Alejandro Villanueva
* Aleksandar Micovic
+* Aleksej Serdjukov
* Alex Camelio
+* András Veres-Szentkirályi
+* Bassam Kurdali
* Bernhard Keller
+* Brett Smith
* Caleb Forbes Davis V
* Corey Farwell
* Chris Moylan
* Christopher Allan Webber
* Daniel Neel
-* Duncan Paterson
* Deb Nicholson
+* Derek Moore
+* Duncan Paterson
* Elrond of Samba TNG
* Emily O'Leary
+* Greg Grossmeier
* Jakob Kramer
* Jef van Schendel
+* Jim Campbell
* Joar Wandborg
+* Jorge Araya Navarro
* Karen Rustad
* Kuno Woudt
+* Larisa Hoffenbecker
+* Luke Slater
+* Manuel Urbano Santos
* Mark Holmquist
* Matt Lee
+* Michele Azzolari
* Nathan Yergler
* Odin Hørthe Omdal
* Osama Khalid
* Pablo J. Urbano Santos
* Rasmus Larsson
+* Runar Petursson
+* Sacha De'Angeli
* Sam Kleinman
* Sebastian Spaeth
* Shawn Khan
+* Stefano Zacchiroli
+* Tiberiu C. Turbureanu
+* Tran Thanh Bao
+* Shawn Khan
* Will Kahn-Greene
If you think your name should be on this list, let us know!
diff --git a/FOO300 b/FOO300
deleted file mode 100644
index 0acf17a8..00000000
--- a/FOO300
+++ /dev/null
@@ -1,15 +0,0 @@
-
-This certifies that GNU MediaGoblin has been given the designation of:
-
- FOO 300
-
-In the Foo Communications ("FooCorp") catalogue of permanent record.
-
-Signed:
-
-
-
-
- Matt Lee
-
- Foo Communications, LLC \ No newline at end of file
diff --git a/MANIFEST.in b/MANIFEST.in
index b3ae7b75..0a39ce84 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -1,7 +1,11 @@
recursive-include mediagoblin/i18n *.mo
-recursive-include mediagoblin/templates *.html *.txt *.xml
-recursive-include mediagoblin/static *.js *.css *.png *.svg *.ico
-recursive-include mediagoblin/tests *.ini
+recursive-include mediagoblin *.js *.css *.png *.svg *.ico
+recursive-include mediagoblin *.ini
+recursive-include mediagoblin *.html *.txt
recursive-include docs *.rst *.html
+include mediagoblin.ini mediagoblin/config_spec.ini paste.ini
include mediagoblin/config_spec.ini
graft extlib
+graft licenses
+include COPYING AUTHORS
+include lazyserver.sh lazystarter.sh lazycelery.sh
diff --git a/api-docs/Makefile b/api-docs/Makefile
index 0f667642..9ed77c61 100644
--- a/api-docs/Makefile
+++ b/api-docs/Makefile
@@ -8,7 +8,7 @@ SPHINXAPIDOC = sphinx-apidoc
PAPER =
BUILDDIR = build
SOURCEDIR = source
-MEDIAGOBLIN_SOURCEDIR = ../
+MEDIAGOBLIN_SOURCEDIR = ../mediagoblin
# Internal variables.
PAPEROPT_a4 = -D latex_paper_size=a4
diff --git a/babel.ini b/babel.ini
index 1a8231f5..1c5e54f0 100644
--- a/babel.ini
+++ b/babel.ini
@@ -1,10 +1,10 @@
# Extraction from Python source files
[python: mediagoblin/**.py]
# Extraction from Genshi HTML and text templates
-[jinja2: mediagoblin/templates/**.html]
+[jinja2: mediagoblin/**/templates/**.html]
# Extract jinja templates (html)
encoding = utf-8
-extensions = jinja2.ext.autoescape
+extensions = jinja2.ext.autoescape, mediagoblin.tools.template.TemplateHookExtension
[jinja2: mediagoblin/templates/**.txt]
# Extract jinja templates (text)
diff --git a/devtools/maketarball.sh b/devtools/maketarball.sh
index 7d88c6fd..c6c2bc2b 100755
--- a/devtools/maketarball.sh
+++ b/devtools/maketarball.sh
@@ -161,6 +161,9 @@ then
rm -rf docs/_build/
fi
+ # Remove .pyc files that may have been generated by sphinx
+ find mediagoblin -name '*.pyc' -exec rm {} \;
+
popd
tar -cvf $FNBASE.tar $FNBASE
diff --git a/docs/source/conf.py b/docs/source/conf.py
index 4209acc8..0b2bccac 100644
--- a/docs/source/conf.py
+++ b/docs/source/conf.py
@@ -26,7 +26,8 @@ sys.path.insert(0, os.path.abspath(os.path.join('..', '..')))
# Add any Sphinx extension module names here, as strings. They can be extensions
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
-extensions = []
+extensions = ['sphinx.ext.autodoc', 'sphinx.ext.intersphinx']
+intersphinx_mapping = {'python': ('http://docs.python.org/2.7', None)}
# Add any paths that contain templates here, relative to this directory.
templates_path = ['source/_templates']
diff --git a/docs/source/siteadmin/codebase.rst b/docs/source/devel/codebase.rst
index 73e938e7..cd46242c 100644
--- a/docs/source/siteadmin/codebase.rst
+++ b/docs/source/devel/codebase.rst
@@ -34,7 +34,81 @@ various recipes for getting things done.
for where we hang out.
For more information on how to get started hacking on GNU MediaGoblin,
-see `the wiki <http://wiki.mediagoblin.org/>`_.
+see `the wiki <http://wiki.mediagoblin.org/>`_, and specifically, go
+through the
+`Hacking HOWTO <http://wiki.mediagoblin.org/HackingHowto>`_
+which explains generally how to get going with running an instance for
+development.
+
+
+What's where
+============
+
+After you've run checked out mediagoblin and followed the virtualenv
+instantiation instructions, you're faced with the following directory
+tree::
+
+ mediagoblin/
+ |- mediagoblin/ # source code
+ | |- db/ # database setup
+ | |- tools/ # various utilities
+ | |- init/ # "initialization" tools (arguably should be in tools/)
+ | |- tests/ # unit tests
+ | |- templates/ # templates for this application
+ | |- media_types/ # code for processing, displaying different media
+ | |- storage/ # different storage backends
+ | |- gmg_commands/ # command line tools (./bin/gmg)
+ | |- themes/ # pre-bundled themes
+ | |
+ | | # ... some submodules here as well for different sections
+ | | # of the application... here's just a few
+ | |- auth/ # authentication (login/registration) code
+ | |- user_dev/ # user pages (under /u/), including media pages
+ | \- submit/ # submitting media for processing
+ |
+ |- docs/ # documentation
+ |- devtools/ # some scripts for developer convenience
+ |
+ |- user_dev/ # local instance sessions, media, etc
+ |
+ | # the below directories are installed into your virtualenv checkout
+ |
+ |- bin/ # scripts
+ |- develop-eggs/
+ |- lib/ # python libraries installed into your virtualenv
+ |- include/
+ |- mediagoblin.egg-info/
+ \- parts/
+
+
+As you can see, all the code for GNU MediaGoblin is in the
+``mediagoblin`` directory.
+
+Here are some interesting files and what they do:
+
+:routing.py: maps url paths to views
+:views.py: views handle http requests
+:forms.py: wtforms stuff for this submodule
+
+You'll notice that there are several sub-directories: tests,
+templates, auth, submit, ...
+
+``tests`` holds the unit test code.
+
+``templates`` holds all the templates for the output.
+
+``auth`` and ``submit`` are modules that enacpsulate authentication
+and media item submission. If you look in these directories, you'll
+see they have their own ``routing.py``, ``view.py``, and forms.py in
+addition to some other code.
+
+You'll also notice that mediagoblin/db/ contains quite a few things,
+including the following:
+
+:models.py: This is where the database is set up
+:mixin.py: Certain functions appended to models from here
+:migrations.py: When creating a new migration (a change to the
+ database structure), we put it here
Software Stack
@@ -107,52 +181,3 @@ Software Stack
* `JQuery <http://jquery.com/>`_: for groovy JavaScript things
-
-What's where
-============
-
-After you've run checked out mediagoblin and followed the virtualenv
-instantiation instructions, you're faced with the following directory
-tree::
-
- mediagoblin/
- |- mediagoblin/ # source code
- | |- tests/
- | |- templates/
- | |- auth/
- | \- submit/
- |- docs/ # documentation
- |- devtools/ # some scripts for developer convenience
- |
- | # the below directories are installed into your virtualenv checkout
- |
- |- bin/ # scripts
- |- develop-eggs/
- |- lib/ # python libraries installed into your virtualenv
- |- include/
- |- mediagoblin.egg-info/
- |- parts/
- |- user_dev/ # sessions, etc
-
-
-As you can see, all the code for GNU MediaGoblin is in the
-``mediagoblin`` directory.
-
-Here are some interesting files and what they do:
-
-:routing.py: maps url paths to views
-:views.py: views handle http requests
-:models.py: holds the sqlalchemy schemas---these are the data structures
- we're working with
-
-You'll notice that there are several sub-directories: tests,
-templates, auth, submit, ...
-
-``tests`` holds the unit test code.
-
-``templates`` holds all the templates for the output.
-
-``auth`` and ``submit`` are modules that enacpsulate authentication
-and media item submission. If you look in these directories, you'll
-see they have their own ``routing.py``, ``view.py``, and
-``models.py`` in addition to some other code.
diff --git a/docs/source/devel/originaldesigndecisions.rst b/docs/source/devel/originaldesigndecisions.rst
new file mode 100644
index 00000000..2843870c
--- /dev/null
+++ b/docs/source/devel/originaldesigndecisions.rst
@@ -0,0 +1,336 @@
+.. _original-design-decisions-chapter:
+
+===========================
+ Original Design Decisions
+===========================
+
+.. contents:: Sections
+ :local:
+
+
+This chapter talks a bit about design decisions.
+
+Note: This is an outdated document. It's more or less the historical
+reasons for a lot of things. That doesn't mean these decisions have
+stayed the same or we haven't changed our minds on some things!
+
+
+Why GNU MediaGoblin?
+====================
+
+Chris and Will on "Why GNU MediaGoblin":
+
+ Chris came up with the name MediaGoblin. The name is pretty fun.
+ It merges the idea that this is a Media hosting project with
+ Goblin which sort of sounds like gobbling. Here's a piece of
+ software that gobbles up your media for all to see.
+
+ `According to Wikipedia <http://en.wikipedia.org/wiki/Goblin>`_, a
+ goblin is:
+
+ a legendary evil or mischievous illiterate creature, described
+ as grotesquely evil or evil-like phantom
+
+ So are we evil? No. Are we mischievous or illiterate? Not
+ really. So what kind of goblin are we thinking about? We're
+ thinking about these goblins:
+
+ .. figure:: ../_static/goblin.png
+ :alt: Cute goblin with a beret.
+
+ *Figure 1: Cute goblin with a beret. llustrated by Chris
+ Webber*
+
+ .. figure:: ../_static/snugglygoblin.png
+ :scale: 50%
+ :alt: Snuggly goblin with a beret.
+
+ *Figure 2: Snuggly goblin. Illustrated by Karen Rustad*
+
+ Those are pretty cute goblins. Those are the kinds of goblins
+ we're thinking about.
+
+ Chris started doing work on the project after thinking about it
+ for a year. Then, after talking with Matt and Rob, it became an
+ official GNU project. Thus we now call it GNU MediaGoblin.
+
+ That's a lot of letters, though, so in the interest of brevity and
+ facilitating easier casual conversation and balancing that with
+ what's important to us, we have the following rules:
+
+ 1. "GNU MediaGoblin" is the name we're going to use in all official
+ capacities: web site, documentation, press releases, ...
+
+ 2. In casual conversation, it's ok to use more casual names.
+
+ 3. If you're writing about the project, we ask that you call it GNU
+ MediaGoblin.
+
+ 4. If you don't like the name, we kindly ask you to take a deep
+ breath, think a happy thought about cute little goblins playing
+ on a playground and taking cute pictures of themselves, and let
+ it go. (Will added this one.)
+
+
+Why Python
+==========
+
+Chris Webber on "Why Python":
+
+ Because I know Python, love Python, am capable of actually making
+ this thing happen in Python (I've worked on a lot of large free
+ software web applications before in Python, including `Miro
+ Community`_, the `Miro Guide`_, a large portion of `Creative
+ Commons`_, and a whole bunch of things while working at `Imaginary
+ Landscape`_). Me starting a project like this makes sense if it's
+ done in Python.
+
+ You might say that PHP is way more deployable, that Rails has way
+ more cool developers riding around on fixie bikes---and all of
+ those things are true. But I know Python, like Python, and think
+ that Python is pretty great. I do think that deployment in Python
+ is not as good as with PHP, but I think the days of shared hosting
+ are (thankfully) coming to an end, and will probably be replaced
+ by cheap virtual machines spun up on the fly for people who want
+ that sort of stuff, and Python will be a huge part of that future,
+ maybe even more than PHP will. The deployment tools are getting
+ better. Maybe we can use something like Silver Lining. Maybe we
+ can just distribute as ``.debs`` or ``.rpms``. We'll figure it
+ out when we get there.
+
+ Regardless, if I'm starting this project, which I am, it's gonna
+ be in Python.
+
+.. _Miro Community: http://mirocommunity.org/
+.. _Miro Guide: http://miroguide.org/
+.. _Creative Commons: http://creativecommons.org/
+.. _Imaginary Landscape: http://www.imagescape.com/
+
+
+Why WSGI Minimalism
+===================
+
+Chris Webber on "Why WSGI Minimalism":
+
+ If you notice in the technology list I list a lot of components
+ that are very "django-like", but not actually `Django`_
+ components. What can I say, I really like a lot of the ideas in
+ Django! Which leads to the question: why not just use Django?
+
+ While I really like Django's ideas and a lot of its components, I
+ also feel that most of the best ideas in Django I want have been
+ implemented as good or even better outside of Django. I could
+ just use Django and replace the templating system with Jinja2, and
+ the form system with wtforms, and the database with MongoDB and
+ MongoKit, but at that point, how much of Django is really left?
+
+ I also am sometimes saddened and irritated by how coupled all of
+ Django's components are. Loosely coupled yes, but still coupled.
+ WSGI has done a good job of providing a base layer for running
+ applications on and if you know how to do it yourself [1]_, it's
+ not hard or many lines of code at all to bind them together
+ without any framework at all (not even say `Pylons`_, `Pyramid`_
+ or `Flask`_ which I think are still great projects, especially for
+ people who want this sort of thing but have no idea how to get
+ started). And even at this already really early stage of writing
+ MediaGoblin, that glue work is mostly done.
+
+ Not to say I don't think Django isn't great for a lot of things.
+ For a lot of stuff, it's still the best, but not for MediaGoblin,
+ I think.
+
+ One thing that Django does super well though is documentation. It
+ still has some faults, but even with those considered I can hardly
+ think of any other project in Python that has as nice of
+ documentation as Django. It may be worth learning some lessons on
+ documentation from Django [2]_, on that note.
+
+ I'd really like to have a good, thorough hacking-howto and
+ deployment-howto, especially in the former making some notes on
+ how to make it easier for Django hackers to get started.
+
+.. _Django: http://www.djangoproject.com/
+.. _Pylons: http://pylonshq.com/
+.. _Pyramid: http://docs.pylonsproject.org/projects/pyramid/dev/
+.. _Flask: http://flask.pocoo.org/
+
+.. [1] http://pythonpaste.org/webob/do-it-yourself.html
+.. [2] http://pycon.blip.tv/file/4881071/
+
+
+Why MongoDB
+===========
+
+(Note: We don't use MongoDB anymore. This is the original rationale,
+however.)
+
+Chris Webber on "Why MongoDB":
+
+ In case you were wondering, I am not a NOSQL fanboy, I do not go
+ around telling people that MongoDB is web scale. Actually my
+ choice for MongoDB isn't scalability, though scaling up really
+ nicely is a pretty good feature and sets us up well in case large
+ volume sites eventually do use MediaGoblin. But there's another
+ side of scalability, and that's scaling down, which is important
+ for federation, maybe even more important than scaling up in an
+ ideal universe where everyone ran servers out of their own
+ housing. As a memory-mapped database, MongoDB is pretty hungry,
+ so actually I spent a lot of time debating whether the inability
+ to scale down as nicely as something like SQL has with sqlite
+ meant that it was out.
+
+ But I decided in the end that I really want MongoDB, not for
+ scalability, but for flexibility. Schema evolution pains in SQL
+ are almost enough reason for me to want MongoDB, but not quite.
+ The real reason is because I want the ability to eventually handle
+ multiple media types through MediaGoblin, and also allow for
+ plugins, without the rigidity of tables making that difficult. In
+ other words, something like::
+
+ {"title": "Me talking until you are bored",
+ "description": "blah blah blah",
+ "media_type": "audio",
+ "media_data": {
+ "length": "2:30",
+ "codec": "OGG Vorbis"},
+ "plugin_data": {
+ "licensing": {
+ "license": "http://creativecommons.org/licenses/by-sa/3.0/"}}}
+
+
+ Being able to just dump media-specific information in a media_data
+ hashtable is pretty great, and even better is having a plugin
+ system where you can just let plugins have their own entire
+ key-value space cleanly inside the document that doesn't interfere
+ with anyone else's stuff. If we were to let plugins to deposit
+ their own information inside the database, either we'd let plugins
+ create their own tables which makes SQL migrations even harder
+ than they already are, or we'd probably end up creating a table
+ with a column for key, a column for value, and a column for type
+ in one huge table called "plugin_data" or something similar. (Yo
+ dawg, I heard you liked plugins, so I put a database in your
+ database so you can query while you query.) Gross.
+
+ I also don't want things to be too loose so that we forget or lose
+ the structure of things, and that's one reason why I want to use
+ MongoKit, because we can cleanly define a much structure as we
+ want and verify that documents match that structure generally
+ without adding too much bloat or overhead (MongoKit is a pretty
+ lightweight wrapper and doesn't inject extra MongoKit-specific
+ stuff into the database, which is nice and nicer than many other
+ ORMs in that way).
+
+
+Why Sphinx for documentation
+============================
+
+Will Kahn-Greene on "Why Sphinx":
+
+ `Sphinx`_ is a fantastic tool for organizing documentation for a
+ Python-based project that makes it pretty easy to write docs that
+ are readable in source form and can be "compiled" into HTML, LaTeX
+ and other formats.
+
+ There are other doc systems out there, but given that GNU
+ MediaGoblin is being written in Python and I've done a ton of
+ documentation using Sphinx, it makes sense to use Sphinx for now.
+
+.. _Sphinx: http://sphinx.pocoo.org/
+
+
+Why AGPLv3 and CC0?
+===================
+
+Chris, Brett, Will, Rob, Matt, et al curated into a story where
+everyone is the hero by Will on "Why AGPLv3 and CC0":
+
+ The `AGPL v3`_ preserves the freedoms guaranteed by the GPL v3 in
+ the context of software as a service. Using this license ensures
+ that users of the service have the ability to examine the source,
+ deploy their own instance, and implement their own version. This
+ is really important to us and a core mission component of this
+ project. Thus we decided that the software parts should be under
+ this license.
+
+ However, the project is made up of more than just software:
+ there's CSS, images, and other output-related things. We wanted
+ the templates/images/css side of the project all permissive and
+ permissive in the same absolutely permissive way. We're waiving
+ our copyrights to non-software things under the CC0 waiver.
+
+ That brings us to the templates where there's some code and some
+ output. The template engine we're using is called Jinja2. It
+ mixes HTML markup with Python code to render the output of the
+ software. We decided the templates are part of the output of the
+ software and not the software itself. We wanted the output of the
+ software to be licensed in a hassle-free way so that when someone
+ deploys their own GNU MediaGoblin instance with their own
+ templates, they don't have to deal with the copyleft aspects of
+ the AGPLv3 and we'd be fine with that because the changes they're
+ making are identity-related. So at first we decided to waive our
+ copyrights to the templates with a CC0 waiver and then add an
+ exception to the AGPLv3 for the software such that the templates
+ can make calls into the software and yet be a separately licensed
+ work. However, Brett brought up the question of whether this
+ allows some unscrupulous person to make changes to the software
+ through the templates in such a way that they're not bound by the
+ AGPLv3: i.e. a loophole. We thought about this loophole and
+ between this and the extra legalese involved in the exception to
+ the AGPLv3, we decided that it's just way simpler if the templates
+ were also licensed under the AGPLv3.
+
+ Then we have the licensing for the documentation. Given that the
+ documentation is tied to the software content-wise, we don't feel
+ like we have to worry about ensuring freedom of the documentation
+ or worry about attribution concerns. Thus we're waiving our
+ copyrights to the documentation under CC0 as well.
+
+ Lastly, we have branding. This covers logos and other things that
+ are distinctive to GNU MediaGoblin that we feel represents this
+ project. Since we don't currently have any branding, this is an
+ open issue, but we're thinking we'll go with a CC BY-SA license.
+
+ By licensing in this way, we make sure that users of the software
+ receive the freedoms that the AGPLv3 ensures regardless of what
+ fate befalls this project.
+
+ So to summarize:
+
+ * software (Python, JavaScript, HTML templates): licensed
+ under AGPLv3
+ * non-software things (CSS, images, video): copyrights waived
+ under CC0 because this is output of the software
+ * documentation: copyrights waived under CC0 because it's not part
+ of the software
+ * branding assets: we're kicking this can down the road, but
+ probably CC BY-SA
+
+ This is all codified in the ``COPYING`` file.
+
+.. _AGPL v3: http://www.gnu.org/licenses/agpl.html
+.. _CC0 v1: http://creativecommons.org/publicdomain/zero/1.0/
+
+
+Why (non-mandatory) copyright assignment?
+=========================================
+
+Chris Webber on "Why copyright assignment?":
+
+ GNU MediaGoblin is a GNU project with non-mandatory but heavily
+ encouraged copyright assignment to the FSF. Most, if not all, of
+ the core contributors to GNU MediaGoblin will have done a
+ copyright assignment, but unlike some other GNU projects, it isn't
+ required here. We think this is the best choice for GNU
+ MediaGoblin: it ensures that the Free Software Foundation may
+ protect the software by enforcing the AGPL if the FSF sees fit,
+ but it also means that we can immediately merge in changes from a
+ new contributor. It also means that some significant non-FSF
+ contributors might also be able to enforce the AGPL if seen fit.
+
+ Again, assignment is not mandatory, but it is heavily encouraged,
+ even incentivized: significant contributors who do a copyright
+ assignment to the FSF are eligible to have a unique goblin drawing
+ produced for them by the project's main founder, Christopher Allan
+ Webber. See `the wiki <http://wiki.mediagoblin.org/>`_ for details.
+
+
diff --git a/docs/source/devel/storage.rst b/docs/source/devel/storage.rst
new file mode 100644
index 00000000..52406c4e
--- /dev/null
+++ b/docs/source/devel/storage.rst
@@ -0,0 +1,43 @@
+=========
+ Storage
+=========
+
+
+See for now: http://wiki.mediagoblin.org/Storage
+
+Things get moved here.
+
+
+The storage systems attached to your app
+----------------------------------------
+
+Dynamic content: queue_store and public_store
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The workbench
+~~~~~~~~~~~~~
+
+In addition, there's a "workbench" used during
+processing... it's just for temporary files during
+processing, and also for making local copies of stuff that
+might be on remote storage interfaces while transitionally
+moving/converting from the queue_store to the public store.
+See the workbench module documentation for more.
+
+.. automodule:: mediagoblin.tools.workbench
+ :members:
+ :show-inheritance:
+
+
+Static assets / staticdirect
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+StorageInterface and implementations
+------------------------------------
+
+The guts of StorageInterface and friends
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Writing code to store stuff
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/docs/source/index.rst b/docs/source/index.rst
index ac8bd110..7f692d57 100644
--- a/docs/source/index.rst
+++ b/docs/source/index.rst
@@ -44,7 +44,6 @@ MediaGoblin website. It is written for site administrators.
siteadmin/relnotes
siteadmin/theming
siteadmin/plugins
- siteadmin/codebase
.. _core-plugin-section:
@@ -58,6 +57,8 @@ Part 2: Core plugin documentation
plugindocs/flatpagesfile
plugindocs/sampleplugin
plugindocs/oauth
+ plugindocs/trim_whitespace
+ plugindocs/raven
Part 3: Plugin Writer's Guide
@@ -70,6 +71,21 @@ This guide covers writing new GNU MediaGoblin plugins.
pluginwriter/foreward
pluginwriter/quickstart
+ pluginwriter/database
+ pluginwriter/api
+
+
+Part 4: Developer's Zone
+========================
+
+This chapter contains various information for developers.
+
+.. toctree::
+ :maxdepth: 1
+
+ devel/codebase
+ devel/storage
+ devel/originaldesigndecisions
Indices and tables
diff --git a/docs/source/plugindocs/raven.rst b/docs/source/plugindocs/raven.rst
new file mode 100644
index 00000000..71e284d0
--- /dev/null
+++ b/docs/source/plugindocs/raven.rst
@@ -0,0 +1,2 @@
+.. _raven-setup: Set up the raven plugin
+.. include:: ../../../mediagoblin/plugins/raven/README.rst
diff --git a/docs/source/pluginwriter/api.rst b/docs/source/pluginwriter/api.rst
new file mode 100644
index 00000000..42dc3a3d
--- /dev/null
+++ b/docs/source/pluginwriter/api.rst
@@ -0,0 +1,24 @@
+.. MediaGoblin Documentation
+
+ Written in 2013 by MediaGoblin contributors
+
+ To the extent possible under law, the author(s) have dedicated all
+ copyright and related and neighboring rights to this software to
+ the public domain worldwide. This software is distributed without
+ any warranty.
+
+ You should have received a copy of the CC0 Public Domain
+ Dedication along with this software. If not, see
+ <http://creativecommons.org/publicdomain/zero/1.0/>.
+
+
+==========
+Plugin API
+==========
+
+:mod:`pluginapi` Module
+-----------------------
+
+.. automodule:: mediagoblin.tools.pluginapi
+ :members: get_config, register_routes, register_template_path,
+ register_template_hooks, get_hook_templates
diff --git a/docs/source/pluginwriter/database.rst b/docs/source/pluginwriter/database.rst
new file mode 100644
index 00000000..58edf3a0
--- /dev/null
+++ b/docs/source/pluginwriter/database.rst
@@ -0,0 +1,111 @@
+.. MediaGoblin Documentation
+
+ Written in 2013 by MediaGoblin contributors
+
+ To the extent possible under law, the author(s) have dedicated all
+ copyright and related and neighboring rights to this software to
+ the public domain worldwide. This software is distributed without
+ any warranty.
+
+ You should have received a copy of the CC0 Public Domain
+ Dedication along with this software. If not, see
+ <http://creativecommons.org/publicdomain/zero/1.0/>.
+
+
+========
+Database
+========
+
+
+Accessing Existing Data
+=======================
+
+If your plugin wants to access existing data, this is quite
+straight forward. Just import the appropiate models and use
+the full power of SQLAlchemy. Take a look at the (upcoming)
+database section in the Developer's Chapter.
+
+
+Creating new Tables
+===================
+
+If your plugin needs some new space to store data, you
+should create a new table. Please do not modify core
+tables. Not doing so might seem inefficient and possibly
+is. It will help keep things sane and easier to upgrade
+versions later.
+
+So if you create a new plugin and need new tables, create a
+file named ``models.py`` in your plugin directory. You
+might take a look at the core's db.models for some ideas.
+Here's a simple one:
+
+.. code-block:: python
+
+ from mediagoblin.db.base import Base
+ from sqlalchemy import Column, Integer, Unicode, ForeignKey
+
+ class MediaSecurity(Base):
+ __tablename__ = "yourplugin__media_security"
+
+ # The primary key *and* reference to the main media_entry
+ media_entry = Column(Integer, ForeignKey('core__media_entries.id'),
+ primary_key=True)
+ get_media_entry = relationship("MediaEntry",
+ backref=backref("security_rating", cascade="all, delete-orphan"))
+
+ rating = Column(Unicode)
+
+ MODELS = [MediaSecurity]
+
+That's it.
+
+Some notes:
+
+* Make sure all your ``__tablename__`` start with your
+ plugin's name so the tables of various plugins can't
+ conflict in the database. (Conflicts in python naming are
+ much easier to fix later).
+* Try to get your database design as good as possible in
+ the first attempt. Changing the database design later,
+ when people already have data using the old design, is
+ possible (see next chapter), but it's not easy.
+
+
+Changing the Database Schema Later
+==================================
+
+If your plugin is in use and instances use it to store some
+data, changing the database design is a tricky thing.
+
+1. Make up your mind how the new schema should look like.
+2. Change ``models.py`` to contain the new schema. Keep a
+ copy of the old version around for your personal
+ reference later.
+3. Now make up your mind (possibly using your old and new
+ ``models.py``) what steps in SQL are needed to convert
+ the old schema to the new one.
+ This is called a "migration".
+4. Create a file ``migrations.py`` that will contain all
+ your migrations and add your new migration.
+
+Take a look at the core's ``db/migrations.py`` for some
+good examples on what you might be able to do. Here's a
+simple one to add one column:
+
+.. code-block:: python
+
+ from mediagoblin.db.migration_tools import RegisterMigration, inspect_table
+ from sqlalchemy import MetaData, Column, Integer
+
+ MIGRATIONS = {}
+
+ @RegisterMigration(1, MIGRATIONS)
+ def add_license_preference(db):
+ metadata = MetaData(bind=db.bind)
+
+ security_table = inspect_table(metadata, 'yourplugin__media_security')
+
+ col = Column('security_level', Integer)
+ col.create(security_table)
+ db.commit()
diff --git a/docs/source/siteadmin/deploying.rst b/docs/source/siteadmin/deploying.rst
index 91406f96..9b2324ae 100644
--- a/docs/source/siteadmin/deploying.rst
+++ b/docs/source/siteadmin/deploying.rst
@@ -282,6 +282,10 @@ this ``nginx.conf`` file should be modeled on the following::
# Change this to update the upload size limit for your users
client_max_body_size 8m;
+ # prevent attacks (someone uploading a .txt file that the browser
+ # interprets as an HTML file, etc.)
+ add_header X-Content-Type-Options nosniff;
+
server_name mediagoblin.example.org www.mediagoblin.example.org;
access_log /var/log/nginx/mediagoblin.example.access.log;
error_log /var/log/nginx/mediagoblin.example.error.log;
diff --git a/docs/source/siteadmin/media-types.rst b/docs/source/siteadmin/media-types.rst
index 8fbce5e4..23d3f3b9 100644
--- a/docs/source/siteadmin/media-types.rst
+++ b/docs/source/siteadmin/media-types.rst
@@ -71,16 +71,24 @@ Video
To enable video, first install gstreamer and the python-gstreamer
bindings (as well as whatever gstremaer extensions you want,
-good/bad/ugly). On Debianoid systems::
+good/bad/ugly). On Debianoid systems
- sudo apt-get install python-gst0.10 gstreamer0.10-plugins-{base,bad,good,ugly} \
+.. code-block:: bash
+
+ sudo apt-get install python-gst0.10 \
+ gstreamer0.10-plugins-base \
+ gstreamer0.10-plugins-bad \
+ gstreamer0.10-plugins-good \
+ gstreamer0.10-plugins-ugly \
gstreamer0.10-ffmpeg
Add ``mediagoblin.media_types.video`` to the ``media_types`` list in your
``mediagoblin_local.ini`` and restart MediaGoblin.
-Run::
+Run
+
+.. code-block:: bash
./bin/gmg dbupdate
@@ -108,7 +116,9 @@ To install these on Debianoid systems, run::
The ``scikits.audiolab`` package you will install in the next step depends on the
``libsndfile1-dev`` package, so we should install it.
-On Debianoid systems, run::
+On Debianoid systems, run
+
+.. code-block:: bash
sudo apt-get install libsndfile1-dev
@@ -126,7 +136,9 @@ Then install ``scikits.audiolab`` for the spectrograms::
Add ``mediagoblin.media_types.audio`` to the ``media_types`` list in your
``mediagoblin_local.ini`` and restart MediaGoblin.
-Run::
+Run
+
+.. code-block:: bash
./bin/gmg dbupdate
@@ -138,7 +150,9 @@ Ascii art
To enable ascii art support, first install the
`chardet <http://pypi.python.org/pypi/chardet>`_
-library, which is necessary for creating thumbnails of ascii art::
+library, which is necessary for creating thumbnails of ascii art
+
+.. code-block:: bash
./bin/easy_install chardet
@@ -152,7 +166,9 @@ the list would look like this::
media_types = mediagoblin.media_types.image, mediagoblin.media_types.ascii
-Run::
+Run
+
+.. code-block:: bash
./bin/gmg dbupdate
@@ -171,7 +187,9 @@ is surely not to work prior to Blender 2.5X).
Add ``mediagoblin.media_types.stl`` to the ``media_types`` list in your
``mediagoblin_local.ini`` and restart MediaGoblin.
-Run::
+Run
+
+.. code-block:: bash
./bin/gmg dbupdate
diff --git a/docs/source/siteadmin/production-deployments.rst b/docs/source/siteadmin/production-deployments.rst
index 356fab7f..1a32d95e 100644
--- a/docs/source/siteadmin/production-deployments.rst
+++ b/docs/source/siteadmin/production-deployments.rst
@@ -52,7 +52,7 @@ as the basis for your script: ::
Separate Celery
---------------
-While the ``./lazyserer.sh`` configuration provides an efficient way to
+While the ``./lazyserver.sh`` configuration provides an efficient way to
start using a MediaGoblin instance, it is not suitable for production
deployments for several reasons:
@@ -77,6 +77,17 @@ Modify your existing MediaGoblin and application init scripts, if
necessary, to prevent them from starting their own ``celeryd``
processes.
+.. _sentry:
+
+Set up sentry to monitor exceptions
+-----------------------------------
+
+We have a plugin for `raven`_ integration, see the ":doc:`/plugindocs/raven`"
+documentation.
+
+.. _`raven`: http://raven.readthedocs.org
+
+
.. _init-script:
Use an Init Script
diff --git a/docs/source/siteadmin/relnotes.rst b/docs/source/siteadmin/relnotes.rst
index 7d480d90..6962dc5a 100644
--- a/docs/source/siteadmin/relnotes.rst
+++ b/docs/source/siteadmin/relnotes.rst
@@ -19,17 +19,78 @@ This chapter has important information for releases in it.
If you're upgrading from a previous release, please read it
carefully, or at least skim over it.
-WIP
+0.3.3
=====
+**Do this to upgrade**
+
+1. Make sure to run ``bin/gmg dbupdate`` after upgrading.
+2. OpenStreetMap is now a plugin, so if you want to use it, add the
+ following to your config file:
+
+ .. code-block:: ini
+
+ [plugins]
+ [[mediagoblin.plugins.geolocation]]
+
+If you have your own theme, you may need to make some adjustments to
+it as some theme related things may have changed in this release. If
+you run into problems, don't hesitate to
+`contact us <http://mediagoblin.org/pages/join.html>`_
+(IRC is often best).
+
**New features**
-**Other changed**
+* New dropdown menu for accessing various features.
+
+* Significantly improved URL generation. Now mediagoblin won't give
+ up on making a slug if it looks like there will be a duplicate;
+ it'll try extra hard to generate a meaningful one instead.
+
+ Similarly, linking to an id no longer can possibly conflict with
+ linking to a slug; /u/username/m/id:35/ is the kind of reference we
+ now use to linking to entries with ids. However, old links with
+ entries that linked to ids should work just fine with our migration.
+ The only urls that might break in this release are ones using colons
+ or equal signs.
+
+* New template hooks for plugin authoring.
+
+* As a demonstration of new template hooks for plugin authoring,
+ openstreetmap support now moved to a plugin!
+
+* Method to add media to collections switched from icon of paperclip
+ to button with "add to collection" text.
+
+* Bug where videos often failed to produce a proper thumbnail fixed!
+
+* Copying around files in MediaGoblin now much more efficient, doesn't
+ waste gobs of memory.
+
+* Video transcoding now optional for videos that meet certain
+ criteria. By default, MediaGoblin will not transcode webm videos
+ that are smaller in resolution than the MediaGoblin defaults, and
+ MediaGoblin can also be configured to allow theora files to not be
+ transcoded as well.
+
+* Per-user license preference option; always want your uploads to be
+ BY-SA and tired of changing that field? You can now set your
+ license preference in your user settings.
+
+* Video player now responsive; better for mobile!
+
+* You can now delete your account from the user preferences page if
+ you so wish.
+
+**Other changes**
* Plugin writers: Internal restructuring led to mediagoblin.db.sql* be
mediagoblin.db.* starting from 0.3.3
-* Dependency list has been reduced not requireing the "webob" package anymore.
+* Dependency list has been reduced not requiring the "webob" package anymore.
+
+* And many small fixes/improvements, too numerous to list!
+
0.3.2
=====
diff --git a/extlib/html5shiv/MIT.txt b/extlib/html5shiv/MIT.txt
deleted file mode 100644
index 5a2aeb47..00000000
--- a/extlib/html5shiv/MIT.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-Copyright (c) <year> <copyright holders>
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/extlib/html5shiv/html5shiv.js b/extlib/html5shiv/html5shiv.js
deleted file mode 100644
index 8de0ff54..00000000
--- a/extlib/html5shiv/html5shiv.js
+++ /dev/null
@@ -1,3 +0,0 @@
-// HTML5 Shiv v3 | @jon_neal @afarkas @rem | MIT/GPL2 Licensed
-// Uncompressed source: https://github.com/aFarkas/html5shiv
-(function(a,b){var c=function(a){return a.innerHTML="<x-element></x-element>",a.childNodes.length===1}(b.createElement("a")),d=function(a,b,c){return b.appendChild(a),(c=(c?c(a):a.currentStyle).display)&&b.removeChild(a)&&c==="block"}(b.createElement("nav"),b.documentElement,a.getComputedStyle),e={elements:"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video".split(" "),shivDocument:function(a){a=a||b;if(a.documentShived)return;a.documentShived=!0;var f=a.createElement,g=a.createDocumentFragment,h=a.getElementsByTagName("head")[0],i=function(a){f(a)};c||(e.elements.join(" ").replace(/\w+/g,i),a.createElement=function(a){var b=f(a);return b.canHaveChildren&&e.shivDocument(b.document),b},a.createDocumentFragment=function(){return e.shivDocument(g())});if(!d&&h){var j=f("div");j.innerHTML=["x<style>","article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}","audio{display:none}","canvas,video{display:inline-block;*display:inline;*zoom:1}","[hidden]{display:none}audio[controls]{display:inline-block;*display:inline;*zoom:1}","mark{background:#FF0;color:#000}","</style>"].join(""),h.insertBefore(j.lastChild,h.firstChild)}return a}};e.shivDocument(b),a.html5=e})(this,document) \ No newline at end of file
diff --git a/extlib/jquery/MIT.txt b/extlib/jquery/MIT-LICENSE.txt
index 5a2aeb47..957f26d3 100644
--- a/extlib/jquery/MIT.txt
+++ b/extlib/jquery/MIT-LICENSE.txt
@@ -1,4 +1,5 @@
-Copyright (c) <year> <copyright holders>
+Copyright 2013 jQuery Foundation and other contributors
+http://jquery.com/
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/mediagoblin.ini b/mediagoblin.ini
index aee48595..bed69737 100644
--- a/mediagoblin.ini
+++ b/mediagoblin.ini
@@ -1,5 +1,9 @@
# If you want to make changes to this file, first copy it to
# mediagoblin_local.ini, then make the changes there.
+#
+# If you don't see what you need here, have a look at mediagoblin/config_spec.ini
+# It defines types and defaults so it’s a good place to look for documentation
+# or to find hidden options that we didn’t tell you about. :)
[mediagoblin]
direct_remote_path = /mgoblin_static/
@@ -27,9 +31,6 @@ allow_registration = true
## install other themes.
# theme = airy
-# Should geotagged images be displayed with a map of the location?
-geolocation_map_visible = true
-
[storage:queuestore]
base_dir = %(here)s/user_dev/media/queue
@@ -43,3 +44,4 @@ base_url = /mgoblin_media/
# place plugins here---each in their own subsection of [plugins]. see
# documentation for details.
[plugins]
+[[mediagoblin.plugins.geolocation]]
diff --git a/mediagoblin/_version.py b/mediagoblin/_version.py
index 2db399a9..8437be8b 100644
--- a/mediagoblin/_version.py
+++ b/mediagoblin/_version.py
@@ -23,4 +23,4 @@
# see http://www.python.org/dev/peps/pep-0386/
-__version__ = "0.3.3.dev"
+__version__ = "0.4.0.dev"
diff --git a/mediagoblin/app.py b/mediagoblin/app.py
index 10fbf4a3..bb6be4d4 100644
--- a/mediagoblin/app.py
+++ b/mediagoblin/app.py
@@ -21,7 +21,7 @@ from mediagoblin.routing import get_url_map
from mediagoblin.tools.routing import endpoint_to_controller
from werkzeug.wrappers import Request
-from werkzeug.exceptions import HTTPException, NotFound
+from werkzeug.exceptions import HTTPException
from werkzeug.routing import RequestRedirect
from mediagoblin import meddleware, __version__
@@ -253,4 +253,7 @@ def paste_app_factory(global_config, **app_config):
mgoblin_app = MediaGoblinApp(mediagoblin_config)
+ for callable_hook in PluginManager().get_hook_callables('wrap_wsgi'):
+ mgoblin_app = callable_hook(mgoblin_app)
+
return mgoblin_app
diff --git a/mediagoblin/auth/forms.py b/mediagoblin/auth/forms.py
index 7cae951a..8f091d21 100644
--- a/mediagoblin/auth/forms.py
+++ b/mediagoblin/auth/forms.py
@@ -15,7 +15,6 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import wtforms
-import re
from mediagoblin.tools.mail import normalize_email
from mediagoblin.tools.translate import fake_ugettext_passthrough as _
diff --git a/mediagoblin/auth/views.py b/mediagoblin/auth/views.py
index d8ad7b51..354b48c1 100644
--- a/mediagoblin/auth/views.py
+++ b/mediagoblin/auth/views.py
@@ -78,7 +78,7 @@ def register(request):
user.username = register_form.data['username']
user.email = register_form.data['email']
user.pw_hash = auth_lib.bcrypt_gen_password_hash(
- request.form['password'])
+ register_form.password.data)
user.verification_key = unicode(uuid.uuid4())
user.save()
@@ -116,7 +116,7 @@ def login(request):
if login_form.validate():
user = User.query.filter_by(username=login_form.data['username']).first()
- if user and user.check_login(request.form['password']):
+ if user and user.check_login(login_form.password.data):
# set up login in session
request.session['user_id'] = unicode(user.id)
request.session.save()
@@ -196,7 +196,7 @@ def resend_activation(request):
request,
messages.ERROR,
_('You must be logged in so we know who to send the email to!'))
-
+
return redirect(request, 'mediagoblin.auth.login')
if request.user.email_verified:
@@ -204,12 +204,12 @@ def resend_activation(request):
request,
messages.ERROR,
_("You've already verified your email address!"))
-
+
return redirect(request, "mediagoblin.user_pages.user_home", user=request.user['username'])
request.user.verification_key = unicode(uuid.uuid4())
request.user.save()
-
+
email_debug_message(request)
send_verification_email(request.user, request)
@@ -241,11 +241,11 @@ def forgot_password(request):
# has been sanitized. Store if a user was found by email. We should
# not reveal if the operation was successful then as we don't want to
# leak if an email address exists in the system.
- found_by_email = '@' in request.form['username']
+ found_by_email = '@' in fp_form.username.data
if found_by_email:
user = User.query.filter_by(
- email = request.form['username']).first()
+ 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 "
"registered an email has been sent with instructions "
@@ -253,7 +253,7 @@ def forgot_password(request):
else: # found by username
user = User.query.filter_by(
- username = request.form['username']).first()
+ username = fp_form.username.data).first()
if user is None:
messages.add_message(request,
@@ -317,7 +317,7 @@ def verify_forgot_password(request):
if request.method == 'POST' and cp_form.validate():
user.pw_hash = auth_lib.bcrypt_gen_password_hash(
- request.form['password'])
+ cp_form.password.data)
user.fp_verification_key = None
user.fp_token_expire = None
user.save()
diff --git a/mediagoblin/config_spec.ini b/mediagoblin/config_spec.ini
index bee67d46..44f6a68f 100644
--- a/mediagoblin/config_spec.ini
+++ b/mediagoblin/config_spec.ini
@@ -55,7 +55,6 @@ csrf_cookie_name = string(default='mediagoblin_csrftoken')
push_urls = string_list(default=list())
exif_visible = boolean(default=False)
-geolocation_map_visible = boolean(default=False)
# Theming stuff
theme_install_dir = string(default="%(here)s/user_dev/themes/")
@@ -86,6 +85,10 @@ max_height = integer(default=640)
max_width = integer(default=180)
max_height = integer(default=180)
+[media_type:mediagoblin.media_types.image]
+# One of BICUBIC, BILINEAR, NEAREST, ANTIALIAS
+resize_filter = string(default="ANTIALIAS")
+
[media_type:mediagoblin.media_types.video]
# Should we keep the original file?
keep_original = boolean(default=False)
@@ -97,10 +100,20 @@ vp8_quality = integer(default=8)
# Range: -0.1..1
vorbis_quality = float(default=0.3)
+# Autoplay the video when page is loaded?
+auto_play = boolean(default=True)
+
+[[skip_transcode]]
+mime_types = string_list(default=list("video/webm"))
+container_formats = string_list(default=list("Matroska"))
+video_codecs = string_list(default=list("VP8 video"))
+audio_codecs = string_list(default=list("Vorbis"))
+dimensions_match = boolean(default=True)
+
[media_type:mediagoblin.media_types.audio]
keep_original = boolean(default=True)
-# vorbisenc qualiy
+# vorbisenc quality
quality = float(default=0.3)
create_spectrogram = boolean(default=True)
spectrogram_fft_size = integer(default=4096)
diff --git a/mediagoblin/db/migration_tools.py b/mediagoblin/db/migration_tools.py
index e5380a3b..c0c7e998 100644
--- a/mediagoblin/db/migration_tools.py
+++ b/mediagoblin/db/migration_tools.py
@@ -17,6 +17,9 @@
from mediagoblin.tools.common import simple_printer
from sqlalchemy import Table
+class TableAlreadyExists(Exception):
+ pass
+
class MigrationManager(object):
"""
@@ -128,7 +131,10 @@ class MigrationManager(object):
# sanity check before we proceed, none of these should be created
for model in self.models:
# Maybe in the future just print out a "Yikes!" or something?
- assert not model.__table__.exists(self.session.bind)
+ if model.__table__.exists(self.session.bind):
+ raise TableAlreadyExists(
+ u"Intended to create table '%s' but it already exists" %
+ model.__table__.name)
self.migration_model.metadata.create_all(
self.session.bind,
diff --git a/mediagoblin/db/migrations.py b/mediagoblin/db/migrations.py
index 3f43c789..167c4f87 100644
--- a/mediagoblin/db/migrations.py
+++ b/mediagoblin/db/migrations.py
@@ -21,6 +21,7 @@ from sqlalchemy import (MetaData, Table, Column, Boolean, SmallInteger,
ForeignKey)
from sqlalchemy.exc import ProgrammingError
from sqlalchemy.ext.declarative import declarative_base
+from sqlalchemy.sql import and_
from migrate.changeset.constraint import UniqueConstraint
from mediagoblin.db.migration_tools import RegisterMigration, inspect_table
@@ -190,9 +191,63 @@ def fix_CollectionItem_v0_constraint(db_conn):
def add_license_preference(db):
metadata = MetaData(bind=db.bind)
- user_table = Table('core__users', metadata, autoload=True,
- autoload_with=db.bind)
+ user_table = inspect_table(metadata, 'core__users')
- col = Column('license_preference', Unicode, default=u'')
+ col = Column('license_preference', Unicode)
col.create(user_table)
db.commit()
+
+
+@RegisterMigration(9, MIGRATIONS)
+def mediaentry_new_slug_era(db):
+ """
+ Update for the new era for media type slugs.
+
+ Entries without slugs now display differently in the url like:
+ /u/cwebber/m/id=251/
+
+ ... because of this, we should back-convert:
+ - entries without slugs should be converted to use the id, if possible, to
+ make old urls still work
+ - slugs with = (or also : which is now also not allowed) to have those
+ stripped out (small possibility of breakage here sadly)
+ """
+ import uuid
+
+ def slug_and_user_combo_exists(slug, uploader):
+ return db.execute(
+ media_table.select(
+ and_(media_table.c.uploader==uploader,
+ media_table.c.slug==slug))).first() is not None
+
+ def append_garbage_till_unique(row, new_slug):
+ """
+ Attach junk to this row until it's unique, then save it
+ """
+ if slug_and_user_combo_exists(new_slug, row.uploader):
+ # okay, still no success;
+ # let's whack junk on there till it's unique.
+ new_slug += '-' + uuid.uuid4().hex[:4]
+ # keep going if necessary!
+ while slug_and_user_combo_exists(new_slug, row.uploader):
+ new_slug += uuid.uuid4().hex[:4]
+
+ db.execute(
+ media_table.update(). \
+ where(media_table.c.id==row.id). \
+ values(slug=new_slug))
+
+ metadata = MetaData(bind=db.bind)
+
+ media_table = inspect_table(metadata, 'core__media_entries')
+
+ 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))
+ # has "=" or ":" in it... we're getting rid of those
+ elif u"=" in row.slug or u":" in row.slug:
+ append_garbage_till_unique(
+ row, row.slug.replace(u"=", u"-").replace(u":", u"-"))
+
+ db.commit()
diff --git a/mediagoblin/db/mixin.py b/mediagoblin/db/mixin.py
index 001b7826..0dc3bc85 100644
--- a/mediagoblin/db/mixin.py
+++ b/mediagoblin/db/mixin.py
@@ -27,6 +27,8 @@ These functions now live here and get "mixed in" into the
real objects.
"""
+import uuid
+
from werkzeug.utils import cached_property
from mediagoblin import mg_globals
@@ -50,21 +52,83 @@ class UserMixin(object):
return cleaned_markdown_conversion(self.bio)
-class MediaEntryMixin(object):
+class GenerateSlugMixin(object):
+ """
+ Mixin to add a generate_slug method to objects.
+
+ Depends on:
+ - self.slug
+ - self.title
+ - self.check_slug_used(new_slug)
+ """
def generate_slug(self):
+ """
+ Generate a unique slug for this object.
+
+ This one does not *force* slugs, but usually it will probably result
+ in a niceish one.
+
+ The end *result* of the algorithm will result in these resolutions for
+ these situations:
+ - If we have a slug, make sure it's clean and sanitized, and if it's
+ unique, we'll use that.
+ - If we have a title, slugify it, and if it's unique, we'll use that.
+ - If we can't get any sort of thing that looks like it'll be a useful
+ slug out of a title or an existing slug, bail, and don't set the
+ slug at all. Don't try to create something just because. Make
+ sure we have a reasonable basis for a slug first.
+ - If we have a reasonable basis for a slug (either based on existing
+ slug or slugified title) but it's not unique, first try appending
+ the entry's id, if that exists
+ - If that doesn't result in something unique, tack on some randomly
+ 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)
+
+ # otherwise, try to use the title.
+ elif self.title:
+ # assign slug based on title
+ self.slug = slugify(self.title)
+
+ # We don't want any empty string slugs
+ if self.slug == u"":
+ self.slug = None
+
+ # 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!
+
+ # Otherwise, let's see if this is unique.
+ if self.check_slug_used(self.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)
+ 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]
+ # keep going if necessary!
+ while self.check_slug_used(self.slug):
+ self.slug += uuid.uuid4().hex[:4]
+
+
+class MediaEntryMixin(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_media_slug_used
- self.slug = slugify(self.title)
-
- duplicate = check_media_slug_used(self.uploader, self.slug, self.id)
-
- if duplicate:
- if self.id is not None:
- self.slug = u"%s-%s" % (self.id, self.slug)
- else:
- self.slug = None
+ return check_media_slug_used(self.uploader, slug, self.id)
@property
def description_html(self):
@@ -74,32 +138,38 @@ class MediaEntryMixin(object):
"""
return cleaned_markdown_conversion(self.description)
- def get_display_media(self, media_map,
- fetch_order=common.DISPLAY_IMAGE_FETCHING_ORDER):
- """
- Find the best media for display.
+ def get_display_media(self):
+ """Find the best media for display.
- Args:
- - media_map: a dict like
- {u'image_size': [u'dir1', u'dir2', u'image.jpg']}
- - fetch_order: the order we should try fetching images in
+ We try checking self.media_manager.fetching_order if it exists to
+ pull down the order.
Returns:
- (media_size, media_path)
+ (media_size, media_path)
+ or, if not found, None.
+
"""
- media_sizes = media_map.keys()
+ fetch_order = self.media_manager.get("media_fetch_order")
- for media_size in common.DISPLAY_IMAGE_FETCHING_ORDER:
+ # No fetching order found? well, give up!
+ if not fetch_order:
+ return None
+
+ media_sizes = self.media_files.keys()
+
+ for media_size in fetch_order:
if media_size in media_sizes:
- return media_map[media_size]
+ return media_size, self.media_files[media_size]
def main_mediafile(self):
pass
@property
def slug_or_id(self):
- return (self.slug or self.id)
-
+ if self.slug:
+ return self.slug
+ else:
+ return u'id:%s' % self.id
def url_for_self(self, urlgen, **extra_args):
"""
@@ -180,22 +250,13 @@ class MediaCommentMixin(object):
return cleaned_markdown_conversion(self.content)
-class CollectionMixin(object):
- def generate_slug(self):
+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
- self.slug = slugify(self.title)
-
- duplicate = check_collection_slug_used(mg_globals.database,
- self.creator, self.slug, self.id)
-
- if duplicate:
- if self.id is not None:
- self.slug = u"%s-%s" % (self.id, self.slug)
- else:
- self.slug = None
+ return check_collection_slug_used(self.creator, slug, self.id)
@property
def description_html(self):
diff --git a/mediagoblin/db/models.py b/mediagoblin/db/models.py
index 7e2cc7d2..2f58503f 100644
--- a/mediagoblin/db/models.py
+++ b/mediagoblin/db/models.py
@@ -20,7 +20,6 @@ TODO: indexes on foreignkeys, where useful.
import logging
import datetime
-import sys
from sqlalchemy import Column, Integer, Unicode, UnicodeText, DateTime, \
Boolean, ForeignKey, UniqueConstraint, PrimaryKeyConstraint, \
@@ -32,9 +31,10 @@ from sqlalchemy.ext.associationproxy import association_proxy
from sqlalchemy.util import memoized_property
from mediagoblin.db.extratypes import PathTupleWithSlashes, JSONEncoded
-from mediagoblin.db.base import Base, DictReadAttrProxy, Session
+from mediagoblin.db.base import Base, DictReadAttrProxy
from mediagoblin.db.mixin import UserMixin, MediaEntryMixin, MediaCommentMixin, CollectionMixin, CollectionItemMixin
from mediagoblin.tools.files import delete_media_files
+from mediagoblin.tools.common import import_component
# It's actually kind of annoying how sqlalchemy-migrate does this, if
# I understand it right, but whatever. Anyway, don't remove this :P
@@ -84,9 +84,7 @@ class User(Base, UserMixin):
def delete(self, **kwargs):
"""Deletes a User and all related entries/comments/files/..."""
- # Delete this user's Collections and all contained CollectionItems
- for collection in self.collections:
- collection.delete(commit=False)
+ # Collections get deleted by relationships.
media_entries = MediaEntry.query.filter(MediaEntry.uploader == self.id)
for media in media_entries:
@@ -147,6 +145,7 @@ class MediaEntry(Base, MediaEntryMixin):
)
attachment_files_helper = relationship("MediaAttachmentFile",
+ cascade="all, delete-orphan",
order_by="MediaAttachmentFile.created"
)
attachment_files = association_proxy("attachment_files_helper", "dict_view",
@@ -167,7 +166,6 @@ class MediaEntry(Base, MediaEntryMixin):
collections = association_proxy("collections_helper", "in_collection")
## TODO
- # media_data
# fail_error
def get_comments(self, ascending=False):
@@ -197,40 +195,31 @@ class MediaEntry(Base, MediaEntryMixin):
if media is not None:
return media.url_for_self(urlgen)
- #@memoized_property
@property
def media_data(self):
- session = Session()
-
- return session.query(self.media_data_table).filter_by(
- media_entry=self.id).first()
+ return getattr(self, self.media_data_ref)
def media_data_init(self, **kwargs):
"""
Initialize or update the contents of a media entry's media_data row
"""
- session = Session()
-
- media_data = session.query(self.media_data_table).filter_by(
- media_entry=self.id).first()
+ media_data = self.media_data
- # No media data, so actually add a new one
if media_data is None:
- media_data = self.media_data_table(
- media_entry=self.id,
- **kwargs)
- session.add(media_data)
- # Update old media data
+ # Get the correct table:
+ table = import_component(self.media_type + '.models:DATA_MODEL')
+ # No media data, so actually add a new one
+ media_data = table(**kwargs)
+ # Get the relationship set up.
+ media_data.get_media_entry = self
else:
+ # Update old media data
for field, value in kwargs.iteritems():
setattr(media_data, field, value)
@memoized_property
- def media_data_table(self):
- # TODO: memoize this
- models_module = self.media_type + '.models'
- __import__(models_module)
- return sys.modules[models_module].DATA_MODEL
+ def media_data_ref(self):
+ return import_component(self.media_type + '.models:BACKREF_NAME')
def __repr__(self):
safe_title = self.title.encode('ascii', 'replace')
@@ -395,7 +384,13 @@ class MediaComment(Base, MediaCommentMixin):
created = Column(DateTime, nullable=False, default=datetime.datetime.now)
content = Column(UnicodeText, nullable=False)
- get_author = relationship(User)
+ # 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,
+ backref=backref("posted_comments",
+ lazy="dynamic",
+ cascade="all, delete-orphan"))
class Collection(Base, CollectionMixin):
@@ -415,7 +410,10 @@ class Collection(Base, CollectionMixin):
# TODO: No of items in Collection. Badly named, can we migrate to num_items?
items = Column(Integer, default=0)
- get_creator = relationship(User, backref="collections")
+ # Cascade: Collections are owned by their creator. So do the full thing.
+ get_creator = relationship(User,
+ backref=backref("collections",
+ cascade="all, delete-orphan"))
def get_collection_items(self, ascending=False):
#TODO, is this still needed with self.collection_items being available?
@@ -436,7 +434,9 @@ class CollectionItem(Base, CollectionItemMixin):
note = Column(UnicodeText, nullable=True)
added = Column(DateTime, nullable=False, default=datetime.datetime.now)
position = Column(Integer)
- in_collection = relationship("Collection",
+
+ # Cascade: CollectionItems are owned by their Collection. So do the full thing.
+ in_collection = relationship(Collection,
backref=backref(
"collection_items",
cascade="all, delete-orphan"))
diff --git a/mediagoblin/db/util.py b/mediagoblin/db/util.py
index 529ef8b9..6ffec44d 100644
--- a/mediagoblin/db/util.py
+++ b/mediagoblin/db/util.py
@@ -59,7 +59,7 @@ def clean_orphan_tags(commit=True):
Session.commit()
-def check_collection_slug_used(dummy_db, creator_id, slug, ignore_c_id):
+def check_collection_slug_used(creator_id, slug, ignore_c_id):
filt = (Collection.creator == creator_id) \
& (Collection.slug == slug)
if ignore_c_id is not None:
diff --git a/mediagoblin/decorators.py b/mediagoblin/decorators.py
index 804fab7e..f3535fcf 100644
--- a/mediagoblin/decorators.py
+++ b/mediagoblin/decorators.py
@@ -32,18 +32,18 @@ def require_active_login(controller):
@wraps(controller)
def new_controller_func(request, *args, **kwargs):
if request.user and \
- request.user.get('status') == u'needs_email_verification':
+ request.user.status == u'needs_email_verification':
return redirect(
request, 'mediagoblin.user_pages.user_home',
user=request.user.username)
- elif not request.user or request.user.get('status') != u'active':
+ elif not request.user or request.user.status != u'active':
next_url = urljoin(
request.urlgen('mediagoblin.auth.login',
qualified=True),
request.url)
return redirect(request, 'mediagoblin.auth.login',
- next=url_quote(next_url))
+ next=next_url)
return controller(request, *args, **kwargs)
@@ -125,24 +125,29 @@ def get_user_media_entry(controller):
if not user:
raise NotFound()
- media = MediaEntry.query.filter_by(
- slug = request.matchdict['media'],
- state = u'processed',
- uploader = user.id).first()
+ media = None
- if not media:
- # no media via slug? Grab it via object id
+ # might not be a slug, might be an id, but whatever
+ media_slug = request.matchdict['media']
+
+ # if it starts with id: it actually isn't a slug, it's an id.
+ if media_slug.startswith(u'id:'):
try:
media = MediaEntry.query.filter_by(
- id = int(request.matchdict['media']),
- state = u'processed',
- uploader = user.id).first()
+ id=int(media_slug[3:]),
+ state=u'processed',
+ uploader=user.id).first()
except ValueError:
- # media "id" was no int
raise NotFound()
+ else:
+ # no magical id: stuff? It's a slug!
+ media = MediaEntry.query.filter_by(
+ slug=media_slug,
+ state=u'processed',
+ uploader=user.id).first()
if not media:
- # no media by that id? Okay, 404.
+ # Didn't find anything? Okay, 404.
raise NotFound()
return controller(request, media=media, *args, **kwargs)
@@ -187,10 +192,6 @@ def get_user_collection_item(controller):
if not user:
return render_404(request)
- collection = request.db.Collection.find_one(
- {'slug': request.matchdict['collection'],
- 'creator': user.id})
-
collection_item = request.db.CollectionItem.find_one(
{'id': request.matchdict['collection_item'] })
diff --git a/mediagoblin/edit/views.py b/mediagoblin/edit/views.py
index 24b0b69b..34b7aaca 100644
--- a/mediagoblin/edit/views.py
+++ b/mediagoblin/edit/views.py
@@ -14,7 +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 cgi import FieldStorage
from datetime import datetime
from werkzeug.exceptions import Forbidden
@@ -27,8 +26,8 @@ from mediagoblin.auth import lib as auth_lib
from mediagoblin.edit import forms
from mediagoblin.edit.lib import may_edit_media
from mediagoblin.decorators import (require_active_login, active_user_from_url,
- get_media_entry_by_id,
- get_user_media_entry, user_may_alter_collection, get_user_collection)
+ get_media_entry_by_id,
+ user_may_alter_collection, get_user_collection)
from mediagoblin.tools.response import render_to_response, redirect
from mediagoblin.tools.translate import pass_to_ugettext as _
from mediagoblin.tools.text import (
@@ -59,19 +58,19 @@ def edit_media(request, media):
if request.method == 'POST' and form.validate():
# Make sure there isn't already a MediaEntry with such a slug
# and userid.
- slug = slugify(request.form['slug'])
+ slug = slugify(form.slug.data)
slug_used = check_media_slug_used(media.uploader, slug, media.id)
if slug_used:
form.slug.errors.append(
_(u'An entry with that slug already exists for this user.'))
else:
- media.title = request.form['title']
- media.description = request.form.get('description')
+ media.title = form.title.data
+ media.description = form.description.data
media.tags = convert_to_tag_list_of_dicts(
- request.form.get('tags'))
+ form.tags.data)
- media.license = unicode(request.form.get('license', '')) or None
+ media.license = unicode(form.license.data) or None
media.slug = slug
media.save()
@@ -99,7 +98,7 @@ UNSAFE_MIMETYPES = [
'text/svg+xml']
-@get_user_media_entry
+@get_media_entry_by_id
@require_active_login
def edit_attachments(request, media):
if mg_globals.app_config['allow_attachments']:
@@ -143,7 +142,7 @@ def edit_attachments(request, media):
request.files['attachment_file'].stream.close()
media.attachment_files.append(dict(
- name=request.form['attachment_name'] \
+ name=form.attachment_name.data \
or request.files['attachment_file'].filename,
filepath=attachment_public_filepath,
created=datetime.utcnow(),
@@ -154,7 +153,7 @@ def edit_attachments(request, media):
messages.add_message(
request, messages.SUCCESS,
_("You added the attachment %s!") \
- % (request.form['attachment_name']
+ % (form.attachment_name.data
or request.files['attachment_file'].filename))
return redirect(request,
@@ -191,12 +190,12 @@ def edit_profile(request, url_user=None):
user = url_user
form = forms.EditProfileForm(request.form,
- url=user.get('url'),
- bio=user.get('bio'))
+ url=user.url,
+ bio=user.bio)
if request.method == 'POST' and form.validate():
- user.url = unicode(request.form['url'])
- user.bio = unicode(request.form['bio'])
+ user.url = unicode(form.url.data)
+ user.bio = unicode(form.bio.data)
user.save()
@@ -218,8 +217,8 @@ def edit_profile(request, url_user=None):
def edit_account(request):
user = request.user
form = forms.EditAccountForm(request.form,
- wants_comment_notification=user.get('wants_comment_notification'),
- license_preference=user.get('license_preference'))
+ wants_comment_notification=user.wants_comment_notification,
+ license_preference=user.license_preference)
if request.method == 'POST':
form_validated = form.validate()
@@ -309,26 +308,26 @@ 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(request.db, collection.creator,
- request.form['slug'], collection.id)
+ slug_used = check_collection_slug_used(collection.creator,
+ form.slug.data, collection.id)
# Make sure there isn't already a Collection with this title
existing_collection = request.db.Collection.find_one({
'creator': request.user.id,
- 'title':request.form['title']})
+ 'title':form.title.data})
if existing_collection and existing_collection.id != collection.id:
messages.add_message(
request, messages.ERROR,
_('You already have a collection called "%s"!') % \
- request.form['title'])
+ 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(request.form['title'])
- collection.description = unicode(request.form.get('description'))
- collection.slug = unicode(request.form['slug'])
+ collection.title = unicode(form.title.data)
+ collection.description = unicode(form.description.data)
+ collection.slug = unicode(form.slug.data)
collection.save()
diff --git a/mediagoblin/i18n/ar/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/ar/LC_MESSAGES/mediagoblin.mo
index d8d02ded..5e69858e 100644
--- a/mediagoblin/i18n/ar/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/ar/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/ar/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/ar/LC_MESSAGES/mediagoblin.po
index 6bdfacc6..51c71c3a 100644
--- a/mediagoblin/i18n/ar/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/ar/LC_MESSAGES/mediagoblin.po
@@ -1,17 +1,18 @@
# Translations template for PROJECT.
-# Copyright (C) 2012 ORGANIZATION
+# Copyright (C) 2013 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
# Majid Al-Dharrab <majid@aldharrab.com>, 2011.
+# Mena Rezk Eid <minaeid90@gmail.com>, 2013.
# <Omar.w.kh@gmail.com>, 2011.
# <osamak@gnu.org>, 2011.
msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://issues.mediagoblin.org/\n"
-"POT-Creation-Date: 2012-12-20 09:18-0600\n"
-"PO-Revision-Date: 2012-12-20 15:14+0000\n"
+"POT-Creation-Date: 2013-03-04 18:04-0600\n"
+"PO-Revision-Date: 2013-03-05 00:04+0000\n"
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
@@ -21,82 +22,96 @@ msgstr ""
"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"
-#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:41
+#: mediagoblin/auth/forms.py:28
+msgid "Invalid User name or email address."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:29
+msgid "This field does not take email addresses."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:30
+msgid "This field requires an email address."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:52 mediagoblin/auth/forms.py:67
msgid "Username"
msgstr "اسم المستخدم"
-#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:45
+#: mediagoblin/auth/forms.py:56 mediagoblin/auth/forms.py:71
msgid "Password"
msgstr "كلمة السر"
-#: mediagoblin/auth/forms.py:34
+#: mediagoblin/auth/forms.py:60
msgid "Email address"
msgstr "عنوان البريد الإلكتروني"
-#: mediagoblin/auth/forms.py:51
+#: mediagoblin/auth/forms.py:78
msgid "Username or email"
msgstr ""
-#: mediagoblin/auth/forms.py:58
-msgid "Incorrect input"
-msgstr ""
-
-#: mediagoblin/auth/views.py:55
+#: mediagoblin/auth/views.py:54
msgid "Sorry, registration is disabled on this instance."
msgstr "عÙوًا، التسجيل غير متاح هنا."
-#: mediagoblin/auth/views.py:75
+#: mediagoblin/auth/views.py:68
msgid "Sorry, a user with that name already exists."
msgstr "عذرًا، لقد اختار مستخدم آخر هذا الاسم."
-#: mediagoblin/auth/views.py:79
+#: mediagoblin/auth/views.py:72
msgid "Sorry, a user with that email address already exists."
msgstr ""
-#: mediagoblin/auth/views.py:182
+#: mediagoblin/auth/views.py:174
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
msgstr "تم التحقق من بريدك الإلكتروني. يمكنك الآن الولوج، وتحرير ملÙÙƒ الشخصي، ونشر الصور!"
-#: mediagoblin/auth/views.py:188
+#: mediagoblin/auth/views.py:180
msgid "The verification key or user id is incorrect"
msgstr "Ù…ÙØªØ§Ø­ التحقق أو معر٠المستخدم خاطئ"
-#: mediagoblin/auth/views.py:206
+#: mediagoblin/auth/views.py:198
msgid "You must be logged in so we know who to send the email to!"
-msgstr ""
+msgstr "يجب عليك تسجيل الدخول لإرسال بريد الكترونى لك!"
-#: mediagoblin/auth/views.py:214
+#: mediagoblin/auth/views.py:206
msgid "You've already verified your email address!"
-msgstr ""
+msgstr "لقد قمت Ø¨Ø§Ù„ÙØ¹Ù„ بالتحقق من عنوان البريد الإلكتروني الخاص بك!"
-#: mediagoblin/auth/views.py:227
+#: mediagoblin/auth/views.py:219
msgid "Resent your verification email."
msgstr "أعدنا إرسال رسالة التحقق."
-#: mediagoblin/auth/views.py:263
+#: mediagoblin/auth/views.py:250
+msgid ""
+"If that email address (case sensitive!) is registered an email has been sent"
+" with instructions on how to change your password."
+msgstr ""
+
+#: mediagoblin/auth/views.py:261
+msgid "Couldn't find someone with that username."
+msgstr ""
+
+#: mediagoblin/auth/views.py:264
msgid ""
"An email has been sent with instructions on how to change your password."
msgstr ""
-#: mediagoblin/auth/views.py:273
+#: mediagoblin/auth/views.py:271
msgid ""
"Could not send password recovery email as your username is inactive or your "
"account's email address has not been verified."
msgstr "تعذر إرسال رسالة استعادة كلمة السر لأن اسم المستخدم معطل أو لأننا لم نتحقق من بريدك الإلكتروني."
-#: mediagoblin/auth/views.py:285
-msgid "Couldn't find someone with that username or email."
-msgstr ""
-
-#: mediagoblin/auth/views.py:333
+#: mediagoblin/auth/views.py:328
msgid "You can now log in using your new password."
msgstr ""
-#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:82
+#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:93
#: mediagoblin/submit/forms.py:28 mediagoblin/submit/forms.py:47
-#: mediagoblin/user_pages/forms.py:40
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr "العنوان"
@@ -105,8 +120,8 @@ msgid "Description of this work"
msgstr "وص٠هذا العمل."
#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:52
-#: mediagoblin/edit/forms.py:86 mediagoblin/submit/forms.py:32
-#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:44
+#: mediagoblin/edit/forms.py:97 mediagoblin/submit/forms.py:32
+#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:49
msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
@@ -121,11 +136,11 @@ msgstr "الوسوم"
msgid "Separate tags by commas."
msgstr ""
-#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:90
+#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:101
msgid "Slug"
msgstr "المسار"
-#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:91
+#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:102
msgid "The slug can't be empty"
msgstr "لا يمكن ترك المسار ÙØ§Ø±ØºÙ‹Ø§"
@@ -164,65 +179,81 @@ msgstr ""
msgid "New password"
msgstr ""
-#: mediagoblin/edit/forms.py:71
+#: mediagoblin/edit/forms.py:74
+msgid "License preference"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:80
+msgid "This will be your default license on upload forms."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:82
msgid "Email me when others comment on my media"
msgstr ""
-#: mediagoblin/edit/forms.py:83
+#: mediagoblin/edit/forms.py:94
msgid "The title can't be empty"
msgstr ""
-#: mediagoblin/edit/forms.py:85 mediagoblin/submit/forms.py:50
-#: mediagoblin/user_pages/forms.py:43
+#: mediagoblin/edit/forms.py:96 mediagoblin/submit/forms.py:50
+#: mediagoblin/user_pages/forms.py:48
msgid "Description of this collection"
msgstr ""
-#: mediagoblin/edit/forms.py:92
+#: mediagoblin/edit/forms.py:103
msgid ""
"The title part of this collection's address. You usually don't need to "
"change this."
msgstr ""
-#: mediagoblin/edit/views.py:65
+#: mediagoblin/edit/views.py:66
msgid "An entry with that slug already exists for this user."
msgstr "يوجد مل٠آخر بهذا المسار لدى هذى المستخدم."
-#: mediagoblin/edit/views.py:86
+#: mediagoblin/edit/views.py:85
msgid "You are editing another user's media. Proceed with caution."
msgstr "أنت تحرّر وسائط مستخدم آخر. كن حذرًا أثناء العملية."
-#: mediagoblin/edit/views.py:156
+#: mediagoblin/edit/views.py:155
#, python-format
msgid "You added the attachment %s!"
msgstr ""
-#: mediagoblin/edit/views.py:181
+#: mediagoblin/edit/views.py:182
+msgid "You can only edit your own profile."
+msgstr ""
+
+#: mediagoblin/edit/views.py:188
msgid "You are editing a user's profile. Proceed with caution."
msgstr "أنت تحرّر مل٠مستخدم آخر. كن حذرًا أثناء العملية."
-#: mediagoblin/edit/views.py:197
+#: mediagoblin/edit/views.py:204
msgid "Profile changes saved"
msgstr ""
-#: mediagoblin/edit/views.py:226 mediagoblin/edit/views.py:246
+#: mediagoblin/edit/views.py:241
+msgid "Wrong password"
+msgstr "كلمة سر خاطئة"
+
+#: mediagoblin/edit/views.py:252
msgid "Account settings saved"
msgstr ""
-#: mediagoblin/edit/views.py:251
-msgid "Wrong password"
+#: mediagoblin/edit/views.py:286
+msgid "You need to confirm the deletion of your account."
msgstr ""
-#: mediagoblin/edit/views.py:287 mediagoblin/submit/views.py:211
-#: mediagoblin/user_pages/views.py:210
+#: mediagoblin/edit/views.py:322 mediagoblin/submit/views.py:142
+#: mediagoblin/user_pages/views.py:214
#, python-format
msgid "You already have a collection called \"%s\"!"
msgstr ""
-#: mediagoblin/edit/views.py:291
+#: mediagoblin/edit/views.py:326
msgid "A collection with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:308
+#: mediagoblin/edit/views.py:343
msgid "You are editing another user's collection. Proceed with caution."
msgstr ""
@@ -238,54 +269,62 @@ msgstr ""
msgid "However, old link directory symlink found; removed.\n"
msgstr ""
-#: mediagoblin/media_types/__init__.py:60
-#: mediagoblin/media_types/__init__.py:101
+#: 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:61
+#: mediagoblin/media_types/__init__.py:102
msgid "Sorry, I don't support that file type :("
msgstr ""
-#: mediagoblin/media_types/video/processing.py:35
+#: mediagoblin/media_types/video/processing.py:36
msgid "Video transcoding failed"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:26
-msgid "Client ID"
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
+msgid "Location"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:28
-msgid "Next URL"
+#: 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/oauth/forms.py:30
+#: mediagoblin/plugins/oauth/forms.py:29
msgid "Allow"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:31
+#: mediagoblin/plugins/oauth/forms.py:30
msgid "Deny"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:35
+#: mediagoblin/plugins/oauth/forms.py:34
msgid "Name"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:36
+#: mediagoblin/plugins/oauth/forms.py:35
msgid "The name of the OAuth client"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:37
+#: mediagoblin/plugins/oauth/forms.py:36
msgid "Description"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:39
+#: 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:41
+#: mediagoblin/plugins/oauth/forms.py:40
msgid "Type"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:46
+#: 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"
@@ -295,25 +334,40 @@ msgid ""
" JavaScript client)."
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:53
+#: mediagoblin/plugins/oauth/forms.py:52
msgid "Redirect URI"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:55
+#: 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:67
+#: mediagoblin/plugins/oauth/forms.py:66
msgid "This field is required for public clients"
msgstr ""
-#: mediagoblin/plugins/oauth/views.py:60
+#: mediagoblin/plugins/oauth/views.py:59
msgid "The client {0} has been registered!"
msgstr ""
-#: mediagoblin/processing/__init__.py:138
+#: 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/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:172
msgid "Invalid file given for media type."
msgstr ""
@@ -321,56 +375,74 @@ msgstr ""
msgid "File"
msgstr "الملÙ"
-#: mediagoblin/submit/views.py:57
+#: mediagoblin/submit/views.py:51
msgid "You must provide a file."
msgstr "يجب أن تضع ملÙًا."
-#: mediagoblin/submit/views.py:164
+#: mediagoblin/submit/views.py:97
msgid "Woohoo! Submitted!"
msgstr "يا سلام! Ù†ÙØ´Ø±ÙŽØª!"
-#: mediagoblin/submit/views.py:215
+#: mediagoblin/submit/views.py:146
#, python-format
msgid "Collection \"%s\" added!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:48
-msgid "MediaGoblin logo"
-msgstr "شعار ميدياغوبلن"
+#: mediagoblin/templates/mediagoblin/base.html:64
+msgid "Verify your email!"
+msgstr "تأكد من بريدك الإلكترونى!"
+
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "log out"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:54
+#: mediagoblin/templates/mediagoblin/base.html:70
+#: mediagoblin/templates/mediagoblin/auth/login.html:28
+#: mediagoblin/templates/mediagoblin/auth/login.html:36
+#: mediagoblin/templates/mediagoblin/auth/login.html:54
+msgid "Log in"
+msgstr "تسجيل دخول"
+
+#: mediagoblin/templates/mediagoblin/base.html:79
#, python-format
msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:60
-msgid "log out"
+#: mediagoblin/templates/mediagoblin/base.html:86
+msgid "Change account settings"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:62
-#: mediagoblin/templates/mediagoblin/root.html:28
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:151
+#: mediagoblin/templates/mediagoblin/base.html:90
+#: mediagoblin/templates/mediagoblin/base.html:105
+#: mediagoblin/templates/mediagoblin/admin/panel.html:21
+#: mediagoblin/templates/mediagoblin/admin/panel.html:26
+#: 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:93
+msgid "Log out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:156
msgid "Add media"
msgstr "أض٠وسائط"
-#: mediagoblin/templates/mediagoblin/base.html:68
-msgid "Verify your email!"
+#: mediagoblin/templates/mediagoblin/base.html:99
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
+msgid "Create new collection"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:73
-#: mediagoblin/templates/mediagoblin/auth/login.html:28
-#: mediagoblin/templates/mediagoblin/auth/login.html:36
-#: mediagoblin/templates/mediagoblin/auth/login.html:54
-msgid "Log in"
-msgstr "Ù„ÙØ¬"
-
-#: mediagoblin/templates/mediagoblin/base.html:87
+#: mediagoblin/templates/mediagoblin/base.html:122
+#, python-format
msgid ""
-"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
-"href=\"http://gnu.org/\">GNU</a> project."
+"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/base.html:90
+#: mediagoblin/templates/mediagoblin/base.html:125
#, python-format
msgid ""
"Released under the <a "
@@ -382,52 +454,31 @@ msgstr ""
msgid "Image of goblin stressing out"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:25
-msgid "Actions"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/root.html:31
-msgid "Create new collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:34
-msgid "Change account settings"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:38
-#: mediagoblin/templates/mediagoblin/root.html:44
-#: mediagoblin/templates/mediagoblin/admin/panel.html:21
-#: mediagoblin/templates/mediagoblin/admin/panel.html:26
-#: 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/root.html:51
msgid "Explore"
-msgstr ""
+msgstr "استكشÙ"
-#: mediagoblin/templates/mediagoblin/root.html:53
+#: mediagoblin/templates/mediagoblin/root.html:33
msgid "Hi there, welcome to this MediaGoblin site!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:55
+#: mediagoblin/templates/mediagoblin/root.html:35
msgid ""
"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
"extraordinarily great piece of media hosting software."
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:56
+#: mediagoblin/templates/mediagoblin/root.html:36
msgid ""
"To add your own media, place comments, and more, you can log in with your "
"MediaGoblin account."
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:58
+#: mediagoblin/templates/mediagoblin/root.html:38
msgid "Don't have one yet? It's easy!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:59
+#: mediagoblin/templates/mediagoblin/root.html:39
#, python-format
msgid ""
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Create an account at this site</a>\n"
@@ -435,7 +486,7 @@ msgid ""
" <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:67
+#: mediagoblin/templates/mediagoblin/root.html:47
msgid "Most recent media"
msgstr "أحدث الوسائط"
@@ -541,41 +592,62 @@ msgid ""
"%(verification_url)s"
msgstr "أهلًا يا %(username)sØŒ\n\nØ§ÙØªØ­ الرابط التالي\nÙÙŠ Ù…ØªØµÙØ­Ùƒ Ù„ØªÙØ¹ÙŠÙ„ حسابك ÙÙŠ غنو ميدياغوبلن:\n\n%(verification_url)s"
+#: 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:43
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:159
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:175
msgid "Attachments"
msgstr ""
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
msgid "Add attachment"
msgstr ""
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:60
+#: 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:81
+#: 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:62
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:51
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
msgid "Save changes"
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:47
+#: 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
@@ -588,13 +660,17 @@ msgstr "تحرير %(media_title)s"
msgid "Changing %(username)s's account settings"
msgstr ""
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
+msgid "Delete my account"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:29
#, python-format
msgid "Editing %(collection_title)s"
-msgstr ""
+msgstr "تحرير %(collection_title)s"
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:23
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
#, python-format
msgid "Editing %(username)s's profile"
msgstr "تحرير مل٠%(username)s الشخصي"
@@ -610,7 +686,7 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
msgstr ""
@@ -633,7 +709,7 @@ msgid ""
msgstr ""
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:56
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:61
msgid "Original file"
msgstr ""
@@ -645,8 +721,8 @@ msgstr ""
#: 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:67
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
+#: 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 ""
@@ -691,33 +767,27 @@ msgstr ""
msgid "Object Height"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
msgid ""
-"Sorry, this video will not work because \n"
-"\t your web browser does not support HTML5 \n"
-"\t video."
+"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:43
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:47
msgid ""
"You can get a modern web browser that \n"
-"\t can play this video at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:69
msgid "WebM file (640p; VP8/Vorbis)"
msgstr ""
#: mediagoblin/templates/mediagoblin/submit/collection.html:26
msgid "Add a collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/submit/collection.html:30
-#: mediagoblin/templates/mediagoblin/submit/start.html:34
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-msgid "Add"
-msgstr ""
+msgstr "Ø¥Ø¶Ø§ÙØ© مجموعة"
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
@@ -735,12 +805,12 @@ 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:87
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
msgid "Edit"
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:91
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
msgid "Delete"
msgstr ""
@@ -750,11 +820,6 @@ msgstr ""
msgid "Really delete %(title)s?"
msgstr "أتود حقًا حذ٠%(title)s?"
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:47
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Delete permanently"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:31
#, python-format
msgid "Really remove %(media_title)s from %(collection_title)s?"
@@ -764,6 +829,16 @@ msgstr ""
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 ""
@@ -776,56 +851,53 @@ msgstr ""
msgid "%(username)s's media"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:37
+#: 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:46
+#: 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:102
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:94
msgid "Add a comment"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:109
-msgid ""
-"You can use <a "
-"href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> for"
-" formatting."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:113
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:102
msgid "Add this comment"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:123
msgid "at"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:152
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:144
#, python-format
msgid ""
"<h3>Added on</h3>\n"
" <p>%(date)s</p>"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:202
-msgid "Add media to collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
#, python-format
-msgid "Add %(title)s to collection"
+msgid "Add “%(media_title)s†to a collection"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:51
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
msgstr ""
@@ -887,27 +959,31 @@ msgstr "إن كنت أنت ذلك الشخص لكنك Ùقدت رسالة الت
msgid "Here's a spot to tell others about yourself."
msgstr "هذه زاوية لتخبر الآخرين Ùيها عن Ù†ÙØ³Ùƒ."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:101
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:100
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:117
msgid "Edit profile"
msgstr "Ø­Ø±Ù‘ÙØ± المل٠الشخصي"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:105
msgid "This user hasn't filled in their profile (yet)."
msgstr "لم يعبئ هذا العضو بيانات ملÙÙ‡ بعد."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:124
+msgid "Browse collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:137
#, python-format
msgid "View all of %(username)s's media"
msgstr "Ø£Ø¸Ù‡ÙØ± كل وسائط %(username)s"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:145
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:150
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:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:162
#: 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..."
@@ -917,28 +993,24 @@ msgstr "لا يبدو أنه توجد أي وسائط هنا حتى الآن..."
msgid "(remove)"
msgstr ""
-#: mediagoblin/templates/mediagoblin/utils/collections.html:20
-#, python-format
-msgid "In collections (%(collected)s)"
+#: 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/geolocation_map.html:25
-msgid "Location"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/utils/geolocation_map.html:53
-#, python-format
-msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
msgstr ""
@@ -969,49 +1041,64 @@ msgstr ""
msgid "Tagged with"
msgstr ""
-#: mediagoblin/tools/exif.py:78
+#: mediagoblin/tools/exif.py:80
msgid "Could not read the image file."
msgstr ""
-#: mediagoblin/tools/response.py:30
+#: mediagoblin/tools/response.py:35
msgid "Oops!"
msgstr "ويحي!"
-#: mediagoblin/tools/response.py:31
+#: mediagoblin/tools/response.py:36
msgid "An error occured"
msgstr ""
-#: mediagoblin/tools/response.py:46
+#: mediagoblin/tools/response.py:51
msgid "Operation not allowed"
msgstr ""
-#: mediagoblin/tools/response.py:47
+#: mediagoblin/tools/response.py:52
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:55
+#: mediagoblin/tools/response.py:60
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/user_pages/forms.py:28
+#: 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\">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:32
+#: 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:35
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:40
msgid "-- Select --"
msgstr ""
-#: mediagoblin/user_pages/forms.py:37
+#: mediagoblin/user_pages/forms.py:42
msgid "Include a note"
msgstr ""
@@ -1019,74 +1106,69 @@ msgstr ""
msgid "commented on your post"
msgstr ""
-#: mediagoblin/user_pages/views.py:156
+#: mediagoblin/user_pages/views.py:166
msgid "Oops, your comment was empty."
msgstr ""
-#: mediagoblin/user_pages/views.py:162
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
msgstr ""
-#: mediagoblin/user_pages/views.py:230
+#: mediagoblin/user_pages/views.py:197
+msgid "Please check your entries and try again."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:237
msgid "You have to select or add a collection"
msgstr ""
-#: mediagoblin/user_pages/views.py:238
+#: mediagoblin/user_pages/views.py:248
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:253
+#: mediagoblin/user_pages/views.py:264
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:261
-msgid "Please check your entries and try again."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:292
-msgid ""
-"Some of the files with this entry seem to be missing. Deleting anyway."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:297
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
msgstr ""
-#: mediagoblin/user_pages/views.py:304
+#: mediagoblin/user_pages/views.py:293
msgid "The media was not deleted because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/user_pages/views.py:312
+#: mediagoblin/user_pages/views.py:301
msgid "You are about to delete another user's media. Proceed with caution."
msgstr "أنت على وشك حذ٠وسائط مستخدم آخر. كن حذرًا أثناء العملية."
-#: mediagoblin/user_pages/views.py:370
+#: mediagoblin/user_pages/views.py:375
msgid "You deleted the item from the collection."
msgstr ""
-#: mediagoblin/user_pages/views.py:374
+#: mediagoblin/user_pages/views.py:379
msgid "The item was not removed because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/user_pages/views.py:384
+#: mediagoblin/user_pages/views.py:389
msgid ""
"You are about to delete an item from another user's collection. Proceed with"
" caution."
msgstr ""
-#: mediagoblin/user_pages/views.py:417
+#: mediagoblin/user_pages/views.py:422
#, python-format
msgid "You deleted the collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:424
+#: mediagoblin/user_pages/views.py:429
msgid ""
"The collection was not deleted because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/user_pages/views.py:434
+#: mediagoblin/user_pages/views.py:439
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
index ae6216cf..495ef726 100644
--- a/mediagoblin/i18n/ca/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/ca/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/ca/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/ca/LC_MESSAGES/mediagoblin.po
index 79f26e8f..28bdca82 100644
--- a/mediagoblin/i18n/ca/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/ca/LC_MESSAGES/mediagoblin.po
@@ -1,5 +1,5 @@
# Translations template for PROJECT.
-# Copyright (C) 2012 ORGANIZATION
+# Copyright (C) 2013 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
@@ -10,8 +10,8 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://issues.mediagoblin.org/\n"
-"POT-Creation-Date: 2012-12-20 09:18-0600\n"
-"PO-Revision-Date: 2012-12-20 15:14+0000\n"
+"POT-Creation-Date: 2013-03-04 18:04-0600\n"
+"PO-Revision-Date: 2013-03-05 00:04+0000\n"
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
@@ -21,82 +21,96 @@ msgstr ""
"Language: ca\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:41
+#: mediagoblin/auth/forms.py:28
+msgid "Invalid User name or email address."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:29
+msgid "This field does not take email addresses."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:30
+msgid "This field requires an email address."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:52 mediagoblin/auth/forms.py:67
msgid "Username"
msgstr "Nom d'usuari"
-#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:45
+#: mediagoblin/auth/forms.py:56 mediagoblin/auth/forms.py:71
msgid "Password"
msgstr "Contrasenya"
-#: mediagoblin/auth/forms.py:34
+#: mediagoblin/auth/forms.py:60
msgid "Email address"
msgstr "Adreça electrònica"
-#: mediagoblin/auth/forms.py:51
+#: mediagoblin/auth/forms.py:78
msgid "Username or email"
msgstr "Nom d'usuari o correu"
-#: mediagoblin/auth/forms.py:58
-msgid "Incorrect input"
-msgstr "Entrada incorrecte"
-
-#: mediagoblin/auth/views.py:55
+#: mediagoblin/auth/views.py:54
msgid "Sorry, registration is disabled on this instance."
msgstr "Ho sentim, el registre està desactivat en aquest cas."
-#: mediagoblin/auth/views.py:75
+#: mediagoblin/auth/views.py:68
msgid "Sorry, a user with that name already exists."
msgstr "Lamentablement aquest usuari ja existeix."
-#: mediagoblin/auth/views.py:79
+#: mediagoblin/auth/views.py:72
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:182
+#: mediagoblin/auth/views.py:174
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:188
+#: mediagoblin/auth/views.py:180
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:206
+#: mediagoblin/auth/views.py:198
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:214
+#: mediagoblin/auth/views.py:206
msgid "You've already verified your email address!"
msgstr "Ja has verificat la teva adreça de correu!"
-#: mediagoblin/auth/views.py:227
+#: mediagoblin/auth/views.py:219
msgid "Resent your verification email."
msgstr "Torna'm a enviar el correu de verificació"
-#: mediagoblin/auth/views.py:263
+#: mediagoblin/auth/views.py:250
+msgid ""
+"If that email address (case sensitive!) is registered an email has been sent"
+" with instructions on how to change your password."
+msgstr ""
+
+#: mediagoblin/auth/views.py:261
+msgid "Couldn't find someone with that username."
+msgstr ""
+
+#: mediagoblin/auth/views.py:264
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/auth/views.py:273
+#: mediagoblin/auth/views.py:271
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/auth/views.py:285
-msgid "Couldn't find someone with that username or email."
-msgstr "No es troba ningu amb aquest nom d'usuari o correu electrònic."
-
-#: mediagoblin/auth/views.py:333
+#: mediagoblin/auth/views.py:328
msgid "You can now log in using your new password."
msgstr "Ara et pots conectar amb la teva nova contrasenya."
-#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:82
+#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:93
#: mediagoblin/submit/forms.py:28 mediagoblin/submit/forms.py:47
-#: mediagoblin/user_pages/forms.py:40
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr "Títol"
@@ -105,8 +119,8 @@ msgid "Description of this work"
msgstr "Descripció d'aquest treball."
#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:52
-#: mediagoblin/edit/forms.py:86 mediagoblin/submit/forms.py:32
-#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:44
+#: mediagoblin/edit/forms.py:97 mediagoblin/submit/forms.py:32
+#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:49
msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
@@ -121,11 +135,11 @@ msgstr "Etiquetes"
msgid "Separate tags by commas."
msgstr "Separa els tags amb comes."
-#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:90
+#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:101
msgid "Slug"
msgstr "Llimac"
-#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:91
+#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:102
msgid "The slug can't be empty"
msgstr "El llimac no pot ésser buit"
@@ -164,65 +178,81 @@ msgstr "Introdueix la teva contrasenya antiga per comprovar que aquest compte é
msgid "New password"
msgstr "Nova contrasenya"
-#: mediagoblin/edit/forms.py:71
+#: mediagoblin/edit/forms.py:74
+msgid "License preference"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:80
+msgid "This will be your default license on upload forms."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:82
msgid "Email me when others comment on my media"
msgstr "Envia'm correu quan d'altres comentin al meu mitjà"
-#: mediagoblin/edit/forms.py:83
+#: mediagoblin/edit/forms.py:94
msgid "The title can't be empty"
msgstr "El títol no pot ser buit"
-#: mediagoblin/edit/forms.py:85 mediagoblin/submit/forms.py:50
-#: mediagoblin/user_pages/forms.py:43
+#: mediagoblin/edit/forms.py:96 mediagoblin/submit/forms.py:50
+#: mediagoblin/user_pages/forms.py:48
msgid "Description of this collection"
msgstr "Descripció d'aquesta col.lecció"
-#: mediagoblin/edit/forms.py:92
+#: mediagoblin/edit/forms.py:103
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/views.py:65
+#: mediagoblin/edit/views.py:66
msgid "An entry with that slug already exists for this user."
msgstr "Ja existeix una entrada amb aquest llimac per aquest usuari"
-#: mediagoblin/edit/views.py:86
+#: mediagoblin/edit/views.py:85
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:156
+#: mediagoblin/edit/views.py:155
#, python-format
msgid "You added the attachment %s!"
msgstr ""
-#: mediagoblin/edit/views.py:181
+#: mediagoblin/edit/views.py:182
+msgid "You can only edit your own profile."
+msgstr ""
+
+#: mediagoblin/edit/views.py:188
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:197
+#: mediagoblin/edit/views.py:204
msgid "Profile changes saved"
msgstr "Els canvis al perfil s'han guardat"
-#: mediagoblin/edit/views.py:226 mediagoblin/edit/views.py:246
+#: mediagoblin/edit/views.py:241
+msgid "Wrong password"
+msgstr "Contrasenya errònia"
+
+#: mediagoblin/edit/views.py:252
msgid "Account settings saved"
msgstr "Els detalls del compte s'han guardat"
-#: mediagoblin/edit/views.py:251
-msgid "Wrong password"
-msgstr "Contrasenya errònia"
+#: mediagoblin/edit/views.py:286
+msgid "You need to confirm the deletion of your account."
+msgstr ""
-#: mediagoblin/edit/views.py:287 mediagoblin/submit/views.py:211
-#: mediagoblin/user_pages/views.py:210
+#: mediagoblin/edit/views.py:322 mediagoblin/submit/views.py:142
+#: mediagoblin/user_pages/views.py:214
#, python-format
msgid "You already have a collection called \"%s\"!"
msgstr "Ja tens una col.lecció anomenada \"%s\"!"
-#: mediagoblin/edit/views.py:291
+#: mediagoblin/edit/views.py:326
msgid "A collection with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:308
+#: mediagoblin/edit/views.py:343
msgid "You are editing another user's collection. Proceed with caution."
msgstr "Estas editant la col.lecció d'un altre usuari. Prossegueix amb cautela."
@@ -238,54 +268,62 @@ msgstr ""
msgid "However, old link directory symlink found; removed.\n"
msgstr "Tot i així, l'enllaç antic al directori s'ha trobat; eliminat.\n"
-#: mediagoblin/media_types/__init__.py:60
-#: mediagoblin/media_types/__init__.py:101
+#: 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:61
+#: mediagoblin/media_types/__init__.py:102
msgid "Sorry, I don't support that file type :("
msgstr "Ho sento, no puc manegar aquest tipus d'arxiu :("
-#: mediagoblin/media_types/video/processing.py:35
+#: mediagoblin/media_types/video/processing.py:36
msgid "Video transcoding failed"
msgstr "La transformació del vídeo ha fallat"
-#: mediagoblin/plugins/oauth/forms.py:26
-msgid "Client ID"
-msgstr "ID del client"
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
+msgid "Location"
+msgstr "Ubicació"
-#: mediagoblin/plugins/oauth/forms.py:28
-msgid "Next URL"
-msgstr "Següent URL"
+#: 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/oauth/forms.py:30
+#: mediagoblin/plugins/oauth/forms.py:29
msgid "Allow"
msgstr "Permetre"
-#: mediagoblin/plugins/oauth/forms.py:31
+#: mediagoblin/plugins/oauth/forms.py:30
msgid "Deny"
msgstr "Denegar"
-#: mediagoblin/plugins/oauth/forms.py:35
+#: mediagoblin/plugins/oauth/forms.py:34
msgid "Name"
msgstr "Nom"
-#: mediagoblin/plugins/oauth/forms.py:36
+#: mediagoblin/plugins/oauth/forms.py:35
msgid "The name of the OAuth client"
msgstr "El nom del client OAuth"
-#: mediagoblin/plugins/oauth/forms.py:37
+#: mediagoblin/plugins/oauth/forms.py:36
msgid "Description"
msgstr "Descripció"
-#: mediagoblin/plugins/oauth/forms.py:39
+#: 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:41
+#: mediagoblin/plugins/oauth/forms.py:40
msgid "Type"
msgstr "Tipus"
-#: mediagoblin/plugins/oauth/forms.py:46
+#: 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"
@@ -295,25 +333,40 @@ msgid ""
" 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:53
+#: mediagoblin/plugins/oauth/forms.py:52
msgid "Redirect URI"
msgstr "Redireccionar URI "
-#: mediagoblin/plugins/oauth/forms.py:55
+#: 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:67
+#: 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:60
+#: mediagoblin/plugins/oauth/views.py:59
msgid "The client {0} has been registered!"
msgstr "El client {0} ha sigut enregistrat!"
-#: mediagoblin/processing/__init__.py:138
+#: 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/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr "Afegir"
+
+#: mediagoblin/processing/__init__.py:172
msgid "Invalid file given for media type."
msgstr "Aquest tipus de fitxer no és vàlid."
@@ -321,56 +374,74 @@ msgstr "Aquest tipus de fitxer no és vàlid."
msgid "File"
msgstr "Fitxer"
-#: mediagoblin/submit/views.py:57
+#: mediagoblin/submit/views.py:51
msgid "You must provide a file."
msgstr "Heu d'escollir un fitxer."
-#: mediagoblin/submit/views.py:164
+#: mediagoblin/submit/views.py:97
msgid "Woohoo! Submitted!"
msgstr "Visca! S'ha enviat!"
-#: mediagoblin/submit/views.py:215
+#: mediagoblin/submit/views.py:146
#, python-format
msgid "Collection \"%s\" added!"
msgstr "S'ha afegit la col.leccio \"%s\"!"
-#: mediagoblin/templates/mediagoblin/base.html:48
-msgid "MediaGoblin logo"
-msgstr "Logo de mediagoblin"
+#: mediagoblin/templates/mediagoblin/base.html:64
+msgid "Verify your email!"
+msgstr "Verifica el teu correu electrònic"
+
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "log out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:70
+#: mediagoblin/templates/mediagoblin/auth/login.html:28
+#: mediagoblin/templates/mediagoblin/auth/login.html:36
+#: mediagoblin/templates/mediagoblin/auth/login.html:54
+msgid "Log in"
+msgstr "Entra"
-#: mediagoblin/templates/mediagoblin/base.html:54
+#: mediagoblin/templates/mediagoblin/base.html:79
#, python-format
msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:60
-msgid "log out"
+#: mediagoblin/templates/mediagoblin/base.html:86
+msgid "Change account settings"
+msgstr "Modificar els ajustaments del compte"
+
+#: mediagoblin/templates/mediagoblin/base.html:90
+#: mediagoblin/templates/mediagoblin/base.html:105
+#: mediagoblin/templates/mediagoblin/admin/panel.html:21
+#: mediagoblin/templates/mediagoblin/admin/panel.html:26
+#: 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:93
+msgid "Log out"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:62
-#: mediagoblin/templates/mediagoblin/root.html:28
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:151
+#: mediagoblin/templates/mediagoblin/base.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:156
msgid "Add media"
msgstr "Tots els fitxers"
-#: mediagoblin/templates/mediagoblin/base.html:68
-msgid "Verify your email!"
-msgstr "Verifica el teu correu electrònic"
-
-#: mediagoblin/templates/mediagoblin/base.html:73
-#: mediagoblin/templates/mediagoblin/auth/login.html:28
-#: mediagoblin/templates/mediagoblin/auth/login.html:36
-#: mediagoblin/templates/mediagoblin/auth/login.html:54
-msgid "Log in"
-msgstr "Entra"
+#: mediagoblin/templates/mediagoblin/base.html:99
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
+msgid "Create new collection"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:87
+#: mediagoblin/templates/mediagoblin/base.html:122
+#, python-format
msgid ""
-"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
-"href=\"http://gnu.org/\">GNU</a> project."
-msgstr "Alimentat per <a href=\"http://mediagoblin.org\">MediaGoblin</a>, un projecte <a href=\"http://gnu.org/\">GNU</a>."
+"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/base.html:90
+#: mediagoblin/templates/mediagoblin/base.html:125
#, python-format
msgid ""
"Released under the <a "
@@ -382,52 +453,31 @@ msgstr "Alliberat segons la <a href=\"http://www.fsf.org/licensing/licenses/agpl
msgid "Image of goblin stressing out"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:25
-msgid "Actions"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/root.html:31
-msgid "Create new collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:34
-msgid "Change account settings"
-msgstr "Modificar els ajustaments del compte"
-
-#: mediagoblin/templates/mediagoblin/root.html:38
-#: mediagoblin/templates/mediagoblin/root.html:44
-#: mediagoblin/templates/mediagoblin/admin/panel.html:21
-#: mediagoblin/templates/mediagoblin/admin/panel.html:26
-#: 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/root.html:51
msgid "Explore"
msgstr "Explorar"
-#: mediagoblin/templates/mediagoblin/root.html:53
+#: mediagoblin/templates/mediagoblin/root.html:33
msgid "Hi there, welcome to this MediaGoblin site!"
msgstr "Hola, una benvinguda al MediaGoblin!"
-#: mediagoblin/templates/mediagoblin/root.html:55
+#: mediagoblin/templates/mediagoblin/root.html:35
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/root.html:56
+#: mediagoblin/templates/mediagoblin/root.html:36
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/root.html:58
+#: mediagoblin/templates/mediagoblin/root.html:38
msgid "Don't have one yet? It's easy!"
msgstr "No en tens una encara? Es fàcil!"
-#: mediagoblin/templates/mediagoblin/root.html:59
+#: mediagoblin/templates/mediagoblin/root.html:39
#, python-format
msgid ""
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Create an account at this site</a>\n"
@@ -435,7 +485,7 @@ msgid ""
" <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
msgstr "<a class=\"button_action_highlight\" href=\"%(register_url)s\">Crear un compte a aquest lloc</a> \no\n <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Preparar MediaGoblin al teu propi servidor</a>"
-#: mediagoblin/templates/mediagoblin/root.html:67
+#: mediagoblin/templates/mediagoblin/root.html:47
msgid "Most recent media"
msgstr "Mitjans més recents"
@@ -541,41 +591,62 @@ msgid ""
"%(verification_url)s"
msgstr "Hi %(username)s,\n\nto activate your GNU MediaGoblin account, open the following URL in\nyour web browser:\n\n%(verification_url)s"
+#: 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:43
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:159
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:175
msgid "Attachments"
msgstr ""
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
msgid "Add attachment"
msgstr ""
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:60
+#: 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:81
+#: 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:62
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:51
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
msgid "Save changes"
msgstr "Desa els canvis"
+#: 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:47
+#: 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
@@ -588,13 +659,17 @@ msgstr "Edició %(media_title)s "
msgid "Changing %(username)s's account settings"
msgstr "Modificant els detalls del compte de %(username)s"
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
+msgid "Delete my account"
+msgstr ""
+
#: 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:35
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
#, python-format
msgid "Editing %(username)s's profile"
msgstr "Editant perfil de %(username)s"
@@ -610,7 +685,7 @@ 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/stl.html:136
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
msgstr "Descarregar"
@@ -633,7 +708,7 @@ msgid ""
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/video.html:56
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:61
msgid "Original file"
msgstr "Arxiu original"
@@ -645,8 +720,8 @@ msgstr "Arxiu WebM (Vorbis codec)"
#: 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:67
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
+#: 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"
@@ -691,21 +766,21 @@ msgstr ""
msgid "Object Height"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
msgid ""
-"Sorry, this video will not work because \n"
-"\t your web browser does not support HTML5 \n"
-"\t video."
-msgstr "Ho sento, aquest video no funcionarà perquè \n » el teu navegador web no té suport per videos \n » HTML5."
+"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:43
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:47
msgid ""
"You can get a modern web browser that \n"
-"\t can play this video at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
-msgstr "Pots obtenir un navegador web modern que \n » podrà reproduir aquest vídeo, a <a href=\"http://getfirefox.com\">\n » http://getfirefox.com</a>!"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:69
msgid "WebM file (640p; VP8/Vorbis)"
msgstr "Arxiu WebM (640p; VP8/Vorbis)"
@@ -713,12 +788,6 @@ msgstr "Arxiu WebM (640p; VP8/Vorbis)"
msgid "Add a collection"
msgstr "Afegir a la col.lecció"
-#: mediagoblin/templates/mediagoblin/submit/collection.html:30
-#: mediagoblin/templates/mediagoblin/submit/start.html:34
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-msgid "Add"
-msgstr "Afegir"
-
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
msgid "Add your media"
@@ -735,12 +804,12 @@ 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:87
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
msgid "Edit"
msgstr "Editar"
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:91
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
msgid "Delete"
msgstr "Esborrar"
@@ -750,11 +819,6 @@ msgstr "Esborrar"
msgid "Really delete %(title)s?"
msgstr "Realment vols esborrar %(title)s?"
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:47
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Delete permanently"
-msgstr "Esborrar permanentment"
-
#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:31
#, python-format
msgid "Really remove %(media_title)s from %(collection_title)s?"
@@ -764,6 +828,16 @@ msgstr "Relment eliminar %(media_title)s de %(collection_title)s?"
msgid "Remove"
msgstr "Eliminar"
+#: 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 ""
@@ -776,56 +850,53 @@ msgstr "Hola %(username)s,\n%(comment_author)s ha comentat el teu post (%(commen
msgid "%(username)s's media"
msgstr "Mitjà de %(username)s"
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:37
+#: 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>'s media"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:46
+#: 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:102
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:94
msgid "Add a comment"
msgstr "Afegeix un comentari"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:109
-msgid ""
-"You can use <a "
-"href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> for"
-" formatting."
-msgstr "Pots usar <a href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> per donar format."
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:113
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:102
msgid "Add this comment"
msgstr "Afegir aquest comentari"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:123
msgid "at"
msgstr "a"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:152
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:144
#, python-format
msgid ""
"<h3>Added on</h3>\n"
" <p>%(date)s</p>"
msgstr "<h3>Afegit el</h3>\n <p>%(date)s</p>"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:202
-msgid "Add media to collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
#, python-format
-msgid "Add %(title)s to collection"
-msgstr "Afegir %(title)s a la col.lecció"
+msgid "Add “%(media_title)s†to a collection"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:51
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
msgstr "+"
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
msgstr "Afegir una nova col.lecció"
@@ -887,27 +958,31 @@ msgstr "Si siu aqeust usuari però heu perdut el correu de verificació, podeu <
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:101
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:100
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:117
msgid "Edit profile"
msgstr "Edita el perfil"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:105
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:132
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:124
+msgid "Browse collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:137
#, python-format
msgid "View all of %(username)s's media"
msgstr "View all of %(username)s's media"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:145
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:150
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:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:162
#: 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..."
@@ -917,28 +992,24 @@ msgstr "Sembla que no hi ha cap mitjà aqui encara..."
msgid "(remove)"
msgstr ""
-#: mediagoblin/templates/mediagoblin/utils/collections.html:20
-#, python-format
-msgid "In collections (%(collected)s)"
-msgstr "A les col.leccions (%(collected)s)"
+#: 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 "Icona RSS"
#: 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/geolocation_map.html:25
-msgid "Location"
-msgstr "Ubicació"
-
-#: mediagoblin/templates/mediagoblin/utils/geolocation_map.html:53
-#, python-format
-msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-msgstr "Veure a <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
msgstr "Tots els drets reservats"
@@ -969,49 +1040,64 @@ msgstr "més antic"
msgid "Tagged with"
msgstr ""
-#: mediagoblin/tools/exif.py:78
+#: mediagoblin/tools/exif.py:80
msgid "Could not read the image file."
msgstr "No s'ha pogut llegir l'arxiu d'imatge"
-#: mediagoblin/tools/response.py:30
+#: mediagoblin/tools/response.py:35
msgid "Oops!"
msgstr "Ups!"
-#: mediagoblin/tools/response.py:31
+#: mediagoblin/tools/response.py:36
msgid "An error occured"
msgstr ""
-#: mediagoblin/tools/response.py:46
+#: mediagoblin/tools/response.py:51
msgid "Operation not allowed"
msgstr ""
-#: mediagoblin/tools/response.py:47
+#: mediagoblin/tools/response.py:52
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:55
+#: mediagoblin/tools/response.py:60
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/user_pages/forms.py:28
+#: 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\">Markdown</a> for"
+" formatting."
+msgstr "Pots usar <a href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> per donar format."
+
+#: 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:32
+#: 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:35
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:40
msgid "-- Select --"
msgstr "-- Sel.leccionar --"
-#: mediagoblin/user_pages/forms.py:37
+#: mediagoblin/user_pages/forms.py:42
msgid "Include a note"
msgstr "Incluir una nota"
@@ -1019,74 +1105,69 @@ msgstr "Incluir una nota"
msgid "commented on your post"
msgstr "comentat al teu post"
-#: mediagoblin/user_pages/views.py:156
+#: mediagoblin/user_pages/views.py:166
msgid "Oops, your comment was empty."
msgstr "Uups, el teu comentari era buit."
-#: mediagoblin/user_pages/views.py:162
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
msgstr "El teu comentari s'ha publicat!"
-#: mediagoblin/user_pages/views.py:230
+#: mediagoblin/user_pages/views.py:197
+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:237
msgid "You have to select or add a collection"
msgstr "Has de sel.leccionar o afegir una col.lecció"
-#: mediagoblin/user_pages/views.py:238
+#: mediagoblin/user_pages/views.py:248
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr "\"%s\" ja és a la col.lecció \"%s\""
-#: mediagoblin/user_pages/views.py:253
+#: mediagoblin/user_pages/views.py:264
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr "\"%s\" afegir a la col.lecció \"%s\""
-#: mediagoblin/user_pages/views.py:261
-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:292
-msgid ""
-"Some of the files with this entry seem to be missing. Deleting anyway."
-msgstr "Sembla que falten alguns arxius amb aquesta entrada. Tot i així s'eliminen."
-
-#: mediagoblin/user_pages/views.py:297
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
msgstr "Has esborrat el mitjà"
-#: mediagoblin/user_pages/views.py:304
+#: mediagoblin/user_pages/views.py:293
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:312
+#: mediagoblin/user_pages/views.py:301
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:370
+#: mediagoblin/user_pages/views.py:375
msgid "You deleted the item from the collection."
msgstr "Has esborrat l'element de la col.lecció"
-#: mediagoblin/user_pages/views.py:374
+#: mediagoblin/user_pages/views.py:379
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:384
+#: mediagoblin/user_pages/views.py:389
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:417
+#: mediagoblin/user_pages/views.py:422
#, python-format
msgid "You deleted the collection \"%s\""
msgstr "Has esborrat la col.lecció \"%s\""
-#: mediagoblin/user_pages/views.py:424
+#: mediagoblin/user_pages/views.py:429
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:434
+#: mediagoblin/user_pages/views.py:439
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/da/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/da/LC_MESSAGES/mediagoblin.mo
index 9d9955ce..6b6827f0 100644
--- a/mediagoblin/i18n/da/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/da/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/da/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/da/LC_MESSAGES/mediagoblin.po
index c0677f43..8494aa60 100644
--- a/mediagoblin/i18n/da/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/da/LC_MESSAGES/mediagoblin.po
@@ -1,5 +1,5 @@
# Translations template for PROJECT.
-# Copyright (C) 2012 ORGANIZATION
+# Copyright (C) 2013 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
@@ -10,8 +10,8 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://issues.mediagoblin.org/\n"
-"POT-Creation-Date: 2012-12-20 09:18-0600\n"
-"PO-Revision-Date: 2012-12-20 15:14+0000\n"
+"POT-Creation-Date: 2013-03-04 18:04-0600\n"
+"PO-Revision-Date: 2013-03-05 00:04+0000\n"
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
@@ -21,82 +21,96 @@ msgstr ""
"Language: da\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:41
+#: mediagoblin/auth/forms.py:28
+msgid "Invalid User name or email address."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:29
+msgid "This field does not take email addresses."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:30
+msgid "This field requires an email address."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:52 mediagoblin/auth/forms.py:67
msgid "Username"
msgstr "Brugernavn"
-#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:45
+#: mediagoblin/auth/forms.py:56 mediagoblin/auth/forms.py:71
msgid "Password"
msgstr "Kodeord"
-#: mediagoblin/auth/forms.py:34
+#: mediagoblin/auth/forms.py:60
msgid "Email address"
msgstr "Email adresse"
-#: mediagoblin/auth/forms.py:51
+#: mediagoblin/auth/forms.py:78
msgid "Username or email"
msgstr "Brugernavn eller email"
-#: mediagoblin/auth/forms.py:58
-msgid "Incorrect input"
-msgstr "Forkert input"
-
-#: mediagoblin/auth/views.py:55
+#: mediagoblin/auth/views.py:54
msgid "Sorry, registration is disabled on this instance."
msgstr "Desværre, registrering er ikke muligt på denne instans"
-#: mediagoblin/auth/views.py:75
+#: mediagoblin/auth/views.py:68
msgid "Sorry, a user with that name already exists."
msgstr "Desværre, det brugernavn er allerede brugt"
-#: mediagoblin/auth/views.py:79
+#: mediagoblin/auth/views.py:72
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:182
+#: mediagoblin/auth/views.py:174
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:188
+#: mediagoblin/auth/views.py:180
msgid "The verification key or user id is incorrect"
msgstr "Bekræftelsesnøglen eller brugerid er forkert"
-#: mediagoblin/auth/views.py:206
+#: mediagoblin/auth/views.py:198
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:214
+#: mediagoblin/auth/views.py:206
msgid "You've already verified your email address!"
msgstr "Du har allerede bekræftet din email adresse!"
-#: mediagoblin/auth/views.py:227
+#: mediagoblin/auth/views.py:219
msgid "Resent your verification email."
msgstr "Email til godkendelse sendt igen."
-#: mediagoblin/auth/views.py:263
+#: mediagoblin/auth/views.py:250
+msgid ""
+"If that email address (case sensitive!) is registered an email has been sent"
+" with instructions on how to change your password."
+msgstr ""
+
+#: mediagoblin/auth/views.py:261
+msgid "Couldn't find someone with that username."
+msgstr ""
+
+#: mediagoblin/auth/views.py:264
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/auth/views.py:273
+#: mediagoblin/auth/views.py:271
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/auth/views.py:285
-msgid "Couldn't find someone with that username or email."
-msgstr "Vi kunne ikke dit brugernavn eller email."
-
-#: mediagoblin/auth/views.py:333
+#: mediagoblin/auth/views.py:328
msgid "You can now log in using your new password."
msgstr "Du kan nu logge ind med dit nye kodeord."
-#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:82
+#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:93
#: mediagoblin/submit/forms.py:28 mediagoblin/submit/forms.py:47
-#: mediagoblin/user_pages/forms.py:40
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr "Titel"
@@ -105,8 +119,8 @@ msgid "Description of this work"
msgstr "Beskrivelse af arbejdet"
#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:52
-#: mediagoblin/edit/forms.py:86 mediagoblin/submit/forms.py:32
-#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:44
+#: mediagoblin/edit/forms.py:97 mediagoblin/submit/forms.py:32
+#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:49
msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
@@ -121,11 +135,11 @@ msgstr "Tags"
msgid "Separate tags by commas."
msgstr "Separer tags med kommaer."
-#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:90
+#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:101
msgid "Slug"
msgstr ""
-#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:91
+#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:102
msgid "The slug can't be empty"
msgstr ""
@@ -164,65 +178,81 @@ msgstr "Skriv dit gamle kodeord for at bevise det er din konto."
msgid "New password"
msgstr "Ny kodeord"
-#: mediagoblin/edit/forms.py:71
+#: mediagoblin/edit/forms.py:74
+msgid "License preference"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:80
+msgid "This will be your default license on upload forms."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:82
msgid "Email me when others comment on my media"
msgstr "Email mig når andre kommenterer på mine medier"
-#: mediagoblin/edit/forms.py:83
+#: mediagoblin/edit/forms.py:94
msgid "The title can't be empty"
msgstr "Titlen kan ikke være tom"
-#: mediagoblin/edit/forms.py:85 mediagoblin/submit/forms.py:50
-#: mediagoblin/user_pages/forms.py:43
+#: mediagoblin/edit/forms.py:96 mediagoblin/submit/forms.py:50
+#: mediagoblin/user_pages/forms.py:48
msgid "Description of this collection"
msgstr "Beskrivelse af denne samling"
-#: mediagoblin/edit/forms.py:92
+#: mediagoblin/edit/forms.py:103
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/views.py:65
+#: mediagoblin/edit/views.py:66
msgid "An entry with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:86
+#: mediagoblin/edit/views.py:85
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:156
+#: mediagoblin/edit/views.py:155
#, python-format
msgid "You added the attachment %s!"
msgstr ""
-#: mediagoblin/edit/views.py:181
+#: mediagoblin/edit/views.py:182
+msgid "You can only edit your own profile."
+msgstr ""
+
+#: mediagoblin/edit/views.py:188
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:197
+#: mediagoblin/edit/views.py:204
msgid "Profile changes saved"
msgstr "Profilændringer gemt"
-#: mediagoblin/edit/views.py:226 mediagoblin/edit/views.py:246
+#: mediagoblin/edit/views.py:241
+msgid "Wrong password"
+msgstr "Forkert kodeord"
+
+#: mediagoblin/edit/views.py:252
msgid "Account settings saved"
msgstr "Kontoindstillinger gemt"
-#: mediagoblin/edit/views.py:251
-msgid "Wrong password"
-msgstr "Forkert kodeord"
+#: mediagoblin/edit/views.py:286
+msgid "You need to confirm the deletion of your account."
+msgstr ""
-#: mediagoblin/edit/views.py:287 mediagoblin/submit/views.py:211
-#: mediagoblin/user_pages/views.py:210
+#: mediagoblin/edit/views.py:322 mediagoblin/submit/views.py:142
+#: mediagoblin/user_pages/views.py:214
#, python-format
msgid "You already have a collection called \"%s\"!"
msgstr "Du har allerede en samling ved navn \"%s\"!"
-#: mediagoblin/edit/views.py:291
+#: mediagoblin/edit/views.py:326
msgid "A collection with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:308
+#: mediagoblin/edit/views.py:343
msgid "You are editing another user's collection. Proceed with caution."
msgstr "Du er ved at ændre en anden bruger's samling. Pas på."
@@ -238,54 +268,62 @@ msgstr ""
msgid "However, old link directory symlink found; removed.\n"
msgstr ""
-#: mediagoblin/media_types/__init__.py:60
-#: mediagoblin/media_types/__init__.py:101
+#: 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:61
+#: mediagoblin/media_types/__init__.py:102
msgid "Sorry, I don't support that file type :("
msgstr "Desværre, jeg understøtter ikke den filtype :("
-#: mediagoblin/media_types/video/processing.py:35
+#: mediagoblin/media_types/video/processing.py:36
msgid "Video transcoding failed"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:26
-msgid "Client ID"
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
+msgid "Location"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:28
-msgid "Next URL"
-msgstr "Næste URL"
+#: 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/oauth/forms.py:30
+#: mediagoblin/plugins/oauth/forms.py:29
msgid "Allow"
msgstr "Tillad"
-#: mediagoblin/plugins/oauth/forms.py:31
+#: mediagoblin/plugins/oauth/forms.py:30
msgid "Deny"
msgstr "Forbyd"
-#: mediagoblin/plugins/oauth/forms.py:35
+#: mediagoblin/plugins/oauth/forms.py:34
msgid "Name"
msgstr "Navn"
-#: mediagoblin/plugins/oauth/forms.py:36
+#: mediagoblin/plugins/oauth/forms.py:35
msgid "The name of the OAuth client"
msgstr "Navnet af OAuth klienten"
-#: mediagoblin/plugins/oauth/forms.py:37
+#: mediagoblin/plugins/oauth/forms.py:36
msgid "Description"
msgstr "Beskrivelse"
-#: mediagoblin/plugins/oauth/forms.py:39
+#: 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:41
+#: mediagoblin/plugins/oauth/forms.py:40
msgid "Type"
msgstr "Type"
-#: mediagoblin/plugins/oauth/forms.py:46
+#: 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"
@@ -295,25 +333,40 @@ msgid ""
" JavaScript client)."
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:53
+#: mediagoblin/plugins/oauth/forms.py:52
msgid "Redirect URI"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:55
+#: 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:67
+#: 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:60
+#: mediagoblin/plugins/oauth/views.py:59
msgid "The client {0} has been registered!"
msgstr "Klienten {0} er blevet registreret!"
-#: mediagoblin/processing/__init__.py:138
+#: 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/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:172
msgid "Invalid file given for media type."
msgstr "Forkert fil for medietypen."
@@ -321,113 +374,110 @@ msgstr "Forkert fil for medietypen."
msgid "File"
msgstr "Fil"
-#: mediagoblin/submit/views.py:57
+#: mediagoblin/submit/views.py:51
msgid "You must provide a file."
msgstr "Du må give mig en fil"
-#: mediagoblin/submit/views.py:164
+#: mediagoblin/submit/views.py:97
msgid "Woohoo! Submitted!"
msgstr "Juhuu! Delt!"
-#: mediagoblin/submit/views.py:215
+#: mediagoblin/submit/views.py:146
#, python-format
msgid "Collection \"%s\" added!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:48
-msgid "MediaGoblin logo"
-msgstr "MediaGoblin logo"
-
-#: mediagoblin/templates/mediagoblin/base.html:54
-#, python-format
-msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
-msgstr ""
+#: mediagoblin/templates/mediagoblin/base.html:64
+msgid "Verify your email!"
+msgstr "Bekræft din email!"
-#: mediagoblin/templates/mediagoblin/base.html:60
+#: mediagoblin/templates/mediagoblin/base.html:65
msgid "log out"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:62
-#: mediagoblin/templates/mediagoblin/root.html:28
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:151
-msgid "Add media"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:68
-msgid "Verify your email!"
-msgstr "Bekræft din email!"
-
-#: mediagoblin/templates/mediagoblin/base.html:73
+#: mediagoblin/templates/mediagoblin/base.html:70
#: mediagoblin/templates/mediagoblin/auth/login.html:28
#: mediagoblin/templates/mediagoblin/auth/login.html:36
#: mediagoblin/templates/mediagoblin/auth/login.html:54
msgid "Log in"
msgstr "Log ind"
-#: mediagoblin/templates/mediagoblin/base.html:87
-msgid ""
-"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
-"href=\"http://gnu.org/\">GNU</a> project."
+#: mediagoblin/templates/mediagoblin/base.html:79
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:86
+msgid "Change account settings"
msgstr ""
#: mediagoblin/templates/mediagoblin/base.html:90
-#, 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."
+#: mediagoblin/templates/mediagoblin/base.html:105
+#: mediagoblin/templates/mediagoblin/admin/panel.html:21
+#: mediagoblin/templates/mediagoblin/admin/panel.html:26
+#: 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/error.html:24
-msgid "Image of goblin stressing out"
+#: mediagoblin/templates/mediagoblin/base.html:93
+msgid "Log out"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:25
-msgid "Actions"
+#: mediagoblin/templates/mediagoblin/base.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:156
+msgid "Add media"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:31
+#: mediagoblin/templates/mediagoblin/base.html:99
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
msgid "Create new collection"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:34
-msgid "Change account settings"
+#: mediagoblin/templates/mediagoblin/base.html:122
+#, 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/root.html:38
-#: mediagoblin/templates/mediagoblin/root.html:44
-#: mediagoblin/templates/mediagoblin/admin/panel.html:21
-#: mediagoblin/templates/mediagoblin/admin/panel.html:26
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
-msgid "Media processing panel"
+#: mediagoblin/templates/mediagoblin/base.html:125
+#, 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/root.html:51
+#: mediagoblin/templates/mediagoblin/error.html:24
+msgid "Image of goblin stressing out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/root.html:31
msgid "Explore"
msgstr "Udforsk"
-#: mediagoblin/templates/mediagoblin/root.html:53
+#: mediagoblin/templates/mediagoblin/root.html:33
msgid "Hi there, welcome to this MediaGoblin site!"
msgstr "Hey, velkommen til denne MediaGoblin side!"
-#: mediagoblin/templates/mediagoblin/root.html:55
+#: mediagoblin/templates/mediagoblin/root.html:35
msgid ""
"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
"extraordinarily great piece of media hosting software."
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:56
+#: mediagoblin/templates/mediagoblin/root.html:36
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/root.html:58
+#: mediagoblin/templates/mediagoblin/root.html:38
msgid "Don't have one yet? It's easy!"
msgstr "Har du ikke en endnu? Det er let!"
-#: mediagoblin/templates/mediagoblin/root.html:59
+#: mediagoblin/templates/mediagoblin/root.html:39
#, python-format
msgid ""
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Create an account at this site</a>\n"
@@ -435,7 +485,7 @@ msgid ""
" <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:67
+#: mediagoblin/templates/mediagoblin/root.html:47
msgid "Most recent media"
msgstr ""
@@ -541,41 +591,62 @@ msgid ""
"%(verification_url)s"
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 ""
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:43
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:159
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:175
msgid "Attachments"
msgstr ""
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
msgid "Add attachment"
msgstr ""
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:60
+#: 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:81
+#: 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:62
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:51
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
msgid "Save changes"
msgstr "Gem ændringer"
+#: 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:47
+#: 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
@@ -588,13 +659,17 @@ msgstr ""
msgid "Changing %(username)s's account settings"
msgstr ""
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
+msgid "Delete my account"
+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:35
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
#, python-format
msgid "Editing %(username)s's profile"
msgstr "Redigerer %(username)s profil"
@@ -610,7 +685,7 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
msgstr ""
@@ -633,7 +708,7 @@ msgid ""
msgstr ""
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:56
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:61
msgid "Original file"
msgstr ""
@@ -645,8 +720,8 @@ msgstr ""
#: 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:67
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
+#: 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 ""
@@ -691,21 +766,21 @@ msgstr ""
msgid "Object Height"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
msgid ""
-"Sorry, this video will not work because \n"
-"\t your web browser does not support HTML5 \n"
-"\t video."
+"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:43
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:47
msgid ""
"You can get a modern web browser that \n"
-"\t can play this video at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:69
msgid "WebM file (640p; VP8/Vorbis)"
msgstr ""
@@ -713,12 +788,6 @@ msgstr ""
msgid "Add a collection"
msgstr ""
-#: mediagoblin/templates/mediagoblin/submit/collection.html:30
-#: mediagoblin/templates/mediagoblin/submit/start.html:34
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-msgid "Add"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
msgid "Add your media"
@@ -735,12 +804,12 @@ 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:87
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
msgid "Edit"
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:91
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
msgid "Delete"
msgstr ""
@@ -750,11 +819,6 @@ msgstr ""
msgid "Really delete %(title)s?"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:47
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Delete permanently"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:31
#, python-format
msgid "Really remove %(media_title)s from %(collection_title)s?"
@@ -764,6 +828,16 @@ msgstr ""
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 ""
@@ -776,56 +850,53 @@ msgstr ""
msgid "%(username)s's media"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:37
+#: 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:46
+#: 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:102
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:94
msgid "Add a comment"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:109
-msgid ""
-"You can use <a "
-"href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> for"
-" formatting."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:113
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:102
msgid "Add this comment"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:123
msgid "at"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:152
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:144
#, python-format
msgid ""
"<h3>Added on</h3>\n"
" <p>%(date)s</p>"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:202
-msgid "Add media to collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
#, python-format
-msgid "Add %(title)s to collection"
+msgid "Add “%(media_title)s†to a collection"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:51
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
msgstr ""
@@ -887,27 +958,31 @@ msgstr ""
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:101
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:100
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:117
msgid "Edit profile"
msgstr "Ret profil"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:105
msgid "This user hasn't filled in their profile (yet)."
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:124
+msgid "Browse collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:137
#, python-format
msgid "View all of %(username)s's media"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:145
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:150
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:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:162
#: 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..."
@@ -917,28 +992,24 @@ msgstr ""
msgid "(remove)"
msgstr ""
-#: mediagoblin/templates/mediagoblin/utils/collections.html:20
-#, python-format
-msgid "In collections (%(collected)s)"
+#: 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/geolocation_map.html:25
-msgid "Location"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/utils/geolocation_map.html:53
-#, python-format
-msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
msgstr ""
@@ -969,49 +1040,64 @@ msgstr ""
msgid "Tagged with"
msgstr ""
-#: mediagoblin/tools/exif.py:78
+#: mediagoblin/tools/exif.py:80
msgid "Could not read the image file."
msgstr ""
-#: mediagoblin/tools/response.py:30
+#: mediagoblin/tools/response.py:35
msgid "Oops!"
msgstr "Hovsa!"
-#: mediagoblin/tools/response.py:31
+#: mediagoblin/tools/response.py:36
msgid "An error occured"
msgstr ""
-#: mediagoblin/tools/response.py:46
+#: mediagoblin/tools/response.py:51
msgid "Operation not allowed"
msgstr ""
-#: mediagoblin/tools/response.py:47
+#: mediagoblin/tools/response.py:52
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:55
+#: mediagoblin/tools/response.py:60
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/user_pages/forms.py:28
+#: 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\">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:32
+#: 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:35
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:40
msgid "-- Select --"
msgstr ""
-#: mediagoblin/user_pages/forms.py:37
+#: mediagoblin/user_pages/forms.py:42
msgid "Include a note"
msgstr ""
@@ -1019,74 +1105,69 @@ msgstr ""
msgid "commented on your post"
msgstr ""
-#: mediagoblin/user_pages/views.py:156
+#: mediagoblin/user_pages/views.py:166
msgid "Oops, your comment was empty."
msgstr ""
-#: mediagoblin/user_pages/views.py:162
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
msgstr ""
-#: mediagoblin/user_pages/views.py:230
+#: mediagoblin/user_pages/views.py:197
+msgid "Please check your entries and try again."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:237
msgid "You have to select or add a collection"
msgstr ""
-#: mediagoblin/user_pages/views.py:238
+#: mediagoblin/user_pages/views.py:248
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:253
+#: mediagoblin/user_pages/views.py:264
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:261
-msgid "Please check your entries and try again."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:292
-msgid ""
-"Some of the files with this entry seem to be missing. Deleting anyway."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:297
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
msgstr ""
-#: mediagoblin/user_pages/views.py:304
+#: mediagoblin/user_pages/views.py:293
msgid "The media was not deleted because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/user_pages/views.py:312
+#: mediagoblin/user_pages/views.py:301
msgid "You are about to delete another user's media. Proceed with caution."
msgstr ""
-#: mediagoblin/user_pages/views.py:370
+#: mediagoblin/user_pages/views.py:375
msgid "You deleted the item from the collection."
msgstr ""
-#: mediagoblin/user_pages/views.py:374
+#: mediagoblin/user_pages/views.py:379
msgid "The item was not removed because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/user_pages/views.py:384
+#: mediagoblin/user_pages/views.py:389
msgid ""
"You are about to delete an item from another user's collection. Proceed with"
" caution."
msgstr ""
-#: mediagoblin/user_pages/views.py:417
+#: mediagoblin/user_pages/views.py:422
#, python-format
msgid "You deleted the collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:424
+#: mediagoblin/user_pages/views.py:429
msgid ""
"The collection was not deleted because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/user_pages/views.py:434
+#: mediagoblin/user_pages/views.py:439
msgid ""
"You are about to delete another user's collection. Proceed with caution."
msgstr ""
diff --git a/mediagoblin/i18n/de/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/de/LC_MESSAGES/mediagoblin.mo
index 6374be42..5ae794fa 100644
--- a/mediagoblin/i18n/de/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/de/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/de/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/de/LC_MESSAGES/mediagoblin.po
index d3a56821..b3d82ee9 100644
--- a/mediagoblin/i18n/de/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/de/LC_MESSAGES/mediagoblin.po
@@ -1,13 +1,14 @@
# Translations template for PROJECT.
-# Copyright (C) 2012 ORGANIZATION
+# Copyright (C) 2013 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
# <benjamin@lebsanft.org>, 2011.
# <cwebber@dustycloud.org>, 2011.
# Elrond <elrond+mediagoblin.org@samba-tng.org>, 2011-2012.
+# Elrond <elrond+mediagoblin.org@samba-tng.org>, 2013.
# <jakob.kramer@gmx.de>, 2011, 2012.
-# Jakob Kramer <jakob.kramer@gmx.de>, 2012.
+# Jakob Kramer <jakob.kramer@gmx.de>, 2012-2013.
# Jan-Christoph Borchardt <JanCBorchardt@fsfe.org>, 2011.
# Jan-Christoph Borchardt <jan@unhosted.org>, 2011, 2012.
# <kyoo@kyoo.ch>, 2011.
@@ -20,9 +21,9 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://issues.mediagoblin.org/\n"
-"POT-Creation-Date: 2012-12-20 09:18-0600\n"
-"PO-Revision-Date: 2012-12-20 15:14+0000\n"
-"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
+"POT-Creation-Date: 2013-03-04 18:04-0600\n"
+"PO-Revision-Date: 2013-03-07 13:16+0000\n"
+"Last-Translator: Elrond <elrond+mediagoblin.org@samba-tng.org>\n"
"Language-Team: German (http://www.transifex.com/projects/p/mediagoblin/language/de/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -31,82 +32,96 @@ msgstr ""
"Language: de\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:41
+#: mediagoblin/auth/forms.py:28
+msgid "Invalid User name or email address."
+msgstr "Ungültiger Benutzername oder E-Mail-Adresse."
+
+#: mediagoblin/auth/forms.py:29
+msgid "This field does not take email addresses."
+msgstr "Dieses Feld akzeptiert keine E-Mail-Adressen."
+
+#: mediagoblin/auth/forms.py:30
+msgid "This field requires an email address."
+msgstr "Dieses Feld benötigt eine E-Mail-Adresse."
+
+#: mediagoblin/auth/forms.py:52 mediagoblin/auth/forms.py:67
msgid "Username"
msgstr "Benutzername"
-#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:45
+#: mediagoblin/auth/forms.py:56 mediagoblin/auth/forms.py:71
msgid "Password"
msgstr "Passwort"
-#: mediagoblin/auth/forms.py:34
+#: mediagoblin/auth/forms.py:60
msgid "Email address"
msgstr "E-Mail-Adresse"
-#: mediagoblin/auth/forms.py:51
+#: mediagoblin/auth/forms.py:78
msgid "Username or email"
msgstr "Benutzername oder E-Mail-Adresse"
-#: mediagoblin/auth/forms.py:58
-msgid "Incorrect input"
-msgstr "Fehlerhafte Eingabe"
-
-#: mediagoblin/auth/views.py:55
+#: mediagoblin/auth/views.py:54
msgid "Sorry, registration is disabled on this instance."
msgstr "Benutzerregistrierung ist auf diesem Server leider deaktiviert."
-#: mediagoblin/auth/views.py:75
+#: mediagoblin/auth/views.py:68
msgid "Sorry, a user with that name already exists."
msgstr "Leider gibt es bereits einen Benutzer mit diesem Namen."
-#: mediagoblin/auth/views.py:79
+#: mediagoblin/auth/views.py:72
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:182
+#: mediagoblin/auth/views.py:174
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."
-#: mediagoblin/auth/views.py:188
+#: mediagoblin/auth/views.py:180
msgid "The verification key or user id is incorrect"
msgstr "Der Aktivierungsschlüssel oder die Nutzerkennung ist falsch."
-#: mediagoblin/auth/views.py:206
+#: mediagoblin/auth/views.py:198
msgid "You must be logged in so we know who to send the email to!"
msgstr "Du musst angemeldet sein, damit wir wissen, wer die Email bekommt."
-#: mediagoblin/auth/views.py:214
+#: mediagoblin/auth/views.py:206
msgid "You've already verified your email address!"
msgstr "Deine E-Mail-Adresse wurde bereits aktiviert."
-#: mediagoblin/auth/views.py:227
+#: mediagoblin/auth/views.py:219
msgid "Resent your verification email."
msgstr "Aktivierungsmail wurde erneut versandt."
-#: mediagoblin/auth/views.py:263
+#: mediagoblin/auth/views.py:250
+msgid ""
+"If that email address (case sensitive!) is registered an email has been sent"
+" with instructions on how to change your password."
+msgstr "Falls jemand mit dieser E-Mail-Adresse (Groß- und Kleinschreibung wird unterschieden!) registriert ist, wurde eine E-Mail mit Anleitungen verschickt, wie Du Dein Passwort ändern kannst."
+
+#: mediagoblin/auth/views.py:261
+msgid "Couldn't find someone with that username."
+msgstr "Es konnte niemand mit diesem Benutzernamen gefunden werden."
+
+#: mediagoblin/auth/views.py:264
msgid ""
"An email has been sent with instructions on how to change your password."
msgstr "Es wurde eine E-Mail mit der Anleitung zur Änderung des Passwortes an Dich gesendet."
-#: mediagoblin/auth/views.py:273
+#: mediagoblin/auth/views.py:271
msgid ""
"Could not send password recovery email as your username is inactive or your "
"account's email address has not been verified."
msgstr "Die E-Mail zur Wiederherstellung des Passworts konnte nicht verschickt werden, weil dein Benutzername inaktiv oder deine E-Mail-Adresse noch nicht aktiviert wurde."
-#: mediagoblin/auth/views.py:285
-msgid "Couldn't find someone with that username or email."
-msgstr "Es konnte niemand mit diesem Nutzernamen oder Email gefunden werden."
-
-#: mediagoblin/auth/views.py:333
+#: mediagoblin/auth/views.py:328
msgid "You can now log in using your new password."
msgstr "Du kannst dich jetzt mit deinem neuen Passwort anmelden."
-#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:82
+#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:93
#: mediagoblin/submit/forms.py:28 mediagoblin/submit/forms.py:47
-#: mediagoblin/user_pages/forms.py:40
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr "Titel"
@@ -115,8 +130,8 @@ msgid "Description of this work"
msgstr "Beschreibung des Werkes"
#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:52
-#: mediagoblin/edit/forms.py:86 mediagoblin/submit/forms.py:32
-#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:44
+#: mediagoblin/edit/forms.py:97 mediagoblin/submit/forms.py:32
+#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:49
msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
@@ -131,11 +146,11 @@ msgstr "Schlagwörter"
msgid "Separate tags by commas."
msgstr "Kommaseparierte Schlagwörter"
-#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:90
+#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:101
msgid "Slug"
msgstr "Kurztitel"
-#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:91
+#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:102
msgid "The slug can't be empty"
msgstr "Bitte gib einen Kurztitel ein"
@@ -174,65 +189,81 @@ msgstr "Gib dein altes Passwort ein, um zu bestätigen, dass du dieses Konto bes
msgid "New password"
msgstr "Neues Passwort"
-#: mediagoblin/edit/forms.py:71
+#: mediagoblin/edit/forms.py:74
+msgid "License preference"
+msgstr "Bevorzugte Lizenz"
+
+#: mediagoblin/edit/forms.py:80
+msgid "This will be your default license on upload forms."
+msgstr "Dies wird Deine Standardlizenz in den Upload-Forumularen sein."
+
+#: mediagoblin/edit/forms.py:82
msgid "Email me when others comment on my media"
msgstr "Mir eine E-Mail schicken, wenn andere meine Medien kommentieren"
-#: mediagoblin/edit/forms.py:83
+#: mediagoblin/edit/forms.py:94
msgid "The title can't be empty"
msgstr "Der Titel kann nicht leer sein"
-#: mediagoblin/edit/forms.py:85 mediagoblin/submit/forms.py:50
-#: mediagoblin/user_pages/forms.py:43
+#: mediagoblin/edit/forms.py:96 mediagoblin/submit/forms.py:50
+#: mediagoblin/user_pages/forms.py:48
msgid "Description of this collection"
msgstr "Beschreibung dieser Sammlung"
-#: mediagoblin/edit/forms.py:92
+#: mediagoblin/edit/forms.py:103
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/views.py:65
+#: mediagoblin/edit/views.py:66
msgid "An entry with that slug already exists for this user."
msgstr "Diesen Kurztitel hast du bereits vergeben."
-#: mediagoblin/edit/views.py:86
+#: mediagoblin/edit/views.py:85
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:156
+#: mediagoblin/edit/views.py:155
#, python-format
msgid "You added the attachment %s!"
msgstr "Sie haben den Anhang %s hinzugefügt!"
-#: mediagoblin/edit/views.py:181
+#: mediagoblin/edit/views.py:182
+msgid "You can only edit your own profile."
+msgstr "Du kannst nur dein eigenes Profil bearbeiten."
+
+#: mediagoblin/edit/views.py:188
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:197
+#: mediagoblin/edit/views.py:204
msgid "Profile changes saved"
msgstr "Das Profil wurde aktualisiert"
-#: mediagoblin/edit/views.py:226 mediagoblin/edit/views.py:246
+#: mediagoblin/edit/views.py:241
+msgid "Wrong password"
+msgstr "Falsches Passwort"
+
+#: mediagoblin/edit/views.py:252
msgid "Account settings saved"
msgstr "Kontoeinstellungen gespeichert"
-#: mediagoblin/edit/views.py:251
-msgid "Wrong password"
-msgstr "Falsches Passwort"
+#: mediagoblin/edit/views.py:286
+msgid "You need to confirm the deletion of your account."
+msgstr "Du musst die Löschung deines Kontos bestätigen."
-#: mediagoblin/edit/views.py:287 mediagoblin/submit/views.py:211
-#: mediagoblin/user_pages/views.py:210
+#: mediagoblin/edit/views.py:322 mediagoblin/submit/views.py:142
+#: mediagoblin/user_pages/views.py:214
#, python-format
msgid "You already have a collection called \"%s\"!"
-msgstr "Du hast bereits eine Sammlung mit Namen \"%s\"!"
+msgstr "Du hast bereits eine Sammlung mit Namen »%s«!"
-#: mediagoblin/edit/views.py:291
+#: mediagoblin/edit/views.py:326
msgid "A collection with that slug already exists for this user."
-msgstr "Eine Sammlung mit diesem Kürzel existiert bereits für diesen Benutzer."
+msgstr "Eine Sammlung mit diesem Kurztitel existiert bereits für diesen Benutzer."
-#: mediagoblin/edit/views.py:308
+#: mediagoblin/edit/views.py:343
msgid "You are editing another user's collection. Proceed with caution."
msgstr "Du bearbeitest die Sammlung eines anderen Benutzers. Sei vorsichtig."
@@ -248,54 +279,62 @@ msgstr "Für dieses Theme gibt es kein asset-Verzeichnis\n"
msgid "However, old link directory symlink found; removed.\n"
msgstr "Trotzdem wurde eine alte Verknüpfung gefunden; sie wurde entfernt\n"
-#: mediagoblin/media_types/__init__.py:60
-#: mediagoblin/media_types/__init__.py:101
+#: 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 "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:61
+#: mediagoblin/media_types/__init__.py:102
msgid "Sorry, I don't support that file type :("
msgstr "Entschuldigung, dieser Dateityp wird nicht unterstützt."
-#: mediagoblin/media_types/video/processing.py:35
+#: mediagoblin/media_types/video/processing.py:36
msgid "Video transcoding failed"
msgstr "Videokonvertierung fehlgeschlagen"
-#: mediagoblin/plugins/oauth/forms.py:26
-msgid "Client ID"
-msgstr "Client-ID"
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
+msgid "Location"
+msgstr "Aufnahmeort"
-#: mediagoblin/plugins/oauth/forms.py:28
-msgid "Next URL"
-msgstr "Nächste URL"
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:52
+#, python-format
+msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
+msgstr "In <a href=\"%(osm_url)s\">OpenStreetMap</a> öffnen"
-#: mediagoblin/plugins/oauth/forms.py:30
+#: mediagoblin/plugins/oauth/forms.py:29
msgid "Allow"
msgstr "Erlauben"
-#: mediagoblin/plugins/oauth/forms.py:31
+#: mediagoblin/plugins/oauth/forms.py:30
msgid "Deny"
msgstr "Verweigern"
-#: mediagoblin/plugins/oauth/forms.py:35
+#: mediagoblin/plugins/oauth/forms.py:34
msgid "Name"
msgstr "Name"
-#: mediagoblin/plugins/oauth/forms.py:36
+#: mediagoblin/plugins/oauth/forms.py:35
msgid "The name of the OAuth client"
msgstr "Der Name des OAuth-Clients"
-#: mediagoblin/plugins/oauth/forms.py:37
+#: mediagoblin/plugins/oauth/forms.py:36
msgid "Description"
msgstr "Beschreibung"
-#: mediagoblin/plugins/oauth/forms.py:39
+#: mediagoblin/plugins/oauth/forms.py:38
msgid ""
"This will be visible to users allowing your\n"
" application to authenticate as them."
msgstr "Dies wird für Benutzer sichtbar sein, die deiner\nAnwendung erlauben, sich als sie zu authentifizieren.."
-#: mediagoblin/plugins/oauth/forms.py:41
+#: mediagoblin/plugins/oauth/forms.py:40
msgid "Type"
msgstr "Typ"
-#: mediagoblin/plugins/oauth/forms.py:46
+#: 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"
@@ -305,25 +344,40 @@ msgid ""
" JavaScript client)."
msgstr "<strong>Vertraulich</strong> - Der Client kann\n Anfragen an die GNU MediaGoblin Instanz stellen, die nicht durch den \n Benutzer-Agent (z.B. serverseitiger Client) unterbunden werden können.<br />\n <strong>Öffentlich</strong> - Der Client kann keine vertraulichen \n Anfragen an die GNU MediaGoblin Instanz stellen (z.B. clientseitiger\n JavaScript Client)."
-#: mediagoblin/plugins/oauth/forms.py:53
+#: mediagoblin/plugins/oauth/forms.py:52
msgid "Redirect URI"
msgstr "Weiterleitungs-URI"
-#: mediagoblin/plugins/oauth/forms.py:55
+#: mediagoblin/plugins/oauth/forms.py:54
msgid ""
"The redirect URI for the applications, this field\n"
" is <strong>required</strong> for public clients."
msgstr "Die Weiterleitungs-URI für die Anwendung, dieses Feld\n ist <strong>Pflicht</strong> für öffentliche Clients."
-#: mediagoblin/plugins/oauth/forms.py:67
+#: mediagoblin/plugins/oauth/forms.py:66
msgid "This field is required for public clients"
msgstr "Dieses Feld ist Pflicht für öffentliche Clients"
-#: mediagoblin/plugins/oauth/views.py:60
+#: mediagoblin/plugins/oauth/views.py:59
msgid "The client {0} has been registered!"
msgstr "Client {0} wurde registriert!"
-#: mediagoblin/processing/__init__.py:138
+#: 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/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr "Hinzufügen"
+
+#: mediagoblin/processing/__init__.py:172
msgid "Invalid file given for media type."
msgstr "Die Datei stimmt nicht mit dem gewählten Medientyp überein."
@@ -331,56 +385,74 @@ msgstr "Die Datei stimmt nicht mit dem gewählten Medientyp überein."
msgid "File"
msgstr "Datei"
-#: mediagoblin/submit/views.py:57
+#: mediagoblin/submit/views.py:51
msgid "You must provide a file."
msgstr "Du musst eine Datei angeben."
-#: mediagoblin/submit/views.py:164
+#: mediagoblin/submit/views.py:97
msgid "Woohoo! Submitted!"
msgstr "JAAA! Geschafft!"
-#: mediagoblin/submit/views.py:215
+#: mediagoblin/submit/views.py:146
#, python-format
msgid "Collection \"%s\" added!"
-msgstr "Sammlung \"%s\" hinzugefügt!"
+msgstr "Sammlung »%s« hinzugefügt!"
-#: mediagoblin/templates/mediagoblin/base.html:48
-msgid "MediaGoblin logo"
-msgstr "MediaGoblin Logo"
-
-#: mediagoblin/templates/mediagoblin/base.html:54
-#, 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:64
+msgid "Verify your email!"
+msgstr "Bitte bestätige Deine E-Mail-Adresse!"
-#: mediagoblin/templates/mediagoblin/base.html:60
+#: mediagoblin/templates/mediagoblin/base.html:65
msgid "log out"
msgstr "abmelden"
-#: mediagoblin/templates/mediagoblin/base.html:62
-#: mediagoblin/templates/mediagoblin/root.html:28
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:151
-msgid "Add media"
-msgstr "Medien hinzufügen"
-
-#: mediagoblin/templates/mediagoblin/base.html:68
-msgid "Verify your email!"
-msgstr "Bitte bestätige Deine E-Mail-Adresse!"
-
-#: mediagoblin/templates/mediagoblin/base.html:73
+#: mediagoblin/templates/mediagoblin/base.html:70
#: mediagoblin/templates/mediagoblin/auth/login.html:28
#: mediagoblin/templates/mediagoblin/auth/login.html:36
#: mediagoblin/templates/mediagoblin/auth/login.html:54
msgid "Log in"
msgstr "Anmelden"
-#: mediagoblin/templates/mediagoblin/base.html:87
-msgid ""
-"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
-"href=\"http://gnu.org/\">GNU</a> project."
-msgstr "Diese Seite setzt das <a href=\"http://gnu.org/\">GNU</a>-Projekt <a href=\"http://mediagoblin.org/\">MediaGoblin</a> ein."
+#: mediagoblin/templates/mediagoblin/base.html:79
+#, 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:86
+msgid "Change account settings"
+msgstr "Kontoeinstellungen ändern"
#: mediagoblin/templates/mediagoblin/base.html:90
+#: mediagoblin/templates/mediagoblin/base.html:105
+#: mediagoblin/templates/mediagoblin/admin/panel.html:21
+#: mediagoblin/templates/mediagoblin/admin/panel.html:26
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
+msgid "Media processing panel"
+msgstr "Medienverarbeitung"
+
+#: mediagoblin/templates/mediagoblin/base.html:93
+msgid "Log out"
+msgstr "Abmelden"
+
+#: mediagoblin/templates/mediagoblin/base.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:156
+msgid "Add media"
+msgstr "Medien hinzufügen"
+
+#: mediagoblin/templates/mediagoblin/base.html:99
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
+msgid "Create new collection"
+msgstr "Neues Album erstellen"
+
+#: mediagoblin/templates/mediagoblin/base.html:122
+#, 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 "Läuft mit <a href=\"http://mediagoblin.org/\" title='Version %(version)s'>MediaGoblin</a>, einem <a href=\"http://gnu.org/\">GNU</a>-Projekt."
+
+#: mediagoblin/templates/mediagoblin/base.html:125
#, python-format
msgid ""
"Released under the <a "
@@ -392,52 +464,31 @@ msgstr "Veröffentlicht unter der <a href=\"http://www.fsf.org/licensing/license
msgid "Image of goblin stressing out"
msgstr "Bild eines gestressten Goblins"
-#: mediagoblin/templates/mediagoblin/root.html:25
-msgid "Actions"
-msgstr "Aktionen"
-
#: mediagoblin/templates/mediagoblin/root.html:31
-msgid "Create new collection"
-msgstr " Neues Album erstellen"
-
-#: mediagoblin/templates/mediagoblin/root.html:34
-msgid "Change account settings"
-msgstr "Kontoeinstellungen ändern"
-
-#: mediagoblin/templates/mediagoblin/root.html:38
-#: mediagoblin/templates/mediagoblin/root.html:44
-#: mediagoblin/templates/mediagoblin/admin/panel.html:21
-#: mediagoblin/templates/mediagoblin/admin/panel.html:26
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
-msgid "Media processing panel"
-msgstr "Medienverarbeitung"
-
-#: mediagoblin/templates/mediagoblin/root.html:51
msgid "Explore"
msgstr "Entdecken"
-#: mediagoblin/templates/mediagoblin/root.html:53
+#: mediagoblin/templates/mediagoblin/root.html:33
msgid "Hi there, welcome to this MediaGoblin site!"
msgstr "Hallo du, willkommen auf dieser MediaGoblin-Seite!"
-#: mediagoblin/templates/mediagoblin/root.html:55
+#: mediagoblin/templates/mediagoblin/root.html:35
msgid ""
"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
"extraordinarily great piece of media hosting software."
msgstr "Diese Webseite setzt <a href=\"http://mediagoblin.org\">MediaGoblin</a> ein, eine großartige Software für Medienhosting."
-#: mediagoblin/templates/mediagoblin/root.html:56
+#: mediagoblin/templates/mediagoblin/root.html:36
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, andere zu kommentieren und vieles mehr."
-#: mediagoblin/templates/mediagoblin/root.html:58
+#: mediagoblin/templates/mediagoblin/root.html:38
msgid "Don't have one yet? It's easy!"
msgstr "Hast du noch keinen? Das geht ganz einfach!"
-#: mediagoblin/templates/mediagoblin/root.html:59
+#: mediagoblin/templates/mediagoblin/root.html:39
#, python-format
msgid ""
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Create an account at this site</a>\n"
@@ -445,7 +496,7 @@ msgid ""
" <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
msgstr "<a class=\"button_action_highlight\" href=\"%(register_url)s\">Registriere dich auf dieser Seite</a> oder <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Installiere MediaGoblin auf deinem eigenen Server</a>"
-#: mediagoblin/templates/mediagoblin/root.html:67
+#: mediagoblin/templates/mediagoblin/root.html:47
msgid "Most recent media"
msgstr "Neuste Medien"
@@ -551,41 +602,62 @@ msgid ""
"%(verification_url)s"
msgstr "Hallo %(username)s,\n\num deinNutzerkonto bei GNU MediaGoblin zu aktivieren, musst du folgende Adresse in deinem Webbrowser öffnen:\n\n%(verification_url)s"
+#: 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 "Bearbeite Anhänge von %(media_title)s"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:43
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:159
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:175
msgid "Attachments"
msgstr "Anhänge"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
msgid "Add attachment"
msgstr "Anhang hinzufügen"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:60
+#: 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:81
+#: 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:62
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:51
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
msgid "Save changes"
msgstr "Änderungen speichern"
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
+#, python-format
+msgid "Really delete user '%(user_name)s' and all related media/comments?"
+msgstr "Soll das Konto »%(user_name)s« und alle zu ihm gehörigen Medien / Kommentare wirklich gelöscht werden?"
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:35
+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:47
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
+msgid "Delete permanently"
+msgstr "Dauerhaft löschen"
+
#: mediagoblin/templates/mediagoblin/edit/edit.html:23
#: mediagoblin/templates/mediagoblin/edit/edit.html:35
#, python-format
@@ -598,13 +670,17 @@ msgstr "%(media_title)s bearbeiten"
msgid "Changing %(username)s's account settings"
msgstr "%(username)ss Kontoeinstellungen ändern"
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
+msgid "Delete my account"
+msgstr "Mein Konto löschen"
+
#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:29
#, python-format
msgid "Editing %(collection_title)s"
msgstr "Bearbeite %(collection_title)s"
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:23
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
#, python-format
msgid "Editing %(username)s's profile"
msgstr "%(username)ss Profil bearbeiten"
@@ -620,7 +696,7 @@ 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/stl.html:136
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
msgstr "Download"
@@ -643,7 +719,7 @@ msgid ""
msgstr "Hol dir auf <a href=\"http://getfirefox.com\">http://getfirefox.com</a> einen modernen Webbrowser, der dieses Audiostück abspielen kann!"
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:56
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:61
msgid "Original file"
msgstr "Originaldatei"
@@ -655,8 +731,8 @@ msgstr "WebM-Datei (Vorbis-Codec)"
#: 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:67
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
+#: 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 "Bild für %(media_title)s"
@@ -672,7 +748,7 @@ msgstr "Perspektive"
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:116
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
msgid "Front"
-msgstr ""
+msgstr "Vorderseite"
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:121
@@ -687,35 +763,35 @@ 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:138
msgid "Download model"
-msgstr ""
+msgstr "Modell herunterladen"
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
msgid "File Format"
-msgstr ""
+msgstr "Dateiformat"
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
msgid "Object Height"
msgstr "Objekthöhe"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
msgid ""
-"Sorry, this video will not work because \n"
-"\t your web browser does not support HTML5 \n"
-"\t video."
+"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:43
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:47
msgid ""
"You can get a modern web browser that \n"
-"\t can play this video at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
+" 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:59
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:69
msgid "WebM file (640p; VP8/Vorbis)"
msgstr "WebM-Datei (640p; VP8/Vorbis)"
@@ -723,12 +799,6 @@ msgstr "WebM-Datei (640p; VP8/Vorbis)"
msgid "Add a collection"
msgstr "Eine Sammlung hinzufügen"
-#: mediagoblin/templates/mediagoblin/submit/collection.html:30
-#: mediagoblin/templates/mediagoblin/submit/start.html:34
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-msgid "Add"
-msgstr "Hinzufügen"
-
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
msgid "Add your media"
@@ -737,20 +807,20 @@ msgstr "Deine Medien"
#: 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)"
+msgstr "%(collection_title)s (ein Album von %(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 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:87
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
msgid "Edit"
msgstr "Bearbeiten"
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:91
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
msgid "Delete"
msgstr "Löschen"
@@ -760,20 +830,25 @@ msgstr "Löschen"
msgid "Really delete %(title)s?"
msgstr "Möchtest du %(title)s wirklich löschen?"
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:47
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Delete permanently"
-msgstr "Dauerhaft löschen"
-
#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:31
#, python-format
msgid "Really remove %(media_title)s from %(collection_title)s?"
-msgstr "Wirklich %(media_title)s aus %(collection_title)s entfernen?"
+msgstr "Wirklich »%(media_title)s« aus »%(collection_title)s« entfernen?"
#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:53
msgid "Remove"
msgstr "Entfernen"
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:21
+#, python-format
+msgid "%(username)s's collections"
+msgstr "Alben von %(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 "Alben von <a href=\"%(user_url)s\">%(username)s</a>"
+
#: mediagoblin/templates/mediagoblin/user_pages/comment_email.txt:19
#, python-format
msgid ""
@@ -786,56 +861,53 @@ msgstr "Hallo %(username)s,\n%(comment_author)s hat dein Medium (%(comment_url)s
msgid "%(username)s's media"
msgstr "%(username)ss Medien"
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:37
+#: 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 Medien mit dem Schlagwort <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 Medien"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
#, 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:102
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:94
msgid "Add a comment"
msgstr "Einen Kommentar schreiben"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:109
-msgid ""
-"You can use <a "
-"href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> for"
-" formatting."
-msgstr "Die Texte lassen sich durch <a href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> formatieren."
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:113
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:102
msgid "Add this comment"
msgstr "Kommentar absenden"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:123
msgid "at"
msgstr "um"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:152
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:144
#, python-format
msgid ""
"<h3>Added on</h3>\n"
" <p>%(date)s</p>"
msgstr "<h3>Veröffentlicht am</h3>\n <p>%(date)s</p>"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:202
-msgid "Add media to collection"
-msgstr "Medien zu einem Album hinzufügen"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
#, python-format
-msgid "Add %(title)s to collection"
-msgstr "%(title)s zur Sammlung hinzufügen"
+msgid "Add “%(media_title)s†to a collection"
+msgstr "»%(media_title)s« zu einem Album hinzufügen"
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:51
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
msgstr "+"
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
msgstr "Eine neue Sammlung hinzufügen"
@@ -897,27 +969,31 @@ msgstr "Wenn dir dieses Konto gehört und die Aktivierungsmail verloren gegangen
msgid "Here's a spot to tell others about yourself."
msgstr "Hier kannst Du Dich selbst beschreiben."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:101
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:100
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:117
msgid "Edit profile"
msgstr "Profil bearbeiten"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:105
msgid "This user hasn't filled in their profile (yet)."
msgstr "Dieser Benutzer hat (noch) keine Daten in seinem Profil."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:124
+msgid "Browse collections"
+msgstr "Sammlungen durchstöbern"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:137
#, python-format
msgid "View all of %(username)s's media"
msgstr "Alle Medien von %(username)s anschauen"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:145
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:150
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:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:162
#: 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..."
@@ -927,28 +1003,24 @@ msgstr "Scheinbar gibt es hier noch nichts …"
msgid "(remove)"
msgstr "(entfernen)"
-#: mediagoblin/templates/mediagoblin/utils/collections.html:20
-#, python-format
-msgid "In collections (%(collected)s)"
-msgstr "In den Sammlungen (%(collected)s)"
+#: mediagoblin/templates/mediagoblin/utils/collections.html:21
+msgid "Collected in"
+msgstr "In den Sammlungen"
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:40
+msgid "Add to a collection"
+msgstr "Zu einer Sammlung hinzufügen"
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
msgid "feed icon"
msgstr "Feed-Symbol"
#: 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/geolocation_map.html:25
-msgid "Location"
-msgstr "Aufnahmeort"
-
-#: mediagoblin/templates/mediagoblin/utils/geolocation_map.html:53
-#, python-format
-msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-msgstr "In <a href=\"%(osm_url)s\">OpenStreetMap</a> öffnen"
-
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
msgstr "Alle Rechte vorbehalten"
@@ -979,49 +1051,64 @@ msgstr "älter"
msgid "Tagged with"
msgstr "Schlagwörter"
-#: mediagoblin/tools/exif.py:78
+#: mediagoblin/tools/exif.py:80
msgid "Could not read the image file."
msgstr "Die Bilddatei konnte nicht gelesen werden."
-#: mediagoblin/tools/response.py:30
+#: mediagoblin/tools/response.py:35
msgid "Oops!"
msgstr "Hoppla!"
-#: mediagoblin/tools/response.py:31
+#: mediagoblin/tools/response.py:36
msgid "An error occured"
msgstr "Ein Fehler trat auf"
-#: mediagoblin/tools/response.py:46
+#: mediagoblin/tools/response.py:51
msgid "Operation not allowed"
msgstr "Funktion nicht erlaubt"
-#: mediagoblin/tools/response.py:47
+#: mediagoblin/tools/response.py:52
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 Rechte besitzt. Wolltest Du etwa schon wieder alle Nutzerkonten löschen?"
-#: mediagoblin/tools/response.py:55
+#: mediagoblin/tools/response.py:60
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 "Tut uns Leid, aber unter der angegebenen Adresse gibt es keine Seite!</p><p>Wenn du sicher bist, dass die Adresse stimmt, wurde die Seite eventuell verschoben oder gelöscht."
-#: mediagoblin/user_pages/forms.py:28
+#: 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\">Markdown</a> for"
+" formatting."
+msgstr "Die Texte lassen sich durch <a href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> formatieren."
+
+#: 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:32
+#: 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"
-#: mediagoblin/user_pages/forms.py:35
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr "Album"
+
+#: mediagoblin/user_pages/forms.py:40
msgid "-- Select --"
msgstr "-- Auswählen --"
-#: mediagoblin/user_pages/forms.py:37
+#: mediagoblin/user_pages/forms.py:42
msgid "Include a note"
msgstr "Notiz anfügen"
@@ -1029,74 +1116,69 @@ msgstr "Notiz anfügen"
msgid "commented on your post"
msgstr "hat dein Medium kommentiert"
-#: mediagoblin/user_pages/views.py:156
+#: mediagoblin/user_pages/views.py:166
msgid "Oops, your comment was empty."
msgstr "Hoppla, der Kommentartext fehlte."
-#: mediagoblin/user_pages/views.py:162
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
msgstr "Dein Kommentar wurde angenommen!"
-#: mediagoblin/user_pages/views.py:230
+#: mediagoblin/user_pages/views.py:197
+msgid "Please check your entries and try again."
+msgstr "Bitte prüfe deinen Einträge und versuche erneut."
+
+#: mediagoblin/user_pages/views.py:237
msgid "You have to select or add a collection"
msgstr "Du musst eine Sammlung auswählen oder hinzufügen"
-#: mediagoblin/user_pages/views.py:238
+#: mediagoblin/user_pages/views.py:248
#, python-format
msgid "\"%s\" already in collection \"%s\""
-msgstr "\"%s\" ist bereits in der Sammlung \"%s\""
+msgstr "»%s« ist bereits in der Sammlung »%s«"
-#: mediagoblin/user_pages/views.py:253
+#: mediagoblin/user_pages/views.py:264
#, python-format
msgid "\"%s\" added to collection \"%s\""
-msgstr "\"%s\" zur Sammlung \"%s\" hinzugefügt"
-
-#: mediagoblin/user_pages/views.py:261
-msgid "Please check your entries and try again."
-msgstr "Bitte prüfe deinen Einträge und versuche erneut."
-
-#: mediagoblin/user_pages/views.py:292
-msgid ""
-"Some of the files with this entry seem to be missing. Deleting anyway."
-msgstr "Manche Dateien dieses Eintrags scheinen zu fehlen. Es wird trotzdem gelöscht."
+msgstr "»%s« zur Sammlung »%s« hinzugefügt"
-#: mediagoblin/user_pages/views.py:297
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
msgstr "Du hast das Medium gelöscht."
-#: mediagoblin/user_pages/views.py:304
+#: mediagoblin/user_pages/views.py:293
msgid "The media was not deleted because you didn't check that you were sure."
msgstr "Das Medium wurde nicht gelöscht, da nicht angekreuzt hast, dass du es wirklich löschen möchtest."
-#: mediagoblin/user_pages/views.py:312
+#: mediagoblin/user_pages/views.py:301
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:370
+#: mediagoblin/user_pages/views.py:375
msgid "You deleted the item from the collection."
msgstr "Du hast das Objekt aus der Sammlung gelöscht."
-#: mediagoblin/user_pages/views.py:374
+#: mediagoblin/user_pages/views.py:379
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:384
+#: mediagoblin/user_pages/views.py:389
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 Nutzers zu entfernen. Sei vorsichtig."
-#: mediagoblin/user_pages/views.py:417
+#: mediagoblin/user_pages/views.py:422
#, python-format
msgid "You deleted the collection \"%s\""
-msgstr "Du hast die Sammlung \"%s\" gelöscht"
+msgstr "Du hast die Sammlung »%s« gelöscht"
-#: mediagoblin/user_pages/views.py:424
+#: mediagoblin/user_pages/views.py:429
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:434
+#: mediagoblin/user_pages/views.py:439
msgid ""
"You are about to delete another user's collection. Proceed with caution."
msgstr "Du bist dabei eine Sammlung eines anderen Nutzers zu entfernen. Sei vorsichtig."
diff --git a/mediagoblin/i18n/en/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/en/LC_MESSAGES/mediagoblin.po
index 3ac01f5a..6950f515 100644
--- a/mediagoblin/i18n/en/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/en/LC_MESSAGES/mediagoblin.po
@@ -1,14 +1,14 @@
# Translations template for PROJECT.
-# Copyright (C) 2012 ORGANIZATION
+# Copyright (C) 2013 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2012-12-20 10:11-0600\n"
+"POT-Creation-Date: 2013-03-11 17:21-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"
@@ -17,81 +17,95 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 0.9.6\n"
-#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:41
+#: mediagoblin/auth/forms.py:28
+msgid "Invalid User name or email address."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:29
+msgid "This field does not take email addresses."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:30
+msgid "This field requires an email address."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:52 mediagoblin/auth/forms.py:67
msgid "Username"
msgstr ""
-#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:45
+#: mediagoblin/auth/forms.py:56 mediagoblin/auth/forms.py:71
msgid "Password"
msgstr ""
-#: mediagoblin/auth/forms.py:34
+#: mediagoblin/auth/forms.py:60
msgid "Email address"
msgstr ""
-#: mediagoblin/auth/forms.py:51
+#: mediagoblin/auth/forms.py:78
msgid "Username or email"
msgstr ""
-#: mediagoblin/auth/forms.py:58
-msgid "Incorrect input"
-msgstr ""
-
-#: mediagoblin/auth/views.py:55
+#: mediagoblin/auth/views.py:54
msgid "Sorry, registration is disabled on this instance."
msgstr ""
-#: mediagoblin/auth/views.py:75
+#: mediagoblin/auth/views.py:68
msgid "Sorry, a user with that name already exists."
msgstr ""
-#: mediagoblin/auth/views.py:79
+#: mediagoblin/auth/views.py:72
msgid "Sorry, a user with that email address already exists."
msgstr ""
-#: mediagoblin/auth/views.py:182
+#: mediagoblin/auth/views.py:174
msgid ""
"Your email address has been verified. You may now login, edit your "
"profile, and submit images!"
msgstr ""
-#: mediagoblin/auth/views.py:188
+#: mediagoblin/auth/views.py:180
msgid "The verification key or user id is incorrect"
msgstr ""
-#: mediagoblin/auth/views.py:206
+#: mediagoblin/auth/views.py:198
msgid "You must be logged in so we know who to send the email to!"
msgstr ""
-#: mediagoblin/auth/views.py:214
+#: mediagoblin/auth/views.py:206
msgid "You've already verified your email address!"
msgstr ""
-#: mediagoblin/auth/views.py:227
+#: mediagoblin/auth/views.py:219
msgid "Resent your verification email."
msgstr ""
-#: mediagoblin/auth/views.py:263
+#: mediagoblin/auth/views.py:250
+msgid ""
+"If that email address (case sensitive!) is registered an email has been "
+"sent with instructions on how to change your password."
+msgstr ""
+
+#: mediagoblin/auth/views.py:261
+msgid "Couldn't find someone with that username."
+msgstr ""
+
+#: mediagoblin/auth/views.py:264
msgid "An email has been sent with instructions on how to change your password."
msgstr ""
-#: mediagoblin/auth/views.py:273
+#: mediagoblin/auth/views.py:271
msgid ""
"Could not send password recovery email as your username is inactive or "
"your account's email address has not been verified."
msgstr ""
-#: mediagoblin/auth/views.py:285
-msgid "Couldn't find someone with that username or email."
-msgstr ""
-
-#: mediagoblin/auth/views.py:333
+#: mediagoblin/auth/views.py:328
msgid "You can now log in using your new password."
msgstr ""
-#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:82
+#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:93
#: mediagoblin/submit/forms.py:28 mediagoblin/submit/forms.py:47
-#: mediagoblin/user_pages/forms.py:40
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr ""
@@ -100,8 +114,8 @@ msgid "Description of this work"
msgstr ""
#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:52
-#: mediagoblin/edit/forms.py:86 mediagoblin/submit/forms.py:32
-#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:44
+#: mediagoblin/edit/forms.py:97 mediagoblin/submit/forms.py:32
+#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:49
msgid ""
"You can use\n"
" <a "
@@ -117,11 +131,11 @@ msgstr ""
msgid "Separate tags by commas."
msgstr ""
-#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:90
+#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:101
msgid "Slug"
msgstr ""
-#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:91
+#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:102
msgid "The slug can't be empty"
msgstr ""
@@ -160,65 +174,81 @@ msgstr ""
msgid "New password"
msgstr ""
-#: mediagoblin/edit/forms.py:71
+#: mediagoblin/edit/forms.py:74
+msgid "License preference"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:80
+msgid "This will be your default license on upload forms."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:82
msgid "Email me when others comment on my media"
msgstr ""
-#: mediagoblin/edit/forms.py:83
+#: mediagoblin/edit/forms.py:94
msgid "The title can't be empty"
msgstr ""
-#: mediagoblin/edit/forms.py:85 mediagoblin/submit/forms.py:50
-#: mediagoblin/user_pages/forms.py:43
+#: mediagoblin/edit/forms.py:96 mediagoblin/submit/forms.py:50
+#: mediagoblin/user_pages/forms.py:48
msgid "Description of this collection"
msgstr ""
-#: mediagoblin/edit/forms.py:92
+#: mediagoblin/edit/forms.py:103
msgid ""
"The title part of this collection's address. You usually don't need to "
"change this."
msgstr ""
-#: mediagoblin/edit/views.py:65
+#: mediagoblin/edit/views.py:66
msgid "An entry with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:86
+#: mediagoblin/edit/views.py:85
msgid "You are editing another user's media. Proceed with caution."
msgstr ""
-#: mediagoblin/edit/views.py:156
+#: mediagoblin/edit/views.py:155
#, python-format
msgid "You added the attachment %s!"
msgstr ""
-#: mediagoblin/edit/views.py:181
+#: mediagoblin/edit/views.py:182
+msgid "You can only edit your own profile."
+msgstr ""
+
+#: mediagoblin/edit/views.py:188
msgid "You are editing a user's profile. Proceed with caution."
msgstr ""
-#: mediagoblin/edit/views.py:197
+#: mediagoblin/edit/views.py:204
msgid "Profile changes saved"
msgstr ""
-#: mediagoblin/edit/views.py:226 mediagoblin/edit/views.py:246
+#: mediagoblin/edit/views.py:241
+msgid "Wrong password"
+msgstr ""
+
+#: mediagoblin/edit/views.py:252
msgid "Account settings saved"
msgstr ""
-#: mediagoblin/edit/views.py:251
-msgid "Wrong password"
+#: mediagoblin/edit/views.py:286
+msgid "You need to confirm the deletion of your account."
msgstr ""
-#: mediagoblin/edit/views.py:287 mediagoblin/submit/views.py:211
-#: mediagoblin/user_pages/views.py:210
+#: mediagoblin/edit/views.py:322 mediagoblin/submit/views.py:142
+#: mediagoblin/user_pages/views.py:214
#, python-format
msgid "You already have a collection called \"%s\"!"
msgstr ""
-#: mediagoblin/edit/views.py:291
+#: mediagoblin/edit/views.py:326
msgid "A collection with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:308
+#: mediagoblin/edit/views.py:343
msgid "You are editing another user's collection. Proceed with caution."
msgstr ""
@@ -234,54 +264,62 @@ msgstr ""
msgid "However, old link directory symlink found; removed.\n"
msgstr ""
-#: mediagoblin/media_types/__init__.py:60
-#: mediagoblin/media_types/__init__.py:101
+#: 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:61
+#: mediagoblin/media_types/__init__.py:102
msgid "Sorry, I don't support that file type :("
msgstr ""
-#: mediagoblin/media_types/video/processing.py:35
+#: mediagoblin/media_types/video/processing.py:37
msgid "Video transcoding failed"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:26
-msgid "Client ID"
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
+msgid "Location"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:28
-msgid "Next URL"
+#: 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/oauth/forms.py:30
+#: mediagoblin/plugins/oauth/forms.py:29
msgid "Allow"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:31
+#: mediagoblin/plugins/oauth/forms.py:30
msgid "Deny"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:35
+#: mediagoblin/plugins/oauth/forms.py:34
msgid "Name"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:36
+#: mediagoblin/plugins/oauth/forms.py:35
msgid "The name of the OAuth client"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:37
+#: mediagoblin/plugins/oauth/forms.py:36
msgid "Description"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:39
+#: 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:41
+#: mediagoblin/plugins/oauth/forms.py:40
msgid "Type"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:46
+#: mediagoblin/plugins/oauth/forms.py:45
msgid ""
"<strong>Confidential</strong> - The client can\n"
" make requests to the GNU MediaGoblin instance that can "
@@ -295,25 +333,40 @@ msgid ""
" JavaScript client)."
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:53
+#: mediagoblin/plugins/oauth/forms.py:52
msgid "Redirect URI"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:55
+#: 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:67
+#: mediagoblin/plugins/oauth/forms.py:66
msgid "This field is required for public clients"
msgstr ""
-#: mediagoblin/plugins/oauth/views.py:60
+#: mediagoblin/plugins/oauth/views.py:59
msgid "The client {0} has been registered!"
msgstr ""
-#: mediagoblin/processing/__init__.py:138
+#: 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/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:172
msgid "Invalid file given for media type."
msgstr ""
@@ -321,56 +374,75 @@ msgstr ""
msgid "File"
msgstr ""
-#: mediagoblin/submit/views.py:57
+#: mediagoblin/submit/views.py:51
msgid "You must provide a file."
msgstr ""
-#: mediagoblin/submit/views.py:164
+#: mediagoblin/submit/views.py:97
msgid "Woohoo! Submitted!"
msgstr ""
-#: mediagoblin/submit/views.py:215
+#: mediagoblin/submit/views.py:146
#, python-format
msgid "Collection \"%s\" added!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:48
-msgid "MediaGoblin logo"
+#: mediagoblin/templates/mediagoblin/base.html:64
+msgid "Verify your email!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "log out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:70
+#: mediagoblin/templates/mediagoblin/auth/login.html:28
+#: mediagoblin/templates/mediagoblin/auth/login.html:36
+#: mediagoblin/templates/mediagoblin/auth/login.html:54
+msgid "Log in"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:54
+#: mediagoblin/templates/mediagoblin/base.html:79
#, python-format
msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:60
-msgid "log out"
+#: mediagoblin/templates/mediagoblin/base.html:86
+msgid "Change account settings"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:62
-#: mediagoblin/templates/mediagoblin/root.html:28
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:151
-msgid "Add media"
+#: mediagoblin/templates/mediagoblin/base.html:90
+#: mediagoblin/templates/mediagoblin/base.html:105
+#: mediagoblin/templates/mediagoblin/admin/panel.html:21
+#: mediagoblin/templates/mediagoblin/admin/panel.html:26
+#: 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:68
-msgid "Verify your email!"
+#: mediagoblin/templates/mediagoblin/base.html:93
+msgid "Log out"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:73
-#: mediagoblin/templates/mediagoblin/auth/login.html:28
-#: mediagoblin/templates/mediagoblin/auth/login.html:36
-#: mediagoblin/templates/mediagoblin/auth/login.html:54
-msgid "Log in"
+#: mediagoblin/templates/mediagoblin/base.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:156
+msgid "Add media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:99
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
+msgid "Create new collection"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:87
+#: mediagoblin/templates/mediagoblin/base.html:122
+#, python-format
msgid ""
-"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
-"href=\"http://gnu.org/\">GNU</a> project."
+"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/base.html:90
+#: mediagoblin/templates/mediagoblin/base.html:125
#, python-format
msgid ""
"Released under the <a "
@@ -382,52 +454,31 @@ msgstr ""
msgid "Image of goblin stressing out"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:25
-msgid "Actions"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/root.html:31
-msgid "Create new collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:34
-msgid "Change account settings"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:38
-#: mediagoblin/templates/mediagoblin/root.html:44
-#: mediagoblin/templates/mediagoblin/admin/panel.html:21
-#: mediagoblin/templates/mediagoblin/admin/panel.html:26
-#: 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/root.html:51
msgid "Explore"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:53
+#: mediagoblin/templates/mediagoblin/root.html:33
msgid "Hi there, welcome to this MediaGoblin site!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:55
+#: mediagoblin/templates/mediagoblin/root.html:35
msgid ""
"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, "
"an extraordinarily great piece of media hosting software."
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:56
+#: mediagoblin/templates/mediagoblin/root.html:36
msgid ""
"To add your own media, place comments, and more, you can log in with your"
" MediaGoblin account."
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:58
+#: mediagoblin/templates/mediagoblin/root.html:38
msgid "Don't have one yet? It's easy!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:59
+#: mediagoblin/templates/mediagoblin/root.html:39
#, python-format
msgid ""
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Create an "
@@ -438,7 +489,7 @@ msgid ""
"your own server</a>"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:67
+#: mediagoblin/templates/mediagoblin/root.html:47
msgid "Most recent media"
msgstr ""
@@ -543,41 +594,62 @@ msgid ""
"%(verification_url)s"
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:43
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:159
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:175
msgid "Attachments"
msgstr ""
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
msgid "Add attachment"
msgstr ""
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:60
+#: 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:81
+#: 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:62
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:51
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
msgid "Save changes"
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:47
+#: 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
@@ -590,13 +662,17 @@ msgstr ""
msgid "Changing %(username)s's account settings"
msgstr ""
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
+msgid "Delete my account"
+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:35
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
#, python-format
msgid "Editing %(username)s's profile"
msgstr ""
@@ -612,7 +688,7 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
msgstr ""
@@ -635,7 +711,7 @@ msgid ""
msgstr ""
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:56
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:61
msgid "Original file"
msgstr ""
@@ -647,8 +723,8 @@ msgstr ""
#: 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:67
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
+#: 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 ""
@@ -693,21 +769,21 @@ msgstr ""
msgid "Object Height"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
msgid ""
-"Sorry, this video will not work because \n"
-"\t your web browser does not support HTML5 \n"
-"\t video."
+"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:43
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:47
msgid ""
"You can get a modern web browser that \n"
-"\t can play this video at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:69
msgid "WebM file (640p; VP8/Vorbis)"
msgstr ""
@@ -715,12 +791,6 @@ msgstr ""
msgid "Add a collection"
msgstr ""
-#: mediagoblin/templates/mediagoblin/submit/collection.html:30
-#: mediagoblin/templates/mediagoblin/submit/start.html:34
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-msgid "Add"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
msgid "Add your media"
@@ -737,12 +807,12 @@ 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:87
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
msgid "Edit"
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:91
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
msgid "Delete"
msgstr ""
@@ -752,11 +822,6 @@ msgstr ""
msgid "Really delete %(title)s?"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:47
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Delete permanently"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:31
#, python-format
msgid "Really remove %(media_title)s from %(collection_title)s?"
@@ -766,6 +831,16 @@ msgstr ""
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 ""
@@ -779,56 +854,53 @@ msgstr ""
msgid "%(username)s's media"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:37
+#: 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:46
+#: 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:102
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:94
msgid "Add a comment"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:109
-msgid ""
-"You can use <a "
-"href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> "
-"for formatting."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:113
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:102
msgid "Add this comment"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:123
msgid "at"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:152
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:144
#, python-format
msgid ""
"<h3>Added on</h3>\n"
" <p>%(date)s</p>"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:202
-msgid "Add media to collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
#, python-format
-msgid "Add %(title)s to collection"
+msgid "Add “%(media_title)s†to a collection"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:51
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
msgstr ""
@@ -888,27 +960,31 @@ msgstr ""
msgid "Here's a spot to tell others about yourself."
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:101
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:100
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:117
msgid "Edit profile"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:105
msgid "This user hasn't filled in their profile (yet)."
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:124
+msgid "Browse collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:137
#, python-format
msgid "View all of %(username)s's media"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:145
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:150
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:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:162
#: 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..."
@@ -918,28 +994,24 @@ msgstr ""
msgid "(remove)"
msgstr ""
-#: mediagoblin/templates/mediagoblin/utils/collections.html:20
-#, python-format
-msgid "In collections (%(collected)s)"
+#: 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/geolocation_map.html:25
-msgid "Location"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/utils/geolocation_map.html:53
-#, python-format
-msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
msgstr ""
@@ -970,49 +1042,64 @@ msgstr ""
msgid "Tagged with"
msgstr ""
-#: mediagoblin/tools/exif.py:78
+#: mediagoblin/tools/exif.py:80
msgid "Could not read the image file."
msgstr ""
-#: mediagoblin/tools/response.py:30
+#: mediagoblin/tools/response.py:35
msgid "Oops!"
msgstr ""
-#: mediagoblin/tools/response.py:31
+#: mediagoblin/tools/response.py:36
msgid "An error occured"
msgstr ""
-#: mediagoblin/tools/response.py:46
+#: mediagoblin/tools/response.py:51
msgid "Operation not allowed"
msgstr ""
-#: mediagoblin/tools/response.py:47
+#: mediagoblin/tools/response.py:52
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:55
+#: mediagoblin/tools/response.py:60
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/user_pages/forms.py:28
+#: 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\">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:32
+#: 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:35
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:40
msgid "-- Select --"
msgstr ""
-#: mediagoblin/user_pages/forms.py:37
+#: mediagoblin/user_pages/forms.py:42
msgid "Include a note"
msgstr ""
@@ -1020,74 +1107,70 @@ msgstr ""
msgid "commented on your post"
msgstr ""
-#: mediagoblin/user_pages/views.py:156
+#: mediagoblin/user_pages/views.py:166
msgid "Oops, your comment was empty."
msgstr ""
-#: mediagoblin/user_pages/views.py:162
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
msgstr ""
-#: mediagoblin/user_pages/views.py:230
+#: mediagoblin/user_pages/views.py:197
+msgid "Please check your entries and try again."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:237
msgid "You have to select or add a collection"
msgstr ""
-#: mediagoblin/user_pages/views.py:238
+#: mediagoblin/user_pages/views.py:248
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:253
+#: mediagoblin/user_pages/views.py:264
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:261
-msgid "Please check your entries and try again."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:292
-msgid "Some of the files with this entry seem to be missing. Deleting anyway."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:297
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
msgstr ""
-#: mediagoblin/user_pages/views.py:304
+#: mediagoblin/user_pages/views.py:293
msgid "The media was not deleted because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/user_pages/views.py:312
+#: mediagoblin/user_pages/views.py:301
msgid "You are about to delete another user's media. Proceed with caution."
msgstr ""
-#: mediagoblin/user_pages/views.py:370
+#: mediagoblin/user_pages/views.py:375
msgid "You deleted the item from the collection."
msgstr ""
-#: mediagoblin/user_pages/views.py:374
+#: mediagoblin/user_pages/views.py:379
msgid "The item was not removed because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/user_pages/views.py:384
+#: mediagoblin/user_pages/views.py:389
msgid ""
"You are about to delete an item from another user's collection. Proceed "
"with caution."
msgstr ""
-#: mediagoblin/user_pages/views.py:417
+#: mediagoblin/user_pages/views.py:422
#, python-format
msgid "You deleted the collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:424
+#: mediagoblin/user_pages/views.py:429
msgid ""
"The collection was not deleted because you didn't check that you were "
"sure."
msgstr ""
-#: mediagoblin/user_pages/views.py:434
+#: mediagoblin/user_pages/views.py:439
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
index 28500ceb..ac74a68b 100644
--- a/mediagoblin/i18n/eo/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/eo/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/eo/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/eo/LC_MESSAGES/mediagoblin.po
index 3b1dce48..e7785d73 100644
--- a/mediagoblin/i18n/eo/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/eo/LC_MESSAGES/mediagoblin.po
@@ -1,8 +1,9 @@
# Translations template for PROJECT.
-# Copyright (C) 2012 ORGANIZATION
+# Copyright (C) 2013 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
+# <deletesoftware@yandex.ru>, 2013.
# <deletesoftware@yandex.ru>, 2011-2012.
# Fernando Inocencio <faigos@gmail.com>, 2011.
# <john_w1954@fastmail.fm>, 2011.
@@ -10,9 +11,9 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://issues.mediagoblin.org/\n"
-"POT-Creation-Date: 2012-12-20 09:18-0600\n"
-"PO-Revision-Date: 2012-12-20 15:14+0000\n"
-"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
+"POT-Creation-Date: 2013-03-04 18:04-0600\n"
+"PO-Revision-Date: 2013-03-10 16:50+0000\n"
+"Last-Translator: aleksejrs <deletesoftware@yandex.ru>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -21,82 +22,96 @@ msgstr ""
"Language: eo\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:41
+#: mediagoblin/auth/forms.py:28
+msgid "Invalid User name or email address."
+msgstr "Nevalida ensalutnomo aÅ­ retpoÅtadreso."
+
+#: mediagoblin/auth/forms.py:29
+msgid "This field does not take email addresses."
+msgstr "Ĉi tiu kampo ne akceptas retpoÅtadresojn."
+
+#: mediagoblin/auth/forms.py:30
+msgid "This field requires an email address."
+msgstr "Ĉi tiu kampo postulas retpoÅtadreson."
+
+#: mediagoblin/auth/forms.py:52 mediagoblin/auth/forms.py:67
msgid "Username"
msgstr "Uzantnomo"
-#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:45
+#: mediagoblin/auth/forms.py:56 mediagoblin/auth/forms.py:71
msgid "Password"
msgstr "Pasvorto"
-#: mediagoblin/auth/forms.py:34
+#: mediagoblin/auth/forms.py:60
msgid "Email address"
msgstr "RetpoÅtadreso"
-#: mediagoblin/auth/forms.py:51
+#: mediagoblin/auth/forms.py:78
msgid "Username or email"
msgstr "Salutnomo aÅ­ retpoÅtadreso"
-#: mediagoblin/auth/forms.py:58
-msgid "Incorrect input"
-msgstr "La enigitaĵo malÄustas"
-
-#: mediagoblin/auth/views.py:55
+#: mediagoblin/auth/views.py:54
msgid "Sorry, registration is disabled on this instance."
msgstr "Bedaŭrinde, registrado estas malaktivigita en tiu ĉi instalaĵo."
-#: mediagoblin/auth/views.py:75
+#: mediagoblin/auth/views.py:68
msgid "Sorry, a user with that name already exists."
msgstr "BedaÅ­rinde, uzanto kun tiu nomo jam ekzistas."
-#: mediagoblin/auth/views.py:79
+#: mediagoblin/auth/views.py:72
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:182
+#: mediagoblin/auth/views.py:174
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:188
+#: mediagoblin/auth/views.py:180
msgid "The verification key or user id is incorrect"
msgstr "La kontrol-kodo aÅ­ la uzantonomo ne estas korekta"
-#: mediagoblin/auth/views.py:206
+#: mediagoblin/auth/views.py:198
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:214
+#: mediagoblin/auth/views.py:206
msgid "You've already verified your email address!"
msgstr "Vi jam konfirmis vian retpoÅtadreson!"
-#: mediagoblin/auth/views.py:227
+#: mediagoblin/auth/views.py:219
msgid "Resent your verification email."
msgstr "Resendi vian kontrol-mesaÄon."
-#: mediagoblin/auth/views.py:263
+#: mediagoblin/auth/views.py:250
+msgid ""
+"If that email address (case sensitive!) is registered an email has been sent"
+" with instructions on how to change your password."
+msgstr "Se tiu retpoÅtadreso (majuskloj gravas!) estas registrita, tien senditas retletero kun instrukcio pri kiel ÅanÄi vian pasvorton."
+
+#: mediagoblin/auth/views.py:261
+msgid "Couldn't find someone with that username."
+msgstr "Trovitas neniu kun tiu ensalutnomo."
+
+#: mediagoblin/auth/views.py:264
msgid ""
"An email has been sent with instructions on how to change your password."
msgstr "Senditas retletero kun instrukcio pri kiel ÅanÄi vian pasvorton."
-#: mediagoblin/auth/views.py:273
+#: mediagoblin/auth/views.py:271
msgid ""
"Could not send password recovery email as your username is inactive or your "
"account's email address has not been verified."
msgstr "Ni ne povas sendi pasvortsavan retleteron, ĉar aÅ­ via konto estas neaktiva, aÅ­ Äia retpoÅtadreso ne estis konfirmita."
-#: mediagoblin/auth/views.py:285
-msgid "Couldn't find someone with that username or email."
-msgstr "Mi trovis neniun kun tiu salutnomo aÅ­ retpoÅtadreso."
-
-#: mediagoblin/auth/views.py:333
+#: mediagoblin/auth/views.py:328
msgid "You can now log in using your new password."
msgstr "Nun vi povas ensaluti per via nova pasvorto."
-#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:82
+#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:93
#: mediagoblin/submit/forms.py:28 mediagoblin/submit/forms.py:47
-#: mediagoblin/user_pages/forms.py:40
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr "Titolo"
@@ -105,8 +120,8 @@ msgid "Description of this work"
msgstr "Priskribo de ĉi tiu verko"
#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:52
-#: mediagoblin/edit/forms.py:86 mediagoblin/submit/forms.py:32
-#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:44
+#: mediagoblin/edit/forms.py:97 mediagoblin/submit/forms.py:32
+#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:49
msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
@@ -121,11 +136,11 @@ msgstr "Etikedoj"
msgid "Separate tags by commas."
msgstr "Dividu la etikedojn per komoj."
-#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:90
+#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:101
msgid "Slug"
msgstr "La distingiga adresparto"
-#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:91
+#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:102
msgid "The slug can't be empty"
msgstr "La distingiga adresparto ne povas esti malplena"
@@ -164,65 +179,81 @@ msgstr "Enigu vian malnovan pasvorton por pruvi, ke ĉi tiu konto estas via."
msgid "New password"
msgstr "La nova pasvorto"
-#: mediagoblin/edit/forms.py:71
+#: mediagoblin/edit/forms.py:74
+msgid "License preference"
+msgstr "Permesila prefero"
+
+#: mediagoblin/edit/forms.py:80
+msgid "This will be your default license on upload forms."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:82
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:83
+#: mediagoblin/edit/forms.py:94
msgid "The title can't be empty"
-msgstr ""
+msgstr "La titolo ne povas malpleni."
-#: mediagoblin/edit/forms.py:85 mediagoblin/submit/forms.py:50
-#: mediagoblin/user_pages/forms.py:43
+#: mediagoblin/edit/forms.py:96 mediagoblin/submit/forms.py:50
+#: mediagoblin/user_pages/forms.py:48
msgid "Description of this collection"
msgstr "Priskribo de la kolekto"
-#: mediagoblin/edit/forms.py:92
+#: mediagoblin/edit/forms.py:103
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/views.py:65
+#: mediagoblin/edit/views.py:66
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:86
+#: mediagoblin/edit/views.py:85
msgid "You are editing another user's media. Proceed with caution."
msgstr "Vi priredaktas dosieron de alia uzanto. Agu singardeme."
-#: mediagoblin/edit/views.py:156
+#: mediagoblin/edit/views.py:155
#, python-format
msgid "You added the attachment %s!"
-msgstr ""
+msgstr "Vi aldonis la kundosieron %s!"
+
+#: mediagoblin/edit/views.py:182
+msgid "You can only edit your own profile."
+msgstr "Vi povas redakti nur vian propran profilon."
-#: mediagoblin/edit/views.py:181
+#: mediagoblin/edit/views.py:188
msgid "You are editing a user's profile. Proceed with caution."
msgstr "Vi redaktas profilon de alia uzanto. Agu singardeme."
-#: mediagoblin/edit/views.py:197
+#: mediagoblin/edit/views.py:204
msgid "Profile changes saved"
msgstr "ProfilÅanÄoj estis konservitaj"
-#: mediagoblin/edit/views.py:226 mediagoblin/edit/views.py:246
+#: mediagoblin/edit/views.py:241
+msgid "Wrong password"
+msgstr "MalÄusta pasvorto"
+
+#: mediagoblin/edit/views.py:252
msgid "Account settings saved"
msgstr "Kontagordoj estis konservitaj"
-#: mediagoblin/edit/views.py:251
-msgid "Wrong password"
-msgstr "MalÄusta pasvorto"
+#: mediagoblin/edit/views.py:286
+msgid "You need to confirm the deletion of your account."
+msgstr "Vi bezonas konfirmi la forigon de via konto."
-#: mediagoblin/edit/views.py:287 mediagoblin/submit/views.py:211
-#: mediagoblin/user_pages/views.py:210
+#: mediagoblin/edit/views.py:322 mediagoblin/submit/views.py:142
+#: mediagoblin/user_pages/views.py:214
#, python-format
msgid "You already have a collection called \"%s\"!"
msgstr "Vi jam havas kolekton kun la nomo «%s»!"
-#: mediagoblin/edit/views.py:291
+#: mediagoblin/edit/views.py:326
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:308
+#: mediagoblin/edit/views.py:343
msgid "You are editing another user's collection. Proceed with caution."
msgstr "Vi redaktas kolekton de alia uzanto. Agu singardeme."
@@ -238,54 +269,62 @@ msgstr "Mankas dosierujo kun aspektiloj por la etoso\n"
msgid "However, old link directory symlink found; removed.\n"
msgstr "Tamen trovitas — kaj forigitas — malnova simbola ligilo al dosierujo.\n"
-#: mediagoblin/media_types/__init__.py:60
-#: mediagoblin/media_types/__init__.py:101
+#: 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:61
+#: mediagoblin/media_types/__init__.py:102
msgid "Sorry, I don't support that file type :("
msgstr "Mi pardonpetas, mi ne subtenas tiun dosiertipon :("
-#: mediagoblin/media_types/video/processing.py:35
+#: mediagoblin/media_types/video/processing.py:36
msgid "Video transcoding failed"
msgstr "Malsukcesis transkodado de filmo"
-#: mediagoblin/plugins/oauth/forms.py:26
-msgid "Client ID"
-msgstr ""
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
+msgid "Location"
+msgstr "Loko"
-#: mediagoblin/plugins/oauth/forms.py:28
-msgid "Next URL"
-msgstr ""
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:52
+#, python-format
+msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
+msgstr "Vidi sur <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-#: mediagoblin/plugins/oauth/forms.py:30
+#: mediagoblin/plugins/oauth/forms.py:29
msgid "Allow"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:31
+#: mediagoblin/plugins/oauth/forms.py:30
msgid "Deny"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:35
+#: mediagoblin/plugins/oauth/forms.py:34
msgid "Name"
-msgstr ""
+msgstr "Nomo"
-#: mediagoblin/plugins/oauth/forms.py:36
+#: mediagoblin/plugins/oauth/forms.py:35
msgid "The name of the OAuth client"
-msgstr ""
+msgstr "La nomo de la OAuth-kliento"
-#: mediagoblin/plugins/oauth/forms.py:37
+#: mediagoblin/plugins/oauth/forms.py:36
msgid "Description"
-msgstr ""
+msgstr "Priskribo"
-#: mediagoblin/plugins/oauth/forms.py:39
+#: 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:41
+#: mediagoblin/plugins/oauth/forms.py:40
msgid "Type"
-msgstr ""
+msgstr "Tipo"
-#: mediagoblin/plugins/oauth/forms.py:46
+#: 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"
@@ -295,25 +334,40 @@ msgid ""
" JavaScript client)."
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:53
+#: mediagoblin/plugins/oauth/forms.py:52
msgid "Redirect URI"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:55
+#: 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:67
+#: mediagoblin/plugins/oauth/forms.py:66
msgid "This field is required for public clients"
msgstr ""
-#: mediagoblin/plugins/oauth/views.py:60
+#: mediagoblin/plugins/oauth/views.py:59
msgid "The client {0} has been registered!"
msgstr ""
-#: mediagoblin/processing/__init__.py:138
+#: 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/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr "Aldoni"
+
+#: mediagoblin/processing/__init__.py:172
msgid "Invalid file given for media type."
msgstr "La provizita dosiero ne konformas al la informtipo."
@@ -321,56 +375,74 @@ msgstr "La provizita dosiero ne konformas al la informtipo."
msgid "File"
msgstr "Dosiero"
-#: mediagoblin/submit/views.py:57
+#: mediagoblin/submit/views.py:51
msgid "You must provide a file."
msgstr "Vi devas provizi dosieron."
-#: mediagoblin/submit/views.py:164
+#: mediagoblin/submit/views.py:97
msgid "Woohoo! Submitted!"
msgstr "Hura! AlÅutitas!"
-#: mediagoblin/submit/views.py:215
+#: mediagoblin/submit/views.py:146
#, python-format
msgid "Collection \"%s\" added!"
msgstr "Kolekto «%s» aldonitas!"
-#: mediagoblin/templates/mediagoblin/base.html:48
-msgid "MediaGoblin logo"
-msgstr "Emblemo de MediaGoblin"
-
-#: mediagoblin/templates/mediagoblin/base.html:54
-#, python-format
-msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:60
-msgid "log out"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:62
-#: mediagoblin/templates/mediagoblin/root.html:28
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:151
-msgid "Add media"
-msgstr "Aldoni dosieron"
-
-#: mediagoblin/templates/mediagoblin/base.html:68
+#: mediagoblin/templates/mediagoblin/base.html:64
msgid "Verify your email!"
msgstr "Konfirmu viecon de la retpoÅtadreso!"
-#: mediagoblin/templates/mediagoblin/base.html:73
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "log out"
+msgstr "elsaluti"
+
+#: mediagoblin/templates/mediagoblin/base.html:70
#: mediagoblin/templates/mediagoblin/auth/login.html:28
#: mediagoblin/templates/mediagoblin/auth/login.html:36
#: mediagoblin/templates/mediagoblin/auth/login.html:54
msgid "Log in"
msgstr "Ensaluti"
-#: mediagoblin/templates/mediagoblin/base.html:87
-msgid ""
-"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
-"href=\"http://gnu.org/\">GNU</a> project."
-msgstr "Funkcias per <a href=\"http://mediagoblin.org\">MediaGoblin</a>, unu el la <a href=\"http://gnu.org/\">projektoj de GNU</a>."
+#: mediagoblin/templates/mediagoblin/base.html:79
+#, 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:86
+msgid "Change account settings"
+msgstr "ÅœanÄi kontagordojn"
#: mediagoblin/templates/mediagoblin/base.html:90
+#: mediagoblin/templates/mediagoblin/base.html:105
+#: mediagoblin/templates/mediagoblin/admin/panel.html:21
+#: mediagoblin/templates/mediagoblin/admin/panel.html:26
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
+msgid "Media processing panel"
+msgstr "Kontrolejo pri dosierpreparado."
+
+#: mediagoblin/templates/mediagoblin/base.html:93
+msgid "Log out"
+msgstr "Elsaluti"
+
+#: mediagoblin/templates/mediagoblin/base.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:156
+msgid "Add media"
+msgstr "Aldoni dosieron"
+
+#: mediagoblin/templates/mediagoblin/base.html:99
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
+msgid "Create new collection"
+msgstr "Krei novan kolekton"
+
+#: mediagoblin/templates/mediagoblin/base.html:122
+#, 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 "Funkcias per <a href=\"http://mediagoblin.org/\" title='Versio %(version)s'>MediaGoblin</a>, unu el la <a href=\"http://gnu.org/\">projektoj de GNU</a>."
+
+#: mediagoblin/templates/mediagoblin/base.html:125
#, python-format
msgid ""
"Released under the <a "
@@ -380,54 +452,33 @@ msgstr "Disponigita laÅ­ la permesilo <a href=\"http://www.fsf.org/licensing/lic
#: mediagoblin/templates/mediagoblin/error.html:24
msgid "Image of goblin stressing out"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:25
-msgid "Actions"
-msgstr ""
+msgstr "Bildo de zorgigita koboldo"
#: mediagoblin/templates/mediagoblin/root.html:31
-msgid "Create new collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:34
-msgid "Change account settings"
-msgstr "ÅœanÄi kontagordojn"
-
-#: mediagoblin/templates/mediagoblin/root.html:38
-#: mediagoblin/templates/mediagoblin/root.html:44
-#: mediagoblin/templates/mediagoblin/admin/panel.html:21
-#: mediagoblin/templates/mediagoblin/admin/panel.html:26
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
-msgid "Media processing panel"
-msgstr "Kontrolejo pri dosierpreparado."
-
-#: mediagoblin/templates/mediagoblin/root.html:51
msgid "Explore"
msgstr "Ĉirkaŭrigardi"
-#: mediagoblin/templates/mediagoblin/root.html:53
+#: mediagoblin/templates/mediagoblin/root.html:33
msgid "Hi there, welcome to this MediaGoblin site!"
msgstr "Saluton, kaj bonvenon al ĉi tiu MediaGoblina retpaÄaro!"
-#: mediagoblin/templates/mediagoblin/root.html:55
+#: mediagoblin/templates/mediagoblin/root.html:35
msgid ""
"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
"extraordinarily great piece of media hosting software."
msgstr "Ĉi tiu retpaÄaro funkcias per <a href=\"http://mediagoblin.org\">MediaGoblin</a>, eksterordinare bonega programaro por gastigado de aÅ­dâ€vidâ€dosieroj."
-#: mediagoblin/templates/mediagoblin/root.html:56
+#: mediagoblin/templates/mediagoblin/root.html:36
msgid ""
"To add your own media, place comments, and more, you can log in with your "
"MediaGoblin account."
msgstr "Por aldoni viajn proprajn dosierojn, afiÅi komentariojn ktp, vi povas ensaluti je via MediaGoblina konto."
-#: mediagoblin/templates/mediagoblin/root.html:58
+#: mediagoblin/templates/mediagoblin/root.html:38
msgid "Don't have one yet? It's easy!"
msgstr "Ĉu vi ankoraÅ­ ne havas tian? Ne malÄoju!"
-#: mediagoblin/templates/mediagoblin/root.html:59
+#: mediagoblin/templates/mediagoblin/root.html:39
#, python-format
msgid ""
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Create an account at this site</a>\n"
@@ -435,7 +486,7 @@ msgid ""
" <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
msgstr "<a class=\"button_action_highlight\" href=\"%(register_url)s\">Kreu konton en ĉi tiu retejo</a>\n aŭ\n <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">ekfunkciigu MediaGoblin’on en via propra servilo</a>"
-#: mediagoblin/templates/mediagoblin/root.html:67
+#: mediagoblin/templates/mediagoblin/root.html:47
msgid "Most recent media"
msgstr "Laste aldonitaj dosieroj"
@@ -541,41 +592,62 @@ msgid ""
"%(verification_url)s"
msgstr "Sal %(username)s,\n\npor aktivigi vian GNU MediaGoblin konton, malfermu la sekvantan URLon en via retumilo:\n\n%(verification_url)s"
+#: mediagoblin/templates/mediagoblin/bits/logo.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/bits/logo.html:23
+msgid "MediaGoblin logo"
+msgstr "Emblemo 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 "Aldoni kundosierojn por %(media_title)s"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:43
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:159
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:175
msgid "Attachments"
msgstr "Kundosieroj"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
msgid "Add attachment"
msgstr "Aldoni kundosieron"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:60
+#: 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:81
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
msgid "Cancel"
msgstr "Nuligi"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:62
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:51
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
msgid "Save changes"
msgstr "Konservi ÅanÄojn"
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
+#, python-format
+msgid "Really delete user '%(user_name)s' and all related media/comments?"
+msgstr "Ĉu efektive forigi la uzantokonton «%(user_name)s» kaj ĉiujn Äiajn dosierojn/komentojn?"
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:35
+msgid "Yes, really delete my account"
+msgstr "Jes, efektive forigi mian konton"
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:47
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
+msgid "Delete permanently"
+msgstr "Forigi senrevene"
+
#: mediagoblin/templates/mediagoblin/edit/edit.html:23
#: mediagoblin/templates/mediagoblin/edit/edit.html:35
#, python-format
@@ -588,13 +660,17 @@ msgstr "Priredaktado de %(media_title)s"
msgid "Changing %(username)s's account settings"
msgstr "ÅœanÄado de kontagordoj de %(username)s"
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
+msgid "Delete my account"
+msgstr "Forigi mian konton."
+
#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:29
#, python-format
msgid "Editing %(collection_title)s"
-msgstr ""
+msgstr "Redaktado de %(collection_title)s"
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:23
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
#, python-format
msgid "Editing %(username)s's profile"
msgstr "Redaktado de l’profilo de %(username)s'"
@@ -610,7 +686,7 @@ 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/stl.html:136
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
msgstr "ElÅuti"
@@ -633,7 +709,7 @@ msgid ""
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>!"
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:56
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:61
msgid "Original file"
msgstr "originalan dosieron"
@@ -645,8 +721,8 @@ msgstr "WebMan dosieron (kun Vorbisa kodaĵo)"
#: 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:67
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
+#: 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 "Bildo de «%(media_title)s»"
@@ -662,17 +738,17 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:116
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
msgid "Front"
-msgstr ""
+msgstr "DeantaÅ­e"
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:121
msgid "Top"
-msgstr ""
+msgstr "Desupre"
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:124
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:125
msgid "Side"
-msgstr ""
+msgstr "Deflanke"
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:130
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
@@ -681,31 +757,31 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:138
msgid "Download model"
-msgstr ""
+msgstr "ElÅuti la modelon"
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
msgid "File Format"
-msgstr ""
+msgstr "InformaranÄo"
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
msgid "Object Height"
-msgstr ""
+msgstr "Alto de la objekto"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
msgid ""
-"Sorry, this video will not work because \n"
-"\t your web browser does not support HTML5 \n"
-"\t video."
-msgstr "Bedaŭrinde ĉi tiu filmo ne spekteblas, ĉar\n<span class=\"whitespace other\" title=\"Tab\">»</span> via TTT-legilo ne subtenas montradon\n<span class=\"whitespace other\" title=\"Tab\">»</span> de filmoj laŭ HTML5."
+"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:43
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:47
msgid ""
"You can get a modern web browser that \n"
-"\t can play this video at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
-msgstr "Vi povas akiri modernan TTT-legilon,\n<span class=\"whitespace other\" title=\"Tab\">»</span> kapablan montri ĉi tiun filmon, ĉe <a href=\"http://getfirefox.com\">\n<span class=\"whitespace other\" title=\"Tab\">»</span> http://getfirefox.com</a>!"
+" 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:59
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:69
msgid "WebM file (640p; VP8/Vorbis)"
msgstr "la WebM-dosieron (640p; VP8/Vorbis)"
@@ -713,12 +789,6 @@ msgstr "la WebM-dosieron (640p; VP8/Vorbis)"
msgid "Add a collection"
msgstr "Aldonado de kolekto"
-#: mediagoblin/templates/mediagoblin/submit/collection.html:30
-#: mediagoblin/templates/mediagoblin/submit/start.html:34
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-msgid "Add"
-msgstr "Aldoni"
-
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
msgid "Add your media"
@@ -735,12 +805,12 @@ 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:87
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
msgid "Edit"
msgstr "ÅœanÄi"
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:91
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
msgid "Delete"
msgstr "Forigi"
@@ -750,11 +820,6 @@ msgstr "Forigi"
msgid "Really delete %(title)s?"
msgstr "Ĉu vere forigi %(title)s?"
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:47
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Delete permanently"
-msgstr "Forigi senrevene"
-
#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:31
#, python-format
msgid "Really remove %(media_title)s from %(collection_title)s?"
@@ -764,6 +829,16 @@ msgstr "Ĉu vere forigi %(media_title)s el %(collection_title)s?"
msgid "Remove"
msgstr "Forigi"
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:21
+#, python-format
+msgid "%(username)s's collections"
+msgstr "Kolektoj 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 "Kolektoj de <a href=\"%(user_url)s\">%(username)s</a>"
+
#: mediagoblin/templates/mediagoblin/user_pages/comment_email.txt:19
#, python-format
msgid ""
@@ -776,56 +851,53 @@ msgstr "Saluton, %(username)s.\n%(comment_author)s komentis ĉe via alÅutaĵo (
msgid "%(username)s's media"
msgstr "Dosieroj de %(username)s"
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:37
+#: 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 "Dosieroj de <a href=\"%(user_url)s\">%(username)s</a> kun la etikedo <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 "Dosieroj de <a href=\"%(user_url)s\">%(username)s</a>"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:46
+#: 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:102
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:94
msgid "Add a comment"
msgstr "Aldoni komenton"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:109
-msgid ""
-"You can use <a "
-"href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> for"
-" formatting."
-msgstr "Vi povas uzi por markado la lingvon «<a href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a>»."
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:113
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:102
msgid "Add this comment"
msgstr "Aldoni ĉi tiun komenton"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:123
msgid "at"
msgstr "je"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:152
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:144
#, python-format
msgid ""
"<h3>Added on</h3>\n"
" <p>%(date)s</p>"
msgstr "<h3>Aldonita je</h3>\n <p>la %(date)s</p>"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:202
-msgid "Add media to collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
#, python-format
-msgid "Add %(title)s to collection"
-msgstr "Aldonado de %(title)s al kolekto"
+msgid "Add “%(media_title)s†to a collection"
+msgstr "Aldoni «%(media_title)s» al kolekto"
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:51
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
msgstr "Aldoni novan kolekton"
@@ -887,27 +959,31 @@ msgstr "Se vi estas tiu sed vi perdis vian kontrolmesaÄon, vi povas <a href=\"%
msgid "Here's a spot to tell others about yourself."
msgstr "Jen estas spaceto por rakonti pri vi al aliaj."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:101
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:100
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:117
msgid "Edit profile"
msgstr "Redakti profilon"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:105
msgid "This user hasn't filled in their profile (yet)."
msgstr "Ĉi tiu uzanto ne jam aldonis informojn pri si."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:124
+msgid "Browse collections"
+msgstr "Vidi kolektojn"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:137
#, python-format
msgid "View all of %(username)s's media"
msgstr "Rigardi ĉiujn dosierojn de %(username)s"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:145
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:150
msgid ""
"This is where your media will appear, but you don't seem to have added "
"anything yet."
msgstr "Äœuste ĉi tie aperos viaj dosieroj, sed vi Åajne ankoraÅ­ nenion alÅutis."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:162
#: 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..."
@@ -915,30 +991,26 @@ msgstr "Ĉi tie Åajne estas ankoraÅ­ neniuj dosieroj…"
#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
msgid "(remove)"
-msgstr ""
+msgstr "(forigi)"
-#: mediagoblin/templates/mediagoblin/utils/collections.html:20
-#, python-format
-msgid "In collections (%(collected)s)"
-msgstr "En %(collected)s kolekto(j)"
+#: mediagoblin/templates/mediagoblin/utils/collections.html:21
+msgid "Collected in"
+msgstr "En kolektoj:"
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:40
+msgid "Add to a collection"
+msgstr "Aldoni al kolekto"
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
msgid "feed icon"
msgstr "flusimbolo"
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:23
msgid "Atom feed"
msgstr "Atom-a informfluo"
-#: mediagoblin/templates/mediagoblin/utils/geolocation_map.html:25
-msgid "Location"
-msgstr "Loko"
-
-#: mediagoblin/templates/mediagoblin/utils/geolocation_map.html:53
-#, python-format
-msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-msgstr "Vidi sur <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
msgstr "Ĉiuj rajtoj estas rezervitaj"
@@ -969,49 +1041,64 @@ msgstr "malpli nova"
msgid "Tagged with"
msgstr "Markita per"
-#: mediagoblin/tools/exif.py:78
+#: mediagoblin/tools/exif.py:80
msgid "Could not read the image file."
msgstr "Malsukcesis lego de la bildodosiero"
-#: mediagoblin/tools/response.py:30
+#: mediagoblin/tools/response.py:35
msgid "Oops!"
msgstr "Oj!"
-#: mediagoblin/tools/response.py:31
+#: mediagoblin/tools/response.py:36
msgid "An error occured"
-msgstr ""
+msgstr "Okazis eraro"
-#: mediagoblin/tools/response.py:46
+#: mediagoblin/tools/response.py:51
msgid "Operation not allowed"
msgstr ""
-#: mediagoblin/tools/response.py:47
+#: mediagoblin/tools/response.py:52
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:55
+#: mediagoblin/tools/response.py:60
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/user_pages/forms.py:28
+#: mediagoblin/user_pages/forms.py:23
+msgid "Comment"
+msgstr "Komenti"
+
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use <a "
+"href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> for"
+" formatting."
+msgstr "Vi povas uzi por markado la lingvon «<a href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a>»."
+
+#: mediagoblin/user_pages/forms.py:31
msgid "I am sure I want to delete this"
msgstr "Jes, mi volas forigi ĉi tion."
-#: mediagoblin/user_pages/forms.py:32
+#: mediagoblin/user_pages/forms.py:35
msgid "I am sure I want to remove this item from the collection"
msgstr "Jes, mi volas forigi ĉi tiun dosieron el la kolekto"
-#: mediagoblin/user_pages/forms.py:35
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr "Kolekto"
+
+#: mediagoblin/user_pages/forms.py:40
msgid "-- Select --"
msgstr "-- Elektu --"
-#: mediagoblin/user_pages/forms.py:37
+#: mediagoblin/user_pages/forms.py:42
msgid "Include a note"
msgstr "Rimarko"
@@ -1019,74 +1106,69 @@ msgstr "Rimarko"
msgid "commented on your post"
msgstr "komentis je via afiÅo"
-#: mediagoblin/user_pages/views.py:156
+#: mediagoblin/user_pages/views.py:166
msgid "Oops, your comment was empty."
msgstr "Oj, via komento estis malplena."
-#: mediagoblin/user_pages/views.py:162
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
msgstr "Via komento estis afiÅita!"
-#: mediagoblin/user_pages/views.py:230
+#: mediagoblin/user_pages/views.py:197
+msgid "Please check your entries and try again."
+msgstr "Bonvolu kontroli vian enigitaĵon kaj reprovi."
+
+#: mediagoblin/user_pages/views.py:237
msgid "You have to select or add a collection"
msgstr "Necesas elekti aÅ­ aldoni kolekton"
-#: mediagoblin/user_pages/views.py:238
+#: mediagoblin/user_pages/views.py:248
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr "«%s» jam estas en la kolekto «%s»"
-#: mediagoblin/user_pages/views.py:253
+#: mediagoblin/user_pages/views.py:264
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr "«%s» estis aldonita al la kolekto «%s»"
-#: mediagoblin/user_pages/views.py:261
-msgid "Please check your entries and try again."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:292
-msgid ""
-"Some of the files with this entry seem to be missing. Deleting anyway."
-msgstr "Iuj dosieroj de ĉi tiu ero Åajne mankas. Mi tamen forigas."
-
-#: mediagoblin/user_pages/views.py:297
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
msgstr "Vi forigis la dosieron."
-#: mediagoblin/user_pages/views.py:304
+#: mediagoblin/user_pages/views.py:293
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/user_pages/views.py:312
+#: mediagoblin/user_pages/views.py:301
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:370
+#: mediagoblin/user_pages/views.py:375
msgid "You deleted the item from the collection."
msgstr "Vi forigis la dosieron el la kolekto."
-#: mediagoblin/user_pages/views.py:374
+#: mediagoblin/user_pages/views.py:379
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:384
+#: mediagoblin/user_pages/views.py:389
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:417
+#: mediagoblin/user_pages/views.py:422
#, python-format
msgid "You deleted the collection \"%s\""
msgstr "Vi forigis la kolekton «%s»"
-#: mediagoblin/user_pages/views.py:424
+#: mediagoblin/user_pages/views.py:429
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:434
+#: mediagoblin/user_pages/views.py:439
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
index 98dbebdd..e2df0731 100644
--- a/mediagoblin/i18n/es/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/es/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/es/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/es/LC_MESSAGES/mediagoblin.po
index e1249591..21dce0b1 100644
--- a/mediagoblin/i18n/es/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/es/LC_MESSAGES/mediagoblin.po
@@ -1,5 +1,5 @@
# Translations template for PROJECT.
-# Copyright (C) 2012 ORGANIZATION
+# Copyright (C) 2013 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
@@ -10,6 +10,7 @@
# <juangsub@gmail.com>, 2011.
# <juanma@kde.org.ar>, 2011, 2012.
# <larjona99@gmail.com>, 2012.
+# Laura Arjona Reina <larjona99@gmail.com>, 2013.
# Mario Rodriguez <msrodriguez00@gmail.com>, 2011.
# <mu@member.fsf.org>, 2011.
# <shackra@riseup.net>, 2012.
@@ -18,8 +19,8 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://issues.mediagoblin.org/\n"
-"POT-Creation-Date: 2012-12-20 09:18-0600\n"
-"PO-Revision-Date: 2012-12-20 15:14+0000\n"
+"POT-Creation-Date: 2013-03-04 18:04-0600\n"
+"PO-Revision-Date: 2013-03-05 00:04+0000\n"
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
"Language-Team: Spanish (http://www.transifex.com/projects/p/mediagoblin/language/es/)\n"
"MIME-Version: 1.0\n"
@@ -29,82 +30,96 @@ msgstr ""
"Language: es\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:41
+#: mediagoblin/auth/forms.py:28
+msgid "Invalid User name or email address."
+msgstr "Nombre de usuario o correo electrónico inválido."
+
+#: mediagoblin/auth/forms.py:29
+msgid "This field does not take email addresses."
+msgstr "Este campo no acepta direcciones de correo."
+
+#: mediagoblin/auth/forms.py:30
+msgid "This field requires an email address."
+msgstr "Este campo requiere una dirección de correo."
+
+#: mediagoblin/auth/forms.py:52 mediagoblin/auth/forms.py:67
msgid "Username"
msgstr "Nombre de usuario"
-#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:45
+#: mediagoblin/auth/forms.py:56 mediagoblin/auth/forms.py:71
msgid "Password"
msgstr "Contraseña"
-#: mediagoblin/auth/forms.py:34
+#: mediagoblin/auth/forms.py:60
msgid "Email address"
msgstr "Dirección de correo electrónico"
-#: mediagoblin/auth/forms.py:51
+#: mediagoblin/auth/forms.py:78
msgid "Username or email"
msgstr "Nombre de usuario o email"
-#: mediagoblin/auth/forms.py:58
-msgid "Incorrect input"
-msgstr "Los datos ingresados son incorrectos"
-
-#: mediagoblin/auth/views.py:55
+#: mediagoblin/auth/views.py:54
msgid "Sorry, registration is disabled on this instance."
msgstr "Lo sentimos, el registro está deshabilitado en este momento."
-#: mediagoblin/auth/views.py:75
+#: mediagoblin/auth/views.py:68
msgid "Sorry, a user with that name already exists."
msgstr "Lo sentimos, ya existe un usuario con ese nombre."
-#: mediagoblin/auth/views.py:79
+#: mediagoblin/auth/views.py:72
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:182
+#: mediagoblin/auth/views.py:174
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 ingresar, editar tu perfil, y enviar imágenes!"
+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:188
+#: mediagoblin/auth/views.py:180
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:206
+#: mediagoblin/auth/views.py:198
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:214
+#: mediagoblin/auth/views.py:206
msgid "You've already verified your email address!"
msgstr "¡Ya has verificado tu dirección de correo!"
-#: mediagoblin/auth/views.py:227
+#: mediagoblin/auth/views.py:219
msgid "Resent your verification email."
msgstr "Se reenvió tu correo electrónico de verificación."
-#: mediagoblin/auth/views.py:263
+#: mediagoblin/auth/views.py:250
+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/auth/views.py:261
+msgid "Couldn't find someone with that username."
+msgstr "No se ha podido encontrar a nadie con ese nombre de usuario."
+
+#: mediagoblin/auth/views.py:264
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/auth/views.py:273
+#: mediagoblin/auth/views.py:271
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/auth/views.py:285
-msgid "Couldn't find someone with that username or email."
-msgstr "No se pudo encontrar a alguien con ese nombre de usuario o correo electrónico."
-
-#: mediagoblin/auth/views.py:333
+#: mediagoblin/auth/views.py:328
msgid "You can now log in using your new password."
-msgstr "Ahora tu puedes entrar usando tu nueva contraseña."
+msgstr "Ahora tu puedes iniciar sesión usando tu nueva contraseña."
-#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:82
+#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:93
#: mediagoblin/submit/forms.py:28 mediagoblin/submit/forms.py:47
-#: mediagoblin/user_pages/forms.py:40
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr "Título"
@@ -113,8 +128,8 @@ msgid "Description of this work"
msgstr "Descripción de esta obra"
#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:52
-#: mediagoblin/edit/forms.py:86 mediagoblin/submit/forms.py:32
-#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:44
+#: mediagoblin/edit/forms.py:97 mediagoblin/submit/forms.py:32
+#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:49
msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
@@ -129,11 +144,11 @@ msgstr "Etiquetas"
msgid "Separate tags by commas."
msgstr "Separa las etiquetas por comas."
-#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:90
+#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:101
msgid "Slug"
msgstr "Ficha"
-#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:91
+#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:102
msgid "The slug can't be empty"
msgstr "La ficha no puede estar vacía"
@@ -172,65 +187,81 @@ msgstr "Escriba la anterior contraseña para demostrar que esta cuenta te perten
msgid "New password"
msgstr "Nueva contraseña"
-#: mediagoblin/edit/forms.py:71
+#: mediagoblin/edit/forms.py:74
+msgid "License preference"
+msgstr "Preferencias de licencia"
+
+#: mediagoblin/edit/forms.py:80
+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:82
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:83
+#: mediagoblin/edit/forms.py:94
msgid "The title can't be empty"
msgstr "El título no puede estar vacío"
-#: mediagoblin/edit/forms.py:85 mediagoblin/submit/forms.py:50
-#: mediagoblin/user_pages/forms.py:43
+#: mediagoblin/edit/forms.py:96 mediagoblin/submit/forms.py:50
+#: mediagoblin/user_pages/forms.py:48
msgid "Description of this collection"
msgstr "Descripción de esta colección"
-#: mediagoblin/edit/forms.py:92
+#: mediagoblin/edit/forms.py:103
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/views.py:65
+#: mediagoblin/edit/views.py:66
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:86
+#: mediagoblin/edit/views.py:85
msgid "You are editing another user's media. Proceed with caution."
-msgstr "Estás editando el contenido de otro usuario. Proceder con precaución."
+msgstr "Estás editando el contenido de otro usuario. Procede con precaución."
-#: mediagoblin/edit/views.py:156
+#: mediagoblin/edit/views.py:155
#, python-format
msgid "You added the attachment %s!"
msgstr "¡Has añadido el adjunto %s!"
-#: mediagoblin/edit/views.py:181
+#: mediagoblin/edit/views.py:182
+msgid "You can only edit your own profile."
+msgstr "Sólo puedes editar tu propio perfil."
+
+#: mediagoblin/edit/views.py:188
msgid "You are editing a user's profile. Proceed with caution."
-msgstr "Estás editando un perfil de usuario. Proceder con precaución."
+msgstr "Estás editando un perfil de usuario. Procede con precaución."
-#: mediagoblin/edit/views.py:197
+#: mediagoblin/edit/views.py:204
msgid "Profile changes saved"
msgstr "Los cambios de perfil fueron salvados"
-#: mediagoblin/edit/views.py:226 mediagoblin/edit/views.py:246
+#: mediagoblin/edit/views.py:241
+msgid "Wrong password"
+msgstr "Contraseña incorrecta"
+
+#: mediagoblin/edit/views.py:252
msgid "Account settings saved"
msgstr "las configuraciones de cuenta fueron salvadas"
-#: mediagoblin/edit/views.py:251
-msgid "Wrong password"
-msgstr "Contraseña incorrecta"
+#: mediagoblin/edit/views.py:286
+msgid "You need to confirm the deletion of your account."
+msgstr "Necesitas confirmar el borrado de tu cuenta."
-#: mediagoblin/edit/views.py:287 mediagoblin/submit/views.py:211
-#: mediagoblin/user_pages/views.py:210
+#: mediagoblin/edit/views.py:322 mediagoblin/submit/views.py:142
+#: mediagoblin/user_pages/views.py:214
#, python-format
msgid "You already have a collection called \"%s\"!"
msgstr "¡Ya tienes una colección llamada \"%s\"!"
-#: mediagoblin/edit/views.py:291
+#: mediagoblin/edit/views.py:326
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:308
+#: mediagoblin/edit/views.py:343
msgid "You are editing another user's collection. Proceed with caution."
msgstr "Estás editando la colección de otro usuario/a. Ten cuidado."
@@ -246,54 +277,62 @@ msgstr "No hay directorio activo para este tema\n\n\n"
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/media_types/__init__.py:60
-#: mediagoblin/media_types/__init__.py:101
+#: 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:61
+#: mediagoblin/media_types/__init__.py:102
msgid "Sorry, I don't support that file type :("
msgstr "Lo sentidos, No soportamos ese tipo de archivo :("
-#: mediagoblin/media_types/video/processing.py:35
+#: mediagoblin/media_types/video/processing.py:36
msgid "Video transcoding failed"
msgstr "Ha fallado la conversión de vídeo"
-#: mediagoblin/plugins/oauth/forms.py:26
-msgid "Client ID"
-msgstr "ID del Cliente"
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
+msgid "Location"
+msgstr "Locación"
-#: mediagoblin/plugins/oauth/forms.py:28
-msgid "Next URL"
-msgstr "Siguiente URL"
+#: 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/oauth/forms.py:30
+#: mediagoblin/plugins/oauth/forms.py:29
msgid "Allow"
msgstr "Permitir"
-#: mediagoblin/plugins/oauth/forms.py:31
+#: mediagoblin/plugins/oauth/forms.py:30
msgid "Deny"
msgstr "Denegar"
-#: mediagoblin/plugins/oauth/forms.py:35
+#: mediagoblin/plugins/oauth/forms.py:34
msgid "Name"
msgstr "Nombre"
-#: mediagoblin/plugins/oauth/forms.py:36
+#: mediagoblin/plugins/oauth/forms.py:35
msgid "The name of the OAuth client"
msgstr "El nombre del cliente OAuth"
-#: mediagoblin/plugins/oauth/forms.py:37
+#: mediagoblin/plugins/oauth/forms.py:36
msgid "Description"
msgstr "Descripción"
-#: mediagoblin/plugins/oauth/forms.py:39
+#: 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:41
+#: mediagoblin/plugins/oauth/forms.py:40
msgid "Type"
msgstr "Tipo"
-#: mediagoblin/plugins/oauth/forms.py:46
+#: 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"
@@ -303,25 +342,40 @@ msgid ""
" 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:53
+#: mediagoblin/plugins/oauth/forms.py:52
msgid "Redirect URI"
msgstr "Redireccionar URI"
-#: mediagoblin/plugins/oauth/forms.py:55
+#: 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:67
+#: 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:60
+#: mediagoblin/plugins/oauth/views.py:59
msgid "The client {0} has been registered!"
msgstr "¡El cliente {0} ha sido registrado!"
-#: mediagoblin/processing/__init__.py:138
+#: 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/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr "Añadir "
+
+#: mediagoblin/processing/__init__.py:172
msgid "Invalid file given for media type."
msgstr "Archivo inválido para el formato seleccionado."
@@ -329,56 +383,74 @@ msgstr "Archivo inválido para el formato seleccionado."
msgid "File"
msgstr "Archivo"
-#: mediagoblin/submit/views.py:57
+#: mediagoblin/submit/views.py:51
msgid "You must provide a file."
msgstr "Debes proporcionar un archivo."
-#: mediagoblin/submit/views.py:164
+#: mediagoblin/submit/views.py:97
msgid "Woohoo! Submitted!"
-msgstr "¡Yujú! ¡Enviado!"
+msgstr "¡Yuju! ¡Enviado!"
-#: mediagoblin/submit/views.py:215
+#: mediagoblin/submit/views.py:146
#, python-format
msgid "Collection \"%s\" added!"
msgstr "¡Colección \"%s\" añadida!"
-#: mediagoblin/templates/mediagoblin/base.html:48
-msgid "MediaGoblin logo"
-msgstr "Logo de MediaGoblin"
+#: mediagoblin/templates/mediagoblin/base.html:64
+msgid "Verify your email!"
+msgstr "¡Verifica tu email!"
+
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "log out"
+msgstr "cerrar sesión"
+
+#: mediagoblin/templates/mediagoblin/base.html:70
+#: mediagoblin/templates/mediagoblin/auth/login.html:28
+#: mediagoblin/templates/mediagoblin/auth/login.html:36
+#: mediagoblin/templates/mediagoblin/auth/login.html:54
+msgid "Log in"
+msgstr "Iniciar sesión"
-#: mediagoblin/templates/mediagoblin/base.html:54
+#: mediagoblin/templates/mediagoblin/base.html:79
#, 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:60
-msgid "log out"
-msgstr "cerrar sesión"
+#: mediagoblin/templates/mediagoblin/base.html:86
+msgid "Change account settings"
+msgstr "Cambiar la configuración de la cuenta"
+
+#: mediagoblin/templates/mediagoblin/base.html:90
+#: mediagoblin/templates/mediagoblin/base.html:105
+#: mediagoblin/templates/mediagoblin/admin/panel.html:21
+#: mediagoblin/templates/mediagoblin/admin/panel.html:26
+#: 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:93
+msgid "Log out"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:62
-#: mediagoblin/templates/mediagoblin/root.html:28
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:151
+#: mediagoblin/templates/mediagoblin/base.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:156
msgid "Add media"
msgstr "Añadir contenido"
-#: mediagoblin/templates/mediagoblin/base.html:68
-msgid "Verify your email!"
-msgstr "¡Verifica tu email!"
-
-#: mediagoblin/templates/mediagoblin/base.html:73
-#: mediagoblin/templates/mediagoblin/auth/login.html:28
-#: mediagoblin/templates/mediagoblin/auth/login.html:36
-#: mediagoblin/templates/mediagoblin/auth/login.html:54
-msgid "Log in"
-msgstr "Conectarse"
+#: mediagoblin/templates/mediagoblin/base.html:99
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
+msgid "Create new collection"
+msgstr "Crear nueva colección"
-#: mediagoblin/templates/mediagoblin/base.html:87
+#: mediagoblin/templates/mediagoblin/base.html:122
+#, python-format
msgid ""
-"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
-"href=\"http://gnu.org/\">GNU</a> project."
-msgstr "Proveído por <a href=\"http://mediagoblin.org\">MediaGoblin</a>, un proyecto <a href=\"http://gnu.org/\">GNU</a>."
+"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/base.html:90
+#: mediagoblin/templates/mediagoblin/base.html:125
#, python-format
msgid ""
"Released under the <a "
@@ -390,52 +462,31 @@ msgstr "Publicado bajo la <a href=\"http://www.fsf.org/licensing/licenses/agpl-3
msgid "Image of goblin stressing out"
msgstr "Imagen de un goblin estresándose"
-#: mediagoblin/templates/mediagoblin/root.html:25
-msgid "Actions"
-msgstr "Acciones"
-
#: mediagoblin/templates/mediagoblin/root.html:31
-msgid "Create new collection"
-msgstr "Crear nueva colección"
-
-#: mediagoblin/templates/mediagoblin/root.html:34
-msgid "Change account settings"
-msgstr "Cambiar la configuración de la cuenta"
-
-#: mediagoblin/templates/mediagoblin/root.html:38
-#: mediagoblin/templates/mediagoblin/root.html:44
-#: mediagoblin/templates/mediagoblin/admin/panel.html:21
-#: mediagoblin/templates/mediagoblin/admin/panel.html:26
-#: 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/root.html:51
msgid "Explore"
msgstr "Explorar"
-#: mediagoblin/templates/mediagoblin/root.html:53
+#: mediagoblin/templates/mediagoblin/root.html:33
msgid "Hi there, welcome to this MediaGoblin site!"
msgstr "Hola, ¡bienvenido a este sitio de MediaGoblin!"
-#: mediagoblin/templates/mediagoblin/root.html:55
+#: mediagoblin/templates/mediagoblin/root.html:35
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/root.html:56
+#: mediagoblin/templates/mediagoblin/root.html:36
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/root.html:58
+#: mediagoblin/templates/mediagoblin/root.html:38
msgid "Don't have one yet? It's easy!"
msgstr "¿Aún no tienes una? ¡Es fácil!"
-#: mediagoblin/templates/mediagoblin/root.html:59
+#: mediagoblin/templates/mediagoblin/root.html:39
#, python-format
msgid ""
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Create an account at this site</a>\n"
@@ -443,7 +494,7 @@ msgid ""
" <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
msgstr "<a class=\"button_action_highlight\" href=\"%(register_url)s\">Crea una cuenta en este sitio</a>\n o\n <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Instala Mediagoblin en tu propio servidor</a>"
-#: mediagoblin/templates/mediagoblin/root.html:67
+#: mediagoblin/templates/mediagoblin/root.html:47
msgid "Most recent media"
msgstr "El contenido más reciente"
@@ -549,41 +600,62 @@ msgid ""
"%(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/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:43
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:159
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:175
msgid "Attachments"
msgstr "Adjuntos"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
msgid "Add attachment"
msgstr "Agregar adjunto"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:60
+#: 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:81
+#: 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:62
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:51
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
msgid "Save changes"
msgstr "Guardar cambios"
+#: 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:47
+#: 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
@@ -596,13 +668,17 @@ msgstr "Editando %(media_title)s "
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:59
+msgid "Delete my account"
+msgstr "Borrar mi cuenta"
+
#: 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:35
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
#, python-format
msgid "Editing %(username)s's profile"
msgstr "Editando el perfil de %(username)s"
@@ -618,7 +694,7 @@ 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/stl.html:136
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
msgstr "Descargar"
@@ -641,7 +717,7 @@ msgid ""
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/video.html:56
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:61
msgid "Original file"
msgstr "Archivo original"
@@ -653,8 +729,8 @@ msgstr "Archivo WebM (códec Vorbis)"
#: 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:67
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
+#: 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"
@@ -699,21 +775,21 @@ msgstr "Formato de Archivo"
msgid "Object Height"
msgstr "Altura del Objeto"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
msgid ""
-"Sorry, this video will not work because \n"
-"\t your web browser does not support HTML5 \n"
-"\t video."
-msgstr "Lo sentimos, este video no va funcionar porque\n<span class=\"whitespace other\" title=\"Tab\">»</span> Tu navegador web no soporta HTML5\n<span class=\"whitespace other\" title=\"Tab\">»</span> video."
+"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:43
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:47
msgid ""
"You can get a modern web browser that \n"
-"\t can play this video at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
-msgstr "Tú puedes conseguir un navegador web moderno que\n<span class=\"whitespace other\" title=\"Tab\">»</span> puede reproducir este vídeo en <a href=\"http://getfirefox.com\">\n<span class=\"whitespace other\" title=\"Tab\">»</span> http://getfirefox.com</a>!"
+" 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:59
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:69
msgid "WebM file (640p; VP8/Vorbis)"
msgstr "Archivo WebM (640p; VP8/Vorbis)"
@@ -721,12 +797,6 @@ msgstr "Archivo WebM (640p; VP8/Vorbis)"
msgid "Add a collection"
msgstr "Añadir una colección"
-#: mediagoblin/templates/mediagoblin/submit/collection.html:30
-#: mediagoblin/templates/mediagoblin/submit/start.html:34
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-msgid "Add"
-msgstr "Añadir "
-
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
msgid "Add your media"
@@ -743,12 +813,12 @@ 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:87
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
msgid "Edit"
msgstr "Editar"
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:91
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
msgid "Delete"
msgstr "Borrar"
@@ -758,11 +828,6 @@ msgstr "Borrar"
msgid "Really delete %(title)s?"
msgstr "¿Realmente deseas eliminar %(title)s?"
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:47
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Delete permanently"
-msgstr "Eliminar permanentemente"
-
#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:31
#, python-format
msgid "Really remove %(media_title)s from %(collection_title)s?"
@@ -772,6 +837,16 @@ msgstr "¿Realmente quieres quitar %(media_title)s de %(collection_title)s?"
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 ""
@@ -782,65 +857,62 @@ msgstr "Hola %(username)s,\n%(comment_author)s comentó tu publicación (%(comm
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
#, python-format
msgid "%(username)s's media"
-msgstr "Contenidos de %(username)s"
+msgstr "Contenido de %(username)s"
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:37
+#: 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>'s"
+msgstr "Contenido de <a href=\"%(user_url)s\">%(username)s</a>"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:46
+#: 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:102
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:94
msgid "Add a comment"
msgstr "Añadir un comentario"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:109
-msgid ""
-"You can use <a "
-"href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> for"
-" formatting."
-msgstr "Puedes usar <a href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> para el formato."
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:113
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:102
msgid "Add this comment"
msgstr "Añade un comentario "
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:123
msgid "at"
msgstr "en"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:152
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:144
#, python-format
msgid ""
"<h3>Added on</h3>\n"
" <p>%(date)s</p>"
msgstr "<h3>Añadido en</h3>\n <p>%(date)s</p>"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:202
-msgid "Add media to collection"
-msgstr "Añadir contenido a la colección"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
#, python-format
-msgid "Add %(title)s to collection"
-msgstr "Añadir %(title)s a la colección"
+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:51
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
msgstr "+"
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:56
+#: 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 "Puedes hacer un seguimiento del estado de tu contenido siendo procesado aquí."
+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"
@@ -889,33 +961,37 @@ msgstr "Alguien ya registró una cuenta con ese nombre de usuario, pero todavía
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\">acceder</a> y reenviarlo."
+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/user_pages/user.html:96
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:101
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:100
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:117
msgid "Edit profile"
msgstr "Editar perfil"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:105
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:132
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:124
+msgid "Browse collections"
+msgstr "Explorar colecciones"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:137
#, 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:145
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:150
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 agregado nada."
+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:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:162
#: 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..."
@@ -925,28 +1001,24 @@ msgstr "Parece que aún no hay ningún contenido aquí..."
msgid "(remove)"
msgstr "(borrar)"
-#: mediagoblin/templates/mediagoblin/utils/collections.html:20
-#, python-format
-msgid "In collections (%(collected)s)"
-msgstr "En las colecciones (%(collected)s)"
+#: 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/geolocation_map.html:25
-msgid "Location"
-msgstr "Locación"
-
-#: mediagoblin/templates/mediagoblin/utils/geolocation_map.html:53
-#, python-format
-msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-msgstr "Ver en <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
msgstr "Todos los derechos reservados"
@@ -977,49 +1049,64 @@ msgstr "Más viejo"
msgid "Tagged with"
msgstr "Marcado con"
-#: mediagoblin/tools/exif.py:78
+#: mediagoblin/tools/exif.py:80
msgid "Could not read the image file."
msgstr "No se pudo leer el archivo de imagen."
-#: mediagoblin/tools/response.py:30
+#: mediagoblin/tools/response.py:35
msgid "Oops!"
msgstr "¡Ups!"
-#: mediagoblin/tools/response.py:31
+#: mediagoblin/tools/response.py:36
msgid "An error occured"
msgstr "Ha ocurrido un error"
-#: mediagoblin/tools/response.py:46
+#: mediagoblin/tools/response.py:51
msgid "Operation not allowed"
msgstr "Operación no permitida"
-#: mediagoblin/tools/response.py:47
+#: mediagoblin/tools/response.py:52
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:55
+#: mediagoblin/tools/response.py:60
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/user_pages/forms.py:28
+#: 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\">Markdown</a> for"
+" formatting."
+msgstr "Puedes usar <a href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> para el 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:32
+#: 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:35
+#: 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:37
+#: mediagoblin/user_pages/forms.py:42
msgid "Include a note"
msgstr "Incluir una nota"
@@ -1027,74 +1114,69 @@ msgstr "Incluir una nota"
msgid "commented on your post"
msgstr "comentó tu publicación"
-#: mediagoblin/user_pages/views.py:156
+#: mediagoblin/user_pages/views.py:166
msgid "Oops, your comment was empty."
msgstr "Ups, tu comentario estaba vacío."
-#: mediagoblin/user_pages/views.py:162
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
msgstr "¡Tu comentario ha sido publicado!"
-#: mediagoblin/user_pages/views.py:230
+#: mediagoblin/user_pages/views.py:197
+msgid "Please check your entries and try again."
+msgstr "Por favor, revisa tus entradas e inténtalo de nuevo."
+
+#: mediagoblin/user_pages/views.py:237
msgid "You have to select or add a collection"
msgstr "Tienes que seleccionar o añadir una colección"
-#: mediagoblin/user_pages/views.py:238
+#: mediagoblin/user_pages/views.py:248
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr "%s\" ya está en la colección \"%s\""
-#: mediagoblin/user_pages/views.py:253
+#: mediagoblin/user_pages/views.py:264
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr "\"%s\" añadido a la colección \"%s\""
-#: mediagoblin/user_pages/views.py:261
-msgid "Please check your entries and try again."
-msgstr "Por favor, revisa tus entradas e inténtalo de nuevo."
-
-#: mediagoblin/user_pages/views.py:292
-msgid ""
-"Some of the files with this entry seem to be missing. Deleting anyway."
-msgstr "Al parecer algunos de los ficheros en esta entrada se han perdido. Borrando igualmente."
-
-#: mediagoblin/user_pages/views.py:297
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
msgstr "Eliminaste el contenido"
-#: mediagoblin/user_pages/views.py:304
+#: mediagoblin/user_pages/views.py:293
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:312
+#: mediagoblin/user_pages/views.py:301
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. Proceder con precaución."
+msgstr "Estás a punto de eliminar un contenido de otro usuario. Procede con precaución."
-#: mediagoblin/user_pages/views.py:370
+#: mediagoblin/user_pages/views.py:375
msgid "You deleted the item from the collection."
msgstr "Borraste el ítem de la colección."
-#: mediagoblin/user_pages/views.py:374
+#: mediagoblin/user_pages/views.py:379
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:384
+#: mediagoblin/user_pages/views.py:389
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:417
+#: mediagoblin/user_pages/views.py:422
#, python-format
msgid "You deleted the collection \"%s\""
msgstr "Borraste la colección \"%s\""
-#: mediagoblin/user_pages/views.py:424
+#: mediagoblin/user_pages/views.py:429
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:434
+#: mediagoblin/user_pages/views.py:439
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
index ba9aad9b..4b319ebd 100644
--- a/mediagoblin/i18n/fa/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/fa/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/fa/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/fa/LC_MESSAGES/mediagoblin.po
index 44e8b802..028ab5d4 100644
--- a/mediagoblin/i18n/fa/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/fa/LC_MESSAGES/mediagoblin.po
@@ -1,5 +1,5 @@
# Translations template for PROJECT.
-# Copyright (C) 2012 ORGANIZATION
+# Copyright (C) 2013 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: http://issues.mediagoblin.org/\n"
-"POT-Creation-Date: 2012-12-20 09:18-0600\n"
-"PO-Revision-Date: 2012-12-20 15:14+0000\n"
+"POT-Creation-Date: 2013-03-04 18:04-0600\n"
+"PO-Revision-Date: 2013-03-05 00:04+0000\n"
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
@@ -19,82 +19,96 @@ msgstr ""
"Language: fa\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:41
+#: mediagoblin/auth/forms.py:28
+msgid "Invalid User name or email address."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:29
+msgid "This field does not take email addresses."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:30
+msgid "This field requires an email address."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:52 mediagoblin/auth/forms.py:67
msgid "Username"
msgstr "نام کاربری"
-#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:45
+#: mediagoblin/auth/forms.py:56 mediagoblin/auth/forms.py:71
msgid "Password"
msgstr "گذرواٰژه"
-#: mediagoblin/auth/forms.py:34
+#: mediagoblin/auth/forms.py:60
msgid "Email address"
msgstr "آدرس ایمیل"
-#: mediagoblin/auth/forms.py:51
+#: mediagoblin/auth/forms.py:78
msgid "Username or email"
msgstr ""
-#: mediagoblin/auth/forms.py:58
-msgid "Incorrect input"
-msgstr ""
-
-#: mediagoblin/auth/views.py:55
+#: mediagoblin/auth/views.py:54
msgid "Sorry, registration is disabled on this instance."
msgstr "Ù…ØªØ§Ø³ÙØ§Ù†Ù‡ØŒØ«Ø¨ØªÙ†Ø§Ù… به طور موقت غیر ÙØ¹Ø§Ù„ است."
-#: mediagoblin/auth/views.py:75
+#: mediagoblin/auth/views.py:68
msgid "Sorry, a user with that name already exists."
msgstr "Ù…ØªØ§Ø³ÙØ§Ù†Ù‡ کاربری با این نام کاربری وجود دارد."
-#: mediagoblin/auth/views.py:79
+#: mediagoblin/auth/views.py:72
msgid "Sorry, a user with that email address already exists."
msgstr ""
-#: mediagoblin/auth/views.py:182
+#: mediagoblin/auth/views.py:174
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
msgstr "ایمیل شما تایید شد.شما می توانید حالا وارد شوید،نمایه خود را ویرایش کنید و تصاویر خود را ثبت کنید!"
-#: mediagoblin/auth/views.py:188
+#: mediagoblin/auth/views.py:180
msgid "The verification key or user id is incorrect"
msgstr "این کد تاییدیه یا شناسه کاربری صحیح نیست."
-#: mediagoblin/auth/views.py:206
+#: mediagoblin/auth/views.py:198
msgid "You must be logged in so we know who to send the email to!"
msgstr ""
-#: mediagoblin/auth/views.py:214
+#: mediagoblin/auth/views.py:206
msgid "You've already verified your email address!"
msgstr ""
-#: mediagoblin/auth/views.py:227
+#: mediagoblin/auth/views.py:219
msgid "Resent your verification email."
msgstr "ایمیل تاییدیه باز ارسال شد."
-#: mediagoblin/auth/views.py:263
+#: mediagoblin/auth/views.py:250
+msgid ""
+"If that email address (case sensitive!) is registered an email has been sent"
+" with instructions on how to change your password."
+msgstr ""
+
+#: mediagoblin/auth/views.py:261
+msgid "Couldn't find someone with that username."
+msgstr ""
+
+#: mediagoblin/auth/views.py:264
msgid ""
"An email has been sent with instructions on how to change your password."
msgstr ""
-#: mediagoblin/auth/views.py:273
+#: mediagoblin/auth/views.py:271
msgid ""
"Could not send password recovery email as your username is inactive or your "
"account's email address has not been verified."
msgstr ""
-#: mediagoblin/auth/views.py:285
-msgid "Couldn't find someone with that username or email."
-msgstr ""
-
-#: mediagoblin/auth/views.py:333
+#: mediagoblin/auth/views.py:328
msgid "You can now log in using your new password."
msgstr ""
-#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:82
+#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:93
#: mediagoblin/submit/forms.py:28 mediagoblin/submit/forms.py:47
-#: mediagoblin/user_pages/forms.py:40
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr "عنوان"
@@ -103,8 +117,8 @@ msgid "Description of this work"
msgstr ""
#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:52
-#: mediagoblin/edit/forms.py:86 mediagoblin/submit/forms.py:32
-#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:44
+#: mediagoblin/edit/forms.py:97 mediagoblin/submit/forms.py:32
+#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:49
msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
@@ -119,11 +133,11 @@ msgstr "برچسب"
msgid "Separate tags by commas."
msgstr ""
-#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:90
+#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:101
msgid "Slug"
msgstr ""
-#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:91
+#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:102
msgid "The slug can't be empty"
msgstr ""
@@ -162,65 +176,81 @@ msgstr ""
msgid "New password"
msgstr ""
-#: mediagoblin/edit/forms.py:71
+#: mediagoblin/edit/forms.py:74
+msgid "License preference"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:80
+msgid "This will be your default license on upload forms."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:82
msgid "Email me when others comment on my media"
msgstr ""
-#: mediagoblin/edit/forms.py:83
+#: mediagoblin/edit/forms.py:94
msgid "The title can't be empty"
msgstr ""
-#: mediagoblin/edit/forms.py:85 mediagoblin/submit/forms.py:50
-#: mediagoblin/user_pages/forms.py:43
+#: mediagoblin/edit/forms.py:96 mediagoblin/submit/forms.py:50
+#: mediagoblin/user_pages/forms.py:48
msgid "Description of this collection"
msgstr ""
-#: mediagoblin/edit/forms.py:92
+#: mediagoblin/edit/forms.py:103
msgid ""
"The title part of this collection's address. You usually don't need to "
"change this."
msgstr ""
-#: mediagoblin/edit/views.py:65
+#: mediagoblin/edit/views.py:66
msgid "An entry with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:86
+#: mediagoblin/edit/views.py:85
msgid "You are editing another user's media. Proceed with caution."
msgstr "شما در حال ویرایش رسانه کاربر دیگری هستید.با احتیاط عمل کنید"
-#: mediagoblin/edit/views.py:156
+#: mediagoblin/edit/views.py:155
#, python-format
msgid "You added the attachment %s!"
msgstr ""
-#: mediagoblin/edit/views.py:181
+#: mediagoblin/edit/views.py:182
+msgid "You can only edit your own profile."
+msgstr ""
+
+#: mediagoblin/edit/views.py:188
msgid "You are editing a user's profile. Proceed with caution."
msgstr "شما در حال ویرایش نمایه کاربر دیگری هستید.با احتیاط عمل کنید."
-#: mediagoblin/edit/views.py:197
+#: mediagoblin/edit/views.py:204
msgid "Profile changes saved"
msgstr ""
-#: mediagoblin/edit/views.py:226 mediagoblin/edit/views.py:246
+#: mediagoblin/edit/views.py:241
+msgid "Wrong password"
+msgstr ""
+
+#: mediagoblin/edit/views.py:252
msgid "Account settings saved"
msgstr ""
-#: mediagoblin/edit/views.py:251
-msgid "Wrong password"
+#: mediagoblin/edit/views.py:286
+msgid "You need to confirm the deletion of your account."
msgstr ""
-#: mediagoblin/edit/views.py:287 mediagoblin/submit/views.py:211
-#: mediagoblin/user_pages/views.py:210
+#: mediagoblin/edit/views.py:322 mediagoblin/submit/views.py:142
+#: mediagoblin/user_pages/views.py:214
#, python-format
msgid "You already have a collection called \"%s\"!"
msgstr ""
-#: mediagoblin/edit/views.py:291
+#: mediagoblin/edit/views.py:326
msgid "A collection with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:308
+#: mediagoblin/edit/views.py:343
msgid "You are editing another user's collection. Proceed with caution."
msgstr ""
@@ -236,54 +266,62 @@ msgstr ""
msgid "However, old link directory symlink found; removed.\n"
msgstr ""
-#: mediagoblin/media_types/__init__.py:60
-#: mediagoblin/media_types/__init__.py:101
+#: 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:61
+#: mediagoblin/media_types/__init__.py:102
msgid "Sorry, I don't support that file type :("
msgstr ""
-#: mediagoblin/media_types/video/processing.py:35
+#: mediagoblin/media_types/video/processing.py:36
msgid "Video transcoding failed"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:26
-msgid "Client ID"
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
+msgid "Location"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:28
-msgid "Next URL"
+#: 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/oauth/forms.py:30
+#: mediagoblin/plugins/oauth/forms.py:29
msgid "Allow"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:31
+#: mediagoblin/plugins/oauth/forms.py:30
msgid "Deny"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:35
+#: mediagoblin/plugins/oauth/forms.py:34
msgid "Name"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:36
+#: mediagoblin/plugins/oauth/forms.py:35
msgid "The name of the OAuth client"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:37
+#: mediagoblin/plugins/oauth/forms.py:36
msgid "Description"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:39
+#: 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:41
+#: mediagoblin/plugins/oauth/forms.py:40
msgid "Type"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:46
+#: 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"
@@ -293,25 +331,40 @@ msgid ""
" JavaScript client)."
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:53
+#: mediagoblin/plugins/oauth/forms.py:52
msgid "Redirect URI"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:55
+#: 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:67
+#: mediagoblin/plugins/oauth/forms.py:66
msgid "This field is required for public clients"
msgstr ""
-#: mediagoblin/plugins/oauth/views.py:60
+#: mediagoblin/plugins/oauth/views.py:59
msgid "The client {0} has been registered!"
msgstr ""
-#: mediagoblin/processing/__init__.py:138
+#: 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/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:172
msgid "Invalid file given for media type."
msgstr "ÙØ§ÛŒÙ„ÛŒ نا معتبر برای نوع رسانه داده شده."
@@ -319,56 +372,74 @@ msgstr "ÙØ§ÛŒÙ„ÛŒ نا معتبر برای نوع رسانه داده شده."
msgid "File"
msgstr "ÙØ§ÛŒÙ„"
-#: mediagoblin/submit/views.py:57
+#: mediagoblin/submit/views.py:51
msgid "You must provide a file."
msgstr "شما باید ÙØ§ÛŒÙ„ÛŒ ارايه بدهید."
-#: mediagoblin/submit/views.py:164
+#: mediagoblin/submit/views.py:97
msgid "Woohoo! Submitted!"
msgstr "هورا!ثبت شد!"
-#: mediagoblin/submit/views.py:215
+#: mediagoblin/submit/views.py:146
#, python-format
msgid "Collection \"%s\" added!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:48
-msgid "MediaGoblin logo"
-msgstr "لوگو مدیاگوبلین"
+#: mediagoblin/templates/mediagoblin/base.html:64
+msgid "Verify your email!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "log out"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:54
+#: mediagoblin/templates/mediagoblin/base.html:70
+#: mediagoblin/templates/mediagoblin/auth/login.html:28
+#: mediagoblin/templates/mediagoblin/auth/login.html:36
+#: mediagoblin/templates/mediagoblin/auth/login.html:54
+msgid "Log in"
+msgstr "ورود"
+
+#: mediagoblin/templates/mediagoblin/base.html:79
#, python-format
msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:60
-msgid "log out"
+#: mediagoblin/templates/mediagoblin/base.html:86
+msgid "Change account settings"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:62
-#: mediagoblin/templates/mediagoblin/root.html:28
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:151
-msgid "Add media"
+#: mediagoblin/templates/mediagoblin/base.html:90
+#: mediagoblin/templates/mediagoblin/base.html:105
+#: mediagoblin/templates/mediagoblin/admin/panel.html:21
+#: mediagoblin/templates/mediagoblin/admin/panel.html:26
+#: 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:93
+msgid "Log out"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:68
-msgid "Verify your email!"
+#: mediagoblin/templates/mediagoblin/base.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:156
+msgid "Add media"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:73
-#: mediagoblin/templates/mediagoblin/auth/login.html:28
-#: mediagoblin/templates/mediagoblin/auth/login.html:36
-#: mediagoblin/templates/mediagoblin/auth/login.html:54
-msgid "Log in"
-msgstr "ورود"
+#: mediagoblin/templates/mediagoblin/base.html:99
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
+msgid "Create new collection"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:87
+#: mediagoblin/templates/mediagoblin/base.html:122
+#, python-format
msgid ""
-"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
-"href=\"http://gnu.org/\">GNU</a> project."
+"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/base.html:90
+#: mediagoblin/templates/mediagoblin/base.html:125
#, python-format
msgid ""
"Released under the <a "
@@ -380,52 +451,31 @@ msgstr ""
msgid "Image of goblin stressing out"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:25
-msgid "Actions"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/root.html:31
-msgid "Create new collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:34
-msgid "Change account settings"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:38
-#: mediagoblin/templates/mediagoblin/root.html:44
-#: mediagoblin/templates/mediagoblin/admin/panel.html:21
-#: mediagoblin/templates/mediagoblin/admin/panel.html:26
-#: 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/root.html:51
msgid "Explore"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:53
+#: mediagoblin/templates/mediagoblin/root.html:33
msgid "Hi there, welcome to this MediaGoblin site!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:55
+#: mediagoblin/templates/mediagoblin/root.html:35
msgid ""
"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
"extraordinarily great piece of media hosting software."
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:56
+#: mediagoblin/templates/mediagoblin/root.html:36
msgid ""
"To add your own media, place comments, and more, you can log in with your "
"MediaGoblin account."
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:58
+#: mediagoblin/templates/mediagoblin/root.html:38
msgid "Don't have one yet? It's easy!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:59
+#: mediagoblin/templates/mediagoblin/root.html:39
#, python-format
msgid ""
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Create an account at this site</a>\n"
@@ -433,7 +483,7 @@ msgid ""
" <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:67
+#: mediagoblin/templates/mediagoblin/root.html:47
msgid "Most recent media"
msgstr ""
@@ -539,41 +589,62 @@ msgid ""
"%(verification_url)s"
msgstr "سلام %(username)s,\n\nبرای ÙØ¹Ø§Ù„ سازی شناسه کاربری گنو مدیاگوبلین خود ،پیوند زیر را در مرورگر خود باز کنید.\n\n%(verification_url)s"
+#: 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:43
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:159
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:175
msgid "Attachments"
msgstr ""
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
msgid "Add attachment"
msgstr ""
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:60
+#: 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:81
+#: 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:62
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:51
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
msgid "Save changes"
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:47
+#: 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
@@ -586,13 +657,17 @@ msgstr "ویرایش %(media_title)s"
msgid "Changing %(username)s's account settings"
msgstr ""
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
+msgid "Delete my account"
+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:35
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
#, python-format
msgid "Editing %(username)s's profile"
msgstr "در حال ویرایش نمایه %(username)s"
@@ -608,7 +683,7 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
msgstr ""
@@ -631,7 +706,7 @@ msgid ""
msgstr ""
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:56
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:61
msgid "Original file"
msgstr ""
@@ -643,8 +718,8 @@ msgstr ""
#: 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:67
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
+#: 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 ""
@@ -689,21 +764,21 @@ msgstr ""
msgid "Object Height"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
msgid ""
-"Sorry, this video will not work because \n"
-"\t your web browser does not support HTML5 \n"
-"\t video."
+"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:43
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:47
msgid ""
"You can get a modern web browser that \n"
-"\t can play this video at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:69
msgid "WebM file (640p; VP8/Vorbis)"
msgstr ""
@@ -711,12 +786,6 @@ msgstr ""
msgid "Add a collection"
msgstr ""
-#: mediagoblin/templates/mediagoblin/submit/collection.html:30
-#: mediagoblin/templates/mediagoblin/submit/start.html:34
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-msgid "Add"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
msgid "Add your media"
@@ -733,12 +802,12 @@ 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:87
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
msgid "Edit"
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:91
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
msgid "Delete"
msgstr ""
@@ -748,11 +817,6 @@ msgstr ""
msgid "Really delete %(title)s?"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:47
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Delete permanently"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:31
#, python-format
msgid "Really remove %(media_title)s from %(collection_title)s?"
@@ -762,6 +826,16 @@ msgstr ""
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 ""
@@ -774,56 +848,53 @@ msgstr ""
msgid "%(username)s's media"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:37
+#: 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>'s رسانه های"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:46
+#: 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:102
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:94
msgid "Add a comment"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:109
-msgid ""
-"You can use <a "
-"href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> for"
-" formatting."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:113
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:102
msgid "Add this comment"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:123
msgid "at"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:152
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:144
#, python-format
msgid ""
"<h3>Added on</h3>\n"
" <p>%(date)s</p>"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:202
-msgid "Add media to collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
#, python-format
-msgid "Add %(title)s to collection"
+msgid "Add “%(media_title)s†to a collection"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:51
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
msgstr ""
@@ -885,27 +956,31 @@ msgstr "اگر شما آن کاربر هستید و ایمیل تایید خود
msgid "Here's a spot to tell others about yourself."
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:101
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:100
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:117
msgid "Edit profile"
msgstr "ویرایش نمایه"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:105
msgid "This user hasn't filled in their profile (yet)."
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:124
+msgid "Browse collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:137
#, python-format
msgid "View all of %(username)s's media"
msgstr "نمایش تمامی رسانه های %(username)s"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:145
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:150
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:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:162
#: 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..."
@@ -915,28 +990,24 @@ msgstr ""
msgid "(remove)"
msgstr ""
-#: mediagoblin/templates/mediagoblin/utils/collections.html:20
-#, python-format
-msgid "In collections (%(collected)s)"
+#: 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/geolocation_map.html:25
-msgid "Location"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/utils/geolocation_map.html:53
-#, python-format
-msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
msgstr ""
@@ -967,49 +1038,64 @@ msgstr ""
msgid "Tagged with"
msgstr ""
-#: mediagoblin/tools/exif.py:78
+#: mediagoblin/tools/exif.py:80
msgid "Could not read the image file."
msgstr ""
-#: mediagoblin/tools/response.py:30
+#: mediagoblin/tools/response.py:35
msgid "Oops!"
msgstr "اوه"
-#: mediagoblin/tools/response.py:31
+#: mediagoblin/tools/response.py:36
msgid "An error occured"
msgstr ""
-#: mediagoblin/tools/response.py:46
+#: mediagoblin/tools/response.py:51
msgid "Operation not allowed"
msgstr ""
-#: mediagoblin/tools/response.py:47
+#: mediagoblin/tools/response.py:52
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:55
+#: mediagoblin/tools/response.py:60
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/user_pages/forms.py:28
+#: 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\">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:32
+#: 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:35
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:40
msgid "-- Select --"
msgstr ""
-#: mediagoblin/user_pages/forms.py:37
+#: mediagoblin/user_pages/forms.py:42
msgid "Include a note"
msgstr ""
@@ -1017,74 +1103,69 @@ msgstr ""
msgid "commented on your post"
msgstr ""
-#: mediagoblin/user_pages/views.py:156
+#: mediagoblin/user_pages/views.py:166
msgid "Oops, your comment was empty."
msgstr ""
-#: mediagoblin/user_pages/views.py:162
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
msgstr ""
-#: mediagoblin/user_pages/views.py:230
+#: mediagoblin/user_pages/views.py:197
+msgid "Please check your entries and try again."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:237
msgid "You have to select or add a collection"
msgstr ""
-#: mediagoblin/user_pages/views.py:238
+#: mediagoblin/user_pages/views.py:248
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:253
+#: mediagoblin/user_pages/views.py:264
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:261
-msgid "Please check your entries and try again."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:292
-msgid ""
-"Some of the files with this entry seem to be missing. Deleting anyway."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:297
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
msgstr ""
-#: mediagoblin/user_pages/views.py:304
+#: mediagoblin/user_pages/views.py:293
msgid "The media was not deleted because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/user_pages/views.py:312
+#: mediagoblin/user_pages/views.py:301
msgid "You are about to delete another user's media. Proceed with caution."
msgstr ""
-#: mediagoblin/user_pages/views.py:370
+#: mediagoblin/user_pages/views.py:375
msgid "You deleted the item from the collection."
msgstr ""
-#: mediagoblin/user_pages/views.py:374
+#: mediagoblin/user_pages/views.py:379
msgid "The item was not removed because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/user_pages/views.py:384
+#: mediagoblin/user_pages/views.py:389
msgid ""
"You are about to delete an item from another user's collection. Proceed with"
" caution."
msgstr ""
-#: mediagoblin/user_pages/views.py:417
+#: mediagoblin/user_pages/views.py:422
#, python-format
msgid "You deleted the collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:424
+#: mediagoblin/user_pages/views.py:429
msgid ""
"The collection was not deleted because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/user_pages/views.py:434
+#: mediagoblin/user_pages/views.py:439
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
index b0106832..ada992ce 100644
--- a/mediagoblin/i18n/fr/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/fr/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/fr/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/fr/LC_MESSAGES/mediagoblin.po
index 39480ea9..b4c76bd2 100644
--- a/mediagoblin/i18n/fr/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/fr/LC_MESSAGES/mediagoblin.po
@@ -1,12 +1,14 @@
# Translations template for PROJECT.
-# Copyright (C) 2012 ORGANIZATION
+# Copyright (C) 2013 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
# <a5565930@nepwk.com>, 2011.
# <alexispay@gmail.com>, 2012.
# <chesuidayeur@yahoo.fr>, 2011.
+# <crash_bibit@hotmail.com>, 2013.
# <joehillen@gmail.com>, 2011.
+# Laurent Pointecouteau <hell_pe@no-log.org>, 2013.
# <marktraceur@gmail.com>, 2011.
# <maxineb@members.fsf.org>, 2011.
# <transifex@wandborg.se>, 2011.
@@ -15,8 +17,8 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://issues.mediagoblin.org/\n"
-"POT-Creation-Date: 2012-12-20 09:18-0600\n"
-"PO-Revision-Date: 2012-12-20 15:14+0000\n"
+"POT-Creation-Date: 2013-03-04 18:04-0600\n"
+"PO-Revision-Date: 2013-03-05 00:04+0000\n"
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
"Language-Team: French (http://www.transifex.com/projects/p/mediagoblin/language/fr/)\n"
"MIME-Version: 1.0\n"
@@ -26,82 +28,96 @@ msgstr ""
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:41
+#: mediagoblin/auth/forms.py:28
+msgid "Invalid User name or email address."
+msgstr "Nom d'utilisateur ou adresse de courriel invalide."
+
+#: mediagoblin/auth/forms.py:29
+msgid "This field does not take email addresses."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:30
+msgid "This field requires an email address."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:52 mediagoblin/auth/forms.py:67
msgid "Username"
msgstr "Nom d'utilisateur"
-#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:45
+#: mediagoblin/auth/forms.py:56 mediagoblin/auth/forms.py:71
msgid "Password"
msgstr "Mot de passe"
-#: mediagoblin/auth/forms.py:34
+#: mediagoblin/auth/forms.py:60
msgid "Email address"
msgstr "Adresse e-mail"
-#: mediagoblin/auth/forms.py:51
+#: mediagoblin/auth/forms.py:78
msgid "Username or email"
msgstr "Nom d'utilisateur ou email"
-#: mediagoblin/auth/forms.py:58
-msgid "Incorrect input"
-msgstr "Entrée incorrecte"
-
-#: mediagoblin/auth/views.py:55
+#: mediagoblin/auth/views.py:54
msgid "Sorry, registration is disabled on this instance."
msgstr "L'inscription n'est pas activée sur ce serveur, désolé."
-#: mediagoblin/auth/views.py:75
+#: mediagoblin/auth/views.py:68
msgid "Sorry, a user with that name already exists."
msgstr "Un utilisateur existe déjà avec ce nom, désolé."
-#: mediagoblin/auth/views.py:79
+#: mediagoblin/auth/views.py:72
msgid "Sorry, a user with that email address already exists."
msgstr "Désolé, il existe déjà un utilisateur ayant cette adresse e-mail."
-#: mediagoblin/auth/views.py:182
+#: mediagoblin/auth/views.py:174
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
msgstr "Votre adresse e-mail a bien été vérifiée. Vous pouvez maintenant vous identifier, modifier votre profil, et soumettre des images !"
-#: mediagoblin/auth/views.py:188
+#: mediagoblin/auth/views.py:180
msgid "The verification key or user id is incorrect"
msgstr "La clé de vérification ou le nom d'utilisateur est incorrect."
-#: mediagoblin/auth/views.py:206
+#: mediagoblin/auth/views.py:198
msgid "You must be logged in so we know who to send the email to!"
msgstr "Vous devez être authentifié afin que nous sachions à qui envoyer l'e-mail !"
-#: mediagoblin/auth/views.py:214
+#: mediagoblin/auth/views.py:206
msgid "You've already verified your email address!"
msgstr "Votre adresse e-mail a déjà été vérifiée !"
-#: mediagoblin/auth/views.py:227
+#: mediagoblin/auth/views.py:219
msgid "Resent your verification email."
msgstr "E-mail de vérification renvoyé."
-#: mediagoblin/auth/views.py:263
+#: mediagoblin/auth/views.py:250
+msgid ""
+"If that email address (case sensitive!) is registered an email has been sent"
+" with instructions on how to change your password."
+msgstr ""
+
+#: mediagoblin/auth/views.py:261
+msgid "Couldn't find someone with that username."
+msgstr "Nom d'utilisateur introuvable."
+
+#: mediagoblin/auth/views.py:264
msgid ""
"An email has been sent with instructions on how to change your password."
msgstr "Un email contenant les instructions pour changer votre mot de passe viens de vous être envoyé"
-#: mediagoblin/auth/views.py:273
+#: mediagoblin/auth/views.py:271
msgid ""
"Could not send password recovery email as your username is inactive or your "
"account's email address has not been verified."
msgstr "Impossible d'envoyer un email de récupération de mot de passe : votre compte est inactif ou bien l'email de votre compte n'a pas été vérifiée."
-#: mediagoblin/auth/views.py:285
-msgid "Couldn't find someone with that username or email."
-msgstr "Impossible de trouver un utilisateur avec ce nom ou cette email."
-
-#: mediagoblin/auth/views.py:333
+#: mediagoblin/auth/views.py:328
msgid "You can now log in using your new password."
msgstr "Vous pouvez maintenant vous connecter avec votre nouveau mot de passe."
-#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:82
+#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:93
#: mediagoblin/submit/forms.py:28 mediagoblin/submit/forms.py:47
-#: mediagoblin/user_pages/forms.py:40
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr "Titre"
@@ -110,8 +126,8 @@ msgid "Description of this work"
msgstr "Descriptif pour ce travail"
#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:52
-#: mediagoblin/edit/forms.py:86 mediagoblin/submit/forms.py:32
-#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:44
+#: mediagoblin/edit/forms.py:97 mediagoblin/submit/forms.py:32
+#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:49
msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
@@ -126,11 +142,11 @@ msgstr "Tags"
msgid "Separate tags by commas."
msgstr "Séparez les champs avec des virgules."
-#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:90
+#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:101
msgid "Slug"
msgstr "Légende"
-#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:91
+#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:102
msgid "The slug can't be empty"
msgstr "La légende ne peut pas être laissée vide."
@@ -169,65 +185,81 @@ msgstr "Entrez votre ancien mot de passe pour prouver que vous êtes bien le pro
msgid "New password"
msgstr "Nouveau mot de passe"
-#: mediagoblin/edit/forms.py:71
+#: mediagoblin/edit/forms.py:74
+msgid "License preference"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:80
+msgid "This will be your default license on upload forms."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:82
msgid "Email me when others comment on my media"
msgstr "Me prévenir par email lorsque d'autres commentent mes médias"
-#: mediagoblin/edit/forms.py:83
+#: mediagoblin/edit/forms.py:94
msgid "The title can't be empty"
msgstr "Le titre ne peut être vide"
-#: mediagoblin/edit/forms.py:85 mediagoblin/submit/forms.py:50
-#: mediagoblin/user_pages/forms.py:43
+#: mediagoblin/edit/forms.py:96 mediagoblin/submit/forms.py:50
+#: mediagoblin/user_pages/forms.py:48
msgid "Description of this collection"
msgstr "Description de cette collection"
-#: mediagoblin/edit/forms.py:92
+#: mediagoblin/edit/forms.py:103
msgid ""
"The title part of this collection's address. You usually don't need to "
"change this."
msgstr "Le titre affiché dans l'URL de la collection. Vous n'avez généralement pas besoin d'y toucher."
-#: mediagoblin/edit/views.py:65
+#: mediagoblin/edit/views.py:66
msgid "An entry with that slug already exists for this user."
msgstr "Une entrée existe déjà pour cet utilisateur avec la même légende."
-#: mediagoblin/edit/views.py:86
+#: mediagoblin/edit/views.py:85
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:156
+#: mediagoblin/edit/views.py:155
#, python-format
msgid "You added the attachment %s!"
-msgstr ""
+msgstr "Vous avez ajouté la pièce jointe %s !"
+
+#: mediagoblin/edit/views.py:182
+msgid "You can only edit your own profile."
+msgstr "Vous ne pouvez modifier que votre propre profil."
-#: mediagoblin/edit/views.py:181
+#: mediagoblin/edit/views.py:188
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:197
+#: mediagoblin/edit/views.py:204
msgid "Profile changes saved"
msgstr "Les changements apportés au profile ont étés sauvegardés"
-#: mediagoblin/edit/views.py:226 mediagoblin/edit/views.py:246
+#: mediagoblin/edit/views.py:241
+msgid "Wrong password"
+msgstr "Mauvais mot de passe"
+
+#: mediagoblin/edit/views.py:252
msgid "Account settings saved"
msgstr "Les changements des préférences du compte ont étés sauvegardés"
-#: mediagoblin/edit/views.py:251
-msgid "Wrong password"
-msgstr "Mauvais mot de passe"
+#: mediagoblin/edit/views.py:286
+msgid "You need to confirm the deletion of your account."
+msgstr "Vous devez confirmer la suppression de votre compte."
-#: mediagoblin/edit/views.py:287 mediagoblin/submit/views.py:211
-#: mediagoblin/user_pages/views.py:210
+#: mediagoblin/edit/views.py:322 mediagoblin/submit/views.py:142
+#: mediagoblin/user_pages/views.py:214
#, python-format
msgid "You already have a collection called \"%s\"!"
msgstr "Vous avez déjà une collection appelée \"%s\" !"
-#: mediagoblin/edit/views.py:291
+#: mediagoblin/edit/views.py:326
msgid "A collection with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:308
+#: mediagoblin/edit/views.py:343
msgid "You are editing another user's collection. Proceed with caution."
msgstr "Vous éditez la collection d'un autre utilisateurs. Faites attention."
@@ -243,54 +275,62 @@ msgstr "Aucun répertoire \"asset\" pour ce thème\n"
msgid "However, old link directory symlink found; removed.\n"
msgstr ""
-#: mediagoblin/media_types/__init__.py:60
-#: mediagoblin/media_types/__init__.py:101
+#: 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:61
+#: mediagoblin/media_types/__init__.py:102
msgid "Sorry, I don't support that file type :("
msgstr "Désolé, mais je ne prends pas en charge cette extension de fichier :("
-#: mediagoblin/media_types/video/processing.py:35
+#: mediagoblin/media_types/video/processing.py:36
msgid "Video transcoding failed"
msgstr "L'encodage de la vidéo à échoué"
-#: mediagoblin/plugins/oauth/forms.py:26
-msgid "Client ID"
-msgstr ""
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
+msgid "Location"
+msgstr "Position"
-#: mediagoblin/plugins/oauth/forms.py:28
-msgid "Next URL"
-msgstr "Prochaine URL"
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:52
+#, python-format
+msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
+msgstr "Regarder sur <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-#: mediagoblin/plugins/oauth/forms.py:30
+#: mediagoblin/plugins/oauth/forms.py:29
msgid "Allow"
msgstr "Autoriser"
-#: mediagoblin/plugins/oauth/forms.py:31
+#: mediagoblin/plugins/oauth/forms.py:30
msgid "Deny"
msgstr "Refuser"
-#: mediagoblin/plugins/oauth/forms.py:35
+#: mediagoblin/plugins/oauth/forms.py:34
msgid "Name"
msgstr "Nom"
-#: mediagoblin/plugins/oauth/forms.py:36
+#: mediagoblin/plugins/oauth/forms.py:35
msgid "The name of the OAuth client"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:37
+#: mediagoblin/plugins/oauth/forms.py:36
msgid "Description"
msgstr "Description"
-#: mediagoblin/plugins/oauth/forms.py:39
+#: 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:41
+#: mediagoblin/plugins/oauth/forms.py:40
msgid "Type"
msgstr "Type"
-#: mediagoblin/plugins/oauth/forms.py:46
+#: 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"
@@ -300,25 +340,40 @@ msgid ""
" JavaScript client)."
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:53
+#: mediagoblin/plugins/oauth/forms.py:52
msgid "Redirect URI"
msgstr "URL de redirection"
-#: mediagoblin/plugins/oauth/forms.py:55
+#: mediagoblin/plugins/oauth/forms.py:54
msgid ""
"The redirect URI for the applications, this field\n"
" is <strong>required</strong> for public clients."
msgstr "L'URI de redirection pour l'application, ce champ est <strong>requis</strong> pour les clients publics"
-#: mediagoblin/plugins/oauth/forms.py:67
+#: mediagoblin/plugins/oauth/forms.py:66
msgid "This field is required for public clients"
msgstr "Ce champ est requis pour les clients publics"
-#: mediagoblin/plugins/oauth/views.py:60
+#: mediagoblin/plugins/oauth/views.py:59
msgid "The client {0} has been registered!"
msgstr "Le client {0} as été enregistré !"
-#: mediagoblin/processing/__init__.py:138
+#: 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/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr "Ajouter"
+
+#: mediagoblin/processing/__init__.py:172
msgid "Invalid file given for media type."
msgstr "Le fichier envoyé ne correspond pas au type de média."
@@ -326,56 +381,74 @@ msgstr "Le fichier envoyé ne correspond pas au type de média."
msgid "File"
msgstr "Fichier"
-#: mediagoblin/submit/views.py:57
+#: mediagoblin/submit/views.py:51
msgid "You must provide a file."
msgstr "Il vous faut fournir un fichier."
-#: mediagoblin/submit/views.py:164
+#: mediagoblin/submit/views.py:97
msgid "Woohoo! Submitted!"
msgstr "Youhou, c'est envoyé !"
-#: mediagoblin/submit/views.py:215
+#: mediagoblin/submit/views.py:146
#, python-format
msgid "Collection \"%s\" added!"
msgstr "Collection \"%s\" ajoutée !"
-#: mediagoblin/templates/mediagoblin/base.html:48
-msgid "MediaGoblin logo"
-msgstr "Logo MediaGoblin"
+#: mediagoblin/templates/mediagoblin/base.html:64
+msgid "Verify your email!"
+msgstr "Vérifiez votre adresse e-mail !"
-#: mediagoblin/templates/mediagoblin/base.html:54
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "log out"
+msgstr "Déconnexion"
+
+#: mediagoblin/templates/mediagoblin/base.html:70
+#: mediagoblin/templates/mediagoblin/auth/login.html:28
+#: mediagoblin/templates/mediagoblin/auth/login.html:36
+#: mediagoblin/templates/mediagoblin/auth/login.html:54
+msgid "Log in"
+msgstr "S'identifier"
+
+#: mediagoblin/templates/mediagoblin/base.html:79
#, python-format
msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:60
-msgid "log out"
+#: mediagoblin/templates/mediagoblin/base.html:86
+msgid "Change account settings"
+msgstr "Changer les paramètres du compte"
+
+#: mediagoblin/templates/mediagoblin/base.html:90
+#: mediagoblin/templates/mediagoblin/base.html:105
+#: mediagoblin/templates/mediagoblin/admin/panel.html:21
+#: mediagoblin/templates/mediagoblin/admin/panel.html:26
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
+msgid "Media processing panel"
+msgstr "Panneau pour le traitement des médias"
+
+#: mediagoblin/templates/mediagoblin/base.html:93
+msgid "Log out"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:62
-#: mediagoblin/templates/mediagoblin/root.html:28
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:151
+#: mediagoblin/templates/mediagoblin/base.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:156
msgid "Add media"
msgstr "Ajouter des médias"
-#: mediagoblin/templates/mediagoblin/base.html:68
-msgid "Verify your email!"
-msgstr "Vérifiez votre adresse e-mail !"
-
-#: mediagoblin/templates/mediagoblin/base.html:73
-#: mediagoblin/templates/mediagoblin/auth/login.html:28
-#: mediagoblin/templates/mediagoblin/auth/login.html:36
-#: mediagoblin/templates/mediagoblin/auth/login.html:54
-msgid "Log in"
-msgstr "S'identifier"
+#: mediagoblin/templates/mediagoblin/base.html:99
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
+msgid "Create new collection"
+msgstr "Créer une nouvelle collection"
-#: mediagoblin/templates/mediagoblin/base.html:87
+#: mediagoblin/templates/mediagoblin/base.html:122
+#, python-format
msgid ""
-"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
-"href=\"http://gnu.org/\">GNU</a> project."
-msgstr "Conçu avec <a href=\"http://mediagoblin.org\">MediaGoblin</a>, un projet <a href=\"http://gnu.org/\">GNU</a>."
+"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/base.html:90
+#: mediagoblin/templates/mediagoblin/base.html:125
#, python-format
msgid ""
"Released under the <a "
@@ -387,52 +460,31 @@ msgstr "Disponible sous la licence <a href=\"http://www.fsf.org/licensing/licens
msgid "Image of goblin stressing out"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:25
-msgid "Actions"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/root.html:31
-msgid "Create new collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:34
-msgid "Change account settings"
-msgstr "Changer les paramètres du compte"
-
-#: mediagoblin/templates/mediagoblin/root.html:38
-#: mediagoblin/templates/mediagoblin/root.html:44
-#: mediagoblin/templates/mediagoblin/admin/panel.html:21
-#: mediagoblin/templates/mediagoblin/admin/panel.html:26
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
-msgid "Media processing panel"
-msgstr "Panneau pour le traitement des médias"
-
-#: mediagoblin/templates/mediagoblin/root.html:51
msgid "Explore"
msgstr "Explorer"
-#: mediagoblin/templates/mediagoblin/root.html:53
+#: mediagoblin/templates/mediagoblin/root.html:33
msgid "Hi there, welcome to this MediaGoblin site!"
-msgstr "Bonjour, et bienvenu sur ce site MediaGoblin !"
+msgstr "Bonjour, et bienvenue sur ce site MediaGoblin !"
-#: mediagoblin/templates/mediagoblin/root.html:55
+#: mediagoblin/templates/mediagoblin/root.html:35
msgid ""
"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
"extraordinarily great piece of media hosting software."
msgstr "Ce site fait tourner <a href=\"http://mediagoblin.org\">MediaGoblin</a>, un logiciel d'hébergement de média extraordinairement génial."
-#: mediagoblin/templates/mediagoblin/root.html:56
+#: mediagoblin/templates/mediagoblin/root.html:36
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 connecter avec votre compte MediaGoblin"
-#: mediagoblin/templates/mediagoblin/root.html:58
+#: mediagoblin/templates/mediagoblin/root.html:38
msgid "Don't have one yet? It's easy!"
msgstr "Vous n'en avez pas ? C'est facile !"
-#: mediagoblin/templates/mediagoblin/root.html:59
+#: mediagoblin/templates/mediagoblin/root.html:39
#, python-format
msgid ""
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Create an account at this site</a>\n"
@@ -440,7 +492,7 @@ msgid ""
" <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
msgstr "<a class=\"button_action_highlight\" href=\"%(register_url)s\">Créez un compte sur ce site</a>\n ou\n <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Déployez MediaGoblin sur votre propre serveur</a>"
-#: mediagoblin/templates/mediagoblin/root.html:67
+#: mediagoblin/templates/mediagoblin/root.html:47
msgid "Most recent media"
msgstr "Tout derniers media"
@@ -546,41 +598,62 @@ msgid ""
"%(verification_url)s"
msgstr "Bonjour %(username)s,\n\npour activer votre compte sur GNU MediaGoblin, veuillez vous rendre à l'adresse suivante avec votre navigateur web:\n\n%(verification_url)s"
+#: 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 "Éditer les pièces jointes de %(media_title)s"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:43
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:159
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:175
msgid "Attachments"
msgstr "Pièces jointes"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
msgid "Add attachment"
msgstr "Ajouter une pièce jointe"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:60
+#: 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:81
+#: 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:62
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:51
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
msgid "Save changes"
msgstr "Enregistrer les modifications"
+#: 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:47
+#: 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
@@ -593,13 +666,17 @@ msgstr "Modification de %(media_title)s"
msgid "Changing %(username)s's account settings"
msgstr "Changement des préférences du compte de %(username)s"
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
+msgid "Delete my account"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:29
#, python-format
msgid "Editing %(collection_title)s"
msgstr "Modification de %(collection_title)s"
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:23
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
#, python-format
msgid "Editing %(username)s's profile"
msgstr "Modification du profil de %(username)s"
@@ -615,7 +692,7 @@ msgstr "Médias taggé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/stl.html:136
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
msgstr "Télécharger"
@@ -638,7 +715,7 @@ msgid ""
msgstr "Vous pouvez obtenir un navigateur à jour capable de lire cette vidéo sur <a href=\"http://getfirefox.com\">\n\t http://getfirefox.com</a>!"
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:56
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:61
msgid "Original file"
msgstr "Fichier original"
@@ -650,8 +727,8 @@ msgstr "fichier WebM (codec Vorbis)"
#: 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:67
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
+#: 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 "Image de %(media_title)s"
@@ -696,21 +773,21 @@ msgstr ""
msgid "Object Height"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
msgid ""
-"Sorry, this video will not work because \n"
-"\t your web browser does not support HTML5 \n"
-"\t video."
-msgstr "Désolé, cette vidéo ne s'affichera pas car\nvotre navigateur ne prends pas en charge le HTML5 pour les vidéos"
+"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:43
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:47
msgid ""
"You can get a modern web browser that \n"
-"\t can play this video at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
-msgstr "Vous pouvez obtenir un navigateur à jour capable de lire cette vidéo sur <a href=\"http://getfirefox.com\">\n\t http://getfirefox.com</a>!"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:69
msgid "WebM file (640p; VP8/Vorbis)"
msgstr "fichier WebM (640p; VP8/Vorbis)"
@@ -718,12 +795,6 @@ msgstr "fichier WebM (640p; VP8/Vorbis)"
msgid "Add a collection"
msgstr "Ajouter une collection"
-#: mediagoblin/templates/mediagoblin/submit/collection.html:30
-#: mediagoblin/templates/mediagoblin/submit/start.html:34
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-msgid "Add"
-msgstr "Ajouter"
-
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
msgid "Add your media"
@@ -740,12 +811,12 @@ 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:87
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
msgid "Edit"
msgstr "Éditer"
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:91
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
msgid "Delete"
msgstr "Effacer"
@@ -755,11 +826,6 @@ msgstr "Effacer"
msgid "Really delete %(title)s?"
msgstr "Voulez-vous vraiment supprimer %(title)s ?"
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:47
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Delete permanently"
-msgstr "Supprimer définitivement"
-
#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:31
#, python-format
msgid "Really remove %(media_title)s from %(collection_title)s?"
@@ -769,6 +835,16 @@ msgstr "Voulez vous vraiment retirer %(media_title)s de %(collection_title)s ?"
msgid "Remove"
msgstr "Retirer"
+#: 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 ""
@@ -781,56 +857,53 @@ msgstr "Bonjour %(username)s,\n%(comment_author)s a commenté votre post (%(comm
msgid "%(username)s's media"
msgstr "Medias de %(username)s"
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:37
+#: 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 "Médias de <a href=\"%(user_url)s\">%(username)s</a>"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
#, 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:102
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:94
msgid "Add a comment"
msgstr "Ajouter un commentaire"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:109
-msgid ""
-"You can use <a "
-"href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> for"
-" formatting."
-msgstr "Vous pouvez utilisez les <a href=\"http://daringfireball.net/projects/markdown/basics\">Balises</a> pour la mise en page."
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:113
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:102
msgid "Add this comment"
msgstr "Ajouter ce commentaire"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:123
msgid "at"
msgstr "à"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:152
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:144
#, python-format
msgid ""
"<h3>Added on</h3>\n"
" <p>%(date)s</p>"
msgstr "<h3>Ajouté le</h3>\n<p>%(date)s</p>"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:202
-msgid "Add media to collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
#, python-format
-msgid "Add %(title)s to collection"
-msgstr "Ajouter %(title)s à la collection"
+msgid "Add “%(media_title)s†to a collection"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:51
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
msgstr "+"
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
msgstr "Ajouter une nouvelle collection"
@@ -892,27 +965,31 @@ msgstr "Si c'est de vous qu'il s'agit, mais que vous avez perdu l'e-mail de vér
msgid "Here's a spot to tell others about yourself."
msgstr "Voici un endroit pour parler aux autres de vous-même."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:101
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:100
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:117
msgid "Edit profile"
msgstr "Modifier le profil"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:105
msgid "This user hasn't filled in their profile (yet)."
msgstr "Cet utilisateur n'a pas (encore) rempli son profil."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:124
+msgid "Browse collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:137
#, 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:145
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:150
msgid ""
"This is where your media will appear, but you don't seem to have added "
"anything yet."
msgstr "C'est là où vos médias apparaîssent, mais vous ne semblez pas avoir encore ajouté quoi que ce soit."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:162
#: 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..."
@@ -922,28 +999,24 @@ msgstr "Il ne semble pas y avoir de média là, pour l'instant ..."
msgid "(remove)"
msgstr ""
-#: mediagoblin/templates/mediagoblin/utils/collections.html:20
-#, python-format
-msgid "In collections (%(collected)s)"
-msgstr "Dans les collections (%(collected)s)"
+#: 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 "icone de flux"
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:23
msgid "Atom feed"
msgstr "flux Atom"
-#: mediagoblin/templates/mediagoblin/utils/geolocation_map.html:25
-msgid "Location"
-msgstr "Position"
-
-#: mediagoblin/templates/mediagoblin/utils/geolocation_map.html:53
-#, python-format
-msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-msgstr "Regarder sur <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
msgstr "Tous droits réservés"
@@ -974,49 +1047,64 @@ msgstr "le plus vieux"
msgid "Tagged with"
msgstr "Taggé avec"
-#: mediagoblin/tools/exif.py:78
+#: mediagoblin/tools/exif.py:80
msgid "Could not read the image file."
msgstr "Impossible de lire l'image."
-#: mediagoblin/tools/response.py:30
+#: mediagoblin/tools/response.py:35
msgid "Oops!"
msgstr "Zut !"
-#: mediagoblin/tools/response.py:31
+#: mediagoblin/tools/response.py:36
msgid "An error occured"
-msgstr ""
+msgstr "Une erreur est survenue"
-#: mediagoblin/tools/response.py:46
+#: mediagoblin/tools/response.py:51
msgid "Operation not allowed"
-msgstr ""
+msgstr "Opération non autorisée"
-#: mediagoblin/tools/response.py:47
+#: mediagoblin/tools/response.py:52
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 "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:55
+#: mediagoblin/tools/response.py:60
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 "Il ne semble pas y avoir de page à cette adresse. Désolé ! </p><p>Si vous êtes sûr que l'adresse est correcte, peut-être que la page que vous recherchez a été déplacée ou supprimée."
+
+#: mediagoblin/user_pages/forms.py:23
+msgid "Comment"
msgstr ""
-#: mediagoblin/user_pages/forms.py:28
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use <a "
+"href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> for"
+" formatting."
+msgstr "Vous pouvez utilisez les <a href=\"http://daringfireball.net/projects/markdown/basics\">Balises</a> pour la mise en page."
+
+#: mediagoblin/user_pages/forms.py:31
msgid "I am sure I want to delete this"
msgstr "Je suis sûr de vouloir supprimer cela"
-#: mediagoblin/user_pages/forms.py:32
+#: mediagoblin/user_pages/forms.py:35
msgid "I am sure I want to remove this item from the collection"
msgstr "Je suis certain de vouloir retirer cet élément de la collection"
-#: mediagoblin/user_pages/forms.py:35
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:40
msgid "-- Select --"
msgstr "-- Sélectionner --"
-#: mediagoblin/user_pages/forms.py:37
+#: mediagoblin/user_pages/forms.py:42
msgid "Include a note"
msgstr "Inclure une note"
@@ -1024,74 +1112,69 @@ msgstr "Inclure une note"
msgid "commented on your post"
msgstr "a commenté votre post"
-#: mediagoblin/user_pages/views.py:156
+#: mediagoblin/user_pages/views.py:166
msgid "Oops, your comment was empty."
msgstr "Oups, votre commentaire était vide."
-#: mediagoblin/user_pages/views.py:162
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
msgstr "Votre commentaire a été posté !"
-#: mediagoblin/user_pages/views.py:230
+#: mediagoblin/user_pages/views.py:197
+msgid "Please check your entries and try again."
+msgstr "Veuillez vérifier vos entrées et réessayer."
+
+#: mediagoblin/user_pages/views.py:237
msgid "You have to select or add a collection"
msgstr "Vous devez sélectionner ou ajouter une collection"
-#: mediagoblin/user_pages/views.py:238
+#: mediagoblin/user_pages/views.py:248
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr "\"%s\" est déjà dans la collection \"%s\""
-#: mediagoblin/user_pages/views.py:253
+#: mediagoblin/user_pages/views.py:264
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr "\"%s\" as été ajouté à la collection \"%s\""
-#: mediagoblin/user_pages/views.py:261
-msgid "Please check your entries and try again."
-msgstr "Veuillez vérifier vos entrées et réessayer."
-
-#: mediagoblin/user_pages/views.py:292
-msgid ""
-"Some of the files with this entry seem to be missing. Deleting anyway."
-msgstr "Certains fichiers correspondant à cette entrée semblent manquant. Suppression tout de même."
-
-#: mediagoblin/user_pages/views.py:297
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
msgstr "Vous avez supprimé le media."
-#: mediagoblin/user_pages/views.py:304
+#: mediagoblin/user_pages/views.py:293
msgid "The media was not deleted because you didn't check that you were sure."
msgstr "Ce media n'a pas été supprimé car vous n'avez pas confirmer que vous étiez sur."
-#: mediagoblin/user_pages/views.py:312
+#: mediagoblin/user_pages/views.py:301
msgid "You are about to delete another user's media. Proceed with caution."
msgstr "Vous êtes sur le point de supprimer des médias d'un autre utilisateur. Procédez avec prudence."
-#: mediagoblin/user_pages/views.py:370
+#: mediagoblin/user_pages/views.py:375
msgid "You deleted the item from the collection."
msgstr "Vous avez supprimé cet élément de la collection."
-#: mediagoblin/user_pages/views.py:374
+#: mediagoblin/user_pages/views.py:379
msgid "The item was not removed because you didn't check that you were sure."
msgstr "L'élément n'as pas été supprimé car vous n'avez pas confirmé votre certitude."
-#: mediagoblin/user_pages/views.py:384
+#: mediagoblin/user_pages/views.py:389
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. Procédez avec attention."
-#: mediagoblin/user_pages/views.py:417
+#: mediagoblin/user_pages/views.py:422
#, python-format
msgid "You deleted the collection \"%s\""
msgstr "Vous avez supprimé la collection \"%s\""
-#: mediagoblin/user_pages/views.py:424
+#: mediagoblin/user_pages/views.py:429
msgid ""
"The collection was not deleted because you didn't check that you were sure."
msgstr "La collection n'as pas été supprimée car vous n'avez pas confirmé votre certitude"
-#: mediagoblin/user_pages/views.py:434
+#: mediagoblin/user_pages/views.py:439
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. Procédez avec attention."
diff --git a/mediagoblin/i18n/he/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/he/LC_MESSAGES/mediagoblin.mo
index d38d8938..ce2963f7 100644
--- a/mediagoblin/i18n/he/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/he/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/he/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/he/LC_MESSAGES/mediagoblin.po
index 8041742b..12d932c8 100644
--- a/mediagoblin/i18n/he/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/he/LC_MESSAGES/mediagoblin.po
@@ -1,5 +1,5 @@
# Translations template for PROJECT.
-# Copyright (C) 2012 ORGANIZATION
+# Copyright (C) 2013 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: http://issues.mediagoblin.org/\n"
-"POT-Creation-Date: 2012-12-20 09:18-0600\n"
-"PO-Revision-Date: 2012-12-20 15:14+0000\n"
+"POT-Creation-Date: 2013-03-04 18:04-0600\n"
+"PO-Revision-Date: 2013-03-05 00:04+0000\n"
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
@@ -20,82 +20,96 @@ msgstr ""
"Language: he\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:41
+#: mediagoblin/auth/forms.py:28
+msgid "Invalid User name or email address."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:29
+msgid "This field does not take email addresses."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:30
+msgid "This field requires an email address."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:52 mediagoblin/auth/forms.py:67
msgid "Username"
msgstr "×©× ×ž×©×ª×ž×©"
-#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:45
+#: mediagoblin/auth/forms.py:56 mediagoblin/auth/forms.py:71
msgid "Password"
msgstr "סיסמה"
-#: mediagoblin/auth/forms.py:34
+#: mediagoblin/auth/forms.py:60
msgid "Email address"
msgstr "כתובת דו×״ל"
-#: mediagoblin/auth/forms.py:51
+#: mediagoblin/auth/forms.py:78
msgid "Username or email"
msgstr "×©× ×ž×©×ª×ž×© ×ו דו×״ל"
-#: mediagoblin/auth/forms.py:58
-msgid "Incorrect input"
-msgstr "קלט שגוי"
-
-#: mediagoblin/auth/views.py:55
+#: mediagoblin/auth/views.py:54
msgid "Sorry, registration is disabled on this instance."
msgstr "צר לי, ×¨×™×©×•× ×”×™× ×• מנוטרל על שרת ×–×”."
-#: mediagoblin/auth/views.py:75
+#: mediagoblin/auth/views.py:68
msgid "Sorry, a user with that name already exists."
msgstr "צר לי, משתמש ×¢× ×©× ×–×” כבר ×§×™×™×."
-#: mediagoblin/auth/views.py:79
+#: mediagoblin/auth/views.py:72
msgid "Sorry, a user with that email address already exists."
msgstr "צר לי, משתמש ×¢× ×“×•×״ל ×–×” כבר ×§×™×™×."
-#: mediagoblin/auth/views.py:182
+#: mediagoblin/auth/views.py:174
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
msgstr "כתובת הדו×״ל שלך ×ומתה. כעת ב×פשרותך להתחבר, לערוך ×ת דיוקנך, ולשלוח תמונות!"
-#: mediagoblin/auth/views.py:188
+#: mediagoblin/auth/views.py:180
msgid "The verification key or user id is incorrect"
msgstr "מפתח ×”×ימות ×ו זהות משתמש ×”×™× × ×©×’×•×™×™×"
-#: mediagoblin/auth/views.py:206
+#: mediagoblin/auth/views.py:198
msgid "You must be logged in so we know who to send the email to!"
msgstr "עליך להתחבר על מנת שנדע ×ל מי לשלוח ×ת הדו×״ל!"
-#: mediagoblin/auth/views.py:214
+#: mediagoblin/auth/views.py:206
msgid "You've already verified your email address!"
msgstr "כבר ×ימתת ×ת כתובת הדו×״ל שלך!"
-#: mediagoblin/auth/views.py:227
+#: mediagoblin/auth/views.py:219
msgid "Resent your verification email."
msgstr "שלח שוב ×ת דו×״ל ×”×ימות שלך."
-#: mediagoblin/auth/views.py:263
+#: mediagoblin/auth/views.py:250
+msgid ""
+"If that email address (case sensitive!) is registered an email has been sent"
+" with instructions on how to change your password."
+msgstr ""
+
+#: mediagoblin/auth/views.py:261
+msgid "Couldn't find someone with that username."
+msgstr ""
+
+#: mediagoblin/auth/views.py:264
msgid ""
"An email has been sent with instructions on how to change your password."
msgstr "דו×״ל נשלח בצירוף הור×ות בנוגע לכיצד ניתן לשנות ×ת סיסמתך."
-#: mediagoblin/auth/views.py:273
+#: mediagoblin/auth/views.py:271
msgid ""
"Could not send password recovery email as your username is inactive or your "
"account's email address has not been verified."
msgstr "×œ× ×”×™×” ניתן לשלוח דו×״ל לשחזור סיסמה מ×חר ×•×©× ×”×ž×©×ª×ž×© שלך ×ינו פעיל ×ו שכתובת הדו×״ל של חשבונך ×œ× ×ומתה."
-#: mediagoblin/auth/views.py:285
-msgid "Couldn't find someone with that username or email."
-msgstr "×œ× ×”×™×” ניתן ×œ×ž×¦×•× ×ž×™×©×”×• ×¢× ×©× ×ž×©×ª×ž×© ×ו דו×״ל ×–×”."
-
-#: mediagoblin/auth/views.py:333
+#: mediagoblin/auth/views.py:328
msgid "You can now log in using your new password."
msgstr "כעת ביכולתך להתחבר ב×מצעות סיסמתך החדשה."
-#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:82
+#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:93
#: mediagoblin/submit/forms.py:28 mediagoblin/submit/forms.py:47
-#: mediagoblin/user_pages/forms.py:40
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr "כותרת"
@@ -104,8 +118,8 @@ msgid "Description of this work"
msgstr "תי×ור של מל××›×” זו"
#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:52
-#: mediagoblin/edit/forms.py:86 mediagoblin/submit/forms.py:32
-#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:44
+#: mediagoblin/edit/forms.py:97 mediagoblin/submit/forms.py:32
+#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:49
msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
@@ -120,11 +134,11 @@ msgstr "תגיות"
msgid "Separate tags by commas."
msgstr "הפרד תגיות בעזרת פסיקי×."
-#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:90
+#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:101
msgid "Slug"
msgstr "חשופית"
-#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:91
+#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:102
msgid "The slug can't be empty"
msgstr "החשופית ×œ× ×™×›×•×œ×” להיות ריקה"
@@ -163,65 +177,81 @@ msgstr "הזן ×ת סיסמתך הישנה כדי להוכיח ש×תה הבע×
msgid "New password"
msgstr "סיסמה חדשה"
-#: mediagoblin/edit/forms.py:71
+#: mediagoblin/edit/forms.py:74
+msgid "License preference"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:80
+msgid "This will be your default license on upload forms."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:82
msgid "Email me when others comment on my media"
msgstr "שלח לי דו×״ל ×›×שר ××—×¨×™× ×ž×’×™×‘×™× ×¢×œ המדיה שלי"
-#: mediagoblin/edit/forms.py:83
+#: mediagoblin/edit/forms.py:94
msgid "The title can't be empty"
msgstr "הכותרת ×œ× ×™×›×•×œ×” להיות ריקה"
-#: mediagoblin/edit/forms.py:85 mediagoblin/submit/forms.py:50
-#: mediagoblin/user_pages/forms.py:43
+#: mediagoblin/edit/forms.py:96 mediagoblin/submit/forms.py:50
+#: mediagoblin/user_pages/forms.py:48
msgid "Description of this collection"
msgstr "תי×ור ×וסף ×–×”"
-#: mediagoblin/edit/forms.py:92
+#: mediagoblin/edit/forms.py:103
msgid ""
"The title part of this collection's address. You usually don't need to "
"change this."
msgstr "×זור הכותרת של כתובת ×וסף ×–×”. לרוב ×ין הכרח לשנות ×ת חלק ×–×”."
-#: mediagoblin/edit/views.py:65
+#: mediagoblin/edit/views.py:66
msgid "An entry with that slug already exists for this user."
msgstr "רשומה ×¢× ×—×©×•×¤×™×ª זו כבר קיימת עבור משתמש ×–×”."
-#: mediagoblin/edit/views.py:86
+#: mediagoblin/edit/views.py:85
msgid "You are editing another user's media. Proceed with caution."
msgstr "×תה עורך מדיה של משתמש ×חר. המשך בזהירות."
-#: mediagoblin/edit/views.py:156
+#: mediagoblin/edit/views.py:155
#, python-format
msgid "You added the attachment %s!"
msgstr "הוספת ×ת התצריף %s!"
-#: mediagoblin/edit/views.py:181
+#: mediagoblin/edit/views.py:182
+msgid "You can only edit your own profile."
+msgstr ""
+
+#: mediagoblin/edit/views.py:188
msgid "You are editing a user's profile. Proceed with caution."
msgstr "×תה עורך דיוקן של משתמש. המשך בזהירות."
-#: mediagoblin/edit/views.py:197
+#: mediagoblin/edit/views.py:204
msgid "Profile changes saved"
msgstr "שינויי דיוקן נשמרו"
-#: mediagoblin/edit/views.py:226 mediagoblin/edit/views.py:246
+#: mediagoblin/edit/views.py:241
+msgid "Wrong password"
+msgstr "סיסמה שגויה"
+
+#: mediagoblin/edit/views.py:252
msgid "Account settings saved"
msgstr "הגדרות חשבון נשמרו"
-#: mediagoblin/edit/views.py:251
-msgid "Wrong password"
-msgstr "סיסמה שגויה"
+#: mediagoblin/edit/views.py:286
+msgid "You need to confirm the deletion of your account."
+msgstr ""
-#: mediagoblin/edit/views.py:287 mediagoblin/submit/views.py:211
-#: mediagoblin/user_pages/views.py:210
+#: mediagoblin/edit/views.py:322 mediagoblin/submit/views.py:142
+#: mediagoblin/user_pages/views.py:214
#, python-format
msgid "You already have a collection called \"%s\"!"
msgstr "כבר יש לך ×וסף שקרוי ×‘×©× \"%s\"!"
-#: mediagoblin/edit/views.py:291
+#: mediagoblin/edit/views.py:326
msgid "A collection with that slug already exists for this user."
msgstr "×וסף ×¢× ×—×©×•×¤×™×ª זו כבר ×§×™×™× ×¢×‘×•×¨ משתמש ×–×”."
-#: mediagoblin/edit/views.py:308
+#: mediagoblin/edit/views.py:343
msgid "You are editing another user's collection. Proceed with caution."
msgstr "×תה עורך ×וסף של משתמש ×חר. המשך בזהירות."
@@ -237,54 +267,62 @@ msgstr "×ין מדור נכס עבור מוטיב ×–×”\n"
msgid "However, old link directory symlink found; removed.\n"
msgstr "בכל ×ופן, קישור מדור symlink נמצ×; הוסר.\n"
-#: mediagoblin/media_types/__init__.py:60
-#: mediagoblin/media_types/__init__.py:101
+#: 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:61
+#: mediagoblin/media_types/__init__.py:102
msgid "Sorry, I don't support that file type :("
msgstr "צר לי, ××™× × ×™ תומך בטיפוס קובץ ×–×” :("
-#: mediagoblin/media_types/video/processing.py:35
+#: mediagoblin/media_types/video/processing.py:36
msgid "Video transcoding failed"
msgstr "המרת ויד×ו נכשלה"
-#: mediagoblin/plugins/oauth/forms.py:26
-msgid "Client ID"
-msgstr "זהות לקוח"
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
+msgid "Location"
+msgstr "מיקו×"
-#: mediagoblin/plugins/oauth/forms.py:28
-msgid "Next URL"
-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/oauth/forms.py:30
+#: mediagoblin/plugins/oauth/forms.py:29
msgid "Allow"
msgstr "התר"
-#: mediagoblin/plugins/oauth/forms.py:31
+#: mediagoblin/plugins/oauth/forms.py:30
msgid "Deny"
msgstr "×סור"
-#: mediagoblin/plugins/oauth/forms.py:35
+#: mediagoblin/plugins/oauth/forms.py:34
msgid "Name"
msgstr "ש×"
-#: mediagoblin/plugins/oauth/forms.py:36
+#: mediagoblin/plugins/oauth/forms.py:35
msgid "The name of the OAuth client"
msgstr "×”×©× ×©×œ לקוח OAuth"
-#: mediagoblin/plugins/oauth/forms.py:37
+#: mediagoblin/plugins/oauth/forms.py:36
msgid "Description"
msgstr "תי×ור"
-#: mediagoblin/plugins/oauth/forms.py:39
+#: 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:41
+#: mediagoblin/plugins/oauth/forms.py:40
msgid "Type"
msgstr "טיפוס"
-#: mediagoblin/plugins/oauth/forms.py:46
+#: 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"
@@ -294,25 +332,40 @@ msgid ""
" JavaScript client)."
msgstr "<strong>סודי</strong> - הלקוח יכול\n ליצור בקשות ×ל שרת GNU MediaGoblin ×©×œ× ×™×›×•×œ×•×ª להיבל×\n על ידי user agent (למשל לקוח server-side).<br />\n <strong>פומבי</strong> - הלקוח ×œ× ×™×›×•×œ ליצור בקשות\n סודיות ×ל של GNU MediaGoblin (למשל לקוח\n ‫JavaScript מתופעל client-side)."
-#: mediagoblin/plugins/oauth/forms.py:53
+#: mediagoblin/plugins/oauth/forms.py:52
msgid "Redirect URI"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:55
+#: 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:67
+#: mediagoblin/plugins/oauth/forms.py:66
msgid "This field is required for public clients"
msgstr "שדה ×–×” הינו דרוש עבור לקוחות פומביי×"
-#: mediagoblin/plugins/oauth/views.py:60
+#: mediagoblin/plugins/oauth/views.py:59
msgid "The client {0} has been registered!"
msgstr "הלקוח {0} נרש×!"
-#: mediagoblin/processing/__init__.py:138
+#: 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/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr "הוסף"
+
+#: mediagoblin/processing/__init__.py:172
msgid "Invalid file given for media type."
msgstr "ניתן קובץ שגוי עבור טיפוס מדיה."
@@ -320,56 +373,74 @@ msgstr "ניתן קובץ שגוי עבור טיפוס מדיה."
msgid "File"
msgstr "קובץ"
-#: mediagoblin/submit/views.py:57
+#: mediagoblin/submit/views.py:51
msgid "You must provide a file."
msgstr "עליך לספק קובץ."
-#: mediagoblin/submit/views.py:164
+#: mediagoblin/submit/views.py:97
msgid "Woohoo! Submitted!"
msgstr "הידד! נשלח!"
-#: mediagoblin/submit/views.py:215
+#: mediagoblin/submit/views.py:146
#, python-format
msgid "Collection \"%s\" added!"
msgstr "×וסף \"%s\" התווסף!"
-#: mediagoblin/templates/mediagoblin/base.html:48
-msgid "MediaGoblin logo"
-msgstr "לוגו MediaGoblin"
-
-#: mediagoblin/templates/mediagoblin/base.html:54
-#, 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:64
+msgid "Verify your email!"
+msgstr "×מת ×ת הדו×״ל שלך!"
-#: mediagoblin/templates/mediagoblin/base.html:60
+#: mediagoblin/templates/mediagoblin/base.html:65
msgid "log out"
msgstr "התנתקות"
-#: mediagoblin/templates/mediagoblin/base.html:62
-#: mediagoblin/templates/mediagoblin/root.html:28
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:151
-msgid "Add media"
-msgstr "הוספת מדיה"
-
-#: mediagoblin/templates/mediagoblin/base.html:68
-msgid "Verify your email!"
-msgstr "×מת ×ת הדו×״ל שלך!"
-
-#: mediagoblin/templates/mediagoblin/base.html:73
+#: mediagoblin/templates/mediagoblin/base.html:70
#: mediagoblin/templates/mediagoblin/auth/login.html:28
#: mediagoblin/templates/mediagoblin/auth/login.html:36
#: mediagoblin/templates/mediagoblin/auth/login.html:54
msgid "Log in"
msgstr "התחברות"
-#: mediagoblin/templates/mediagoblin/base.html:87
-msgid ""
-"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
-"href=\"http://gnu.org/\">GNU</a> project."
-msgstr "מופעל על ידי <a href=\"http://mediagoblin.org\">MediaGoblin</a>, פרויקט <a href=\"http://gnu.org/\">GNU</a>."
+#: mediagoblin/templates/mediagoblin/base.html:79
+#, 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:86
+msgid "Change account settings"
+msgstr "שנה הגדרות חשבון"
#: mediagoblin/templates/mediagoblin/base.html:90
+#: mediagoblin/templates/mediagoblin/base.html:105
+#: mediagoblin/templates/mediagoblin/admin/panel.html:21
+#: mediagoblin/templates/mediagoblin/admin/panel.html:26
+#: 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:93
+msgid "Log out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:156
+msgid "Add media"
+msgstr "הוספת מדיה"
+
+#: mediagoblin/templates/mediagoblin/base.html:99
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
+msgid "Create new collection"
+msgstr "צור ×וסף חדש"
+
+#: mediagoblin/templates/mediagoblin/base.html:122
+#, 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/base.html:125
#, python-format
msgid ""
"Released under the <a "
@@ -381,52 +452,31 @@ msgstr "משוחרר תחת הרשיון <a href=\"http://www.fsf.org/licensing/
msgid "Image of goblin stressing out"
msgstr "תמונה של גובלין מת×מץ יתר על המידה"
-#: mediagoblin/templates/mediagoblin/root.html:25
-msgid "Actions"
-msgstr "פעולות"
-
#: mediagoblin/templates/mediagoblin/root.html:31
-msgid "Create new collection"
-msgstr "צור ×וסף חדש"
-
-#: mediagoblin/templates/mediagoblin/root.html:34
-msgid "Change account settings"
-msgstr "שנה הגדרות חשבון"
-
-#: mediagoblin/templates/mediagoblin/root.html:38
-#: mediagoblin/templates/mediagoblin/root.html:44
-#: mediagoblin/templates/mediagoblin/admin/panel.html:21
-#: mediagoblin/templates/mediagoblin/admin/panel.html:26
-#: 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/root.html:51
msgid "Explore"
msgstr "לחקור"
-#: mediagoblin/templates/mediagoblin/root.html:53
+#: mediagoblin/templates/mediagoblin/root.html:33
msgid "Hi there, welcome to this MediaGoblin site!"
msgstr "×©×œ×•× ×œ×š, ברוך בו×ך ×ל ×תר MediaGoblin ×–×”!"
-#: mediagoblin/templates/mediagoblin/root.html:55
+#: mediagoblin/templates/mediagoblin/root.html:35
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/root.html:56
+#: mediagoblin/templates/mediagoblin/root.html:36
msgid ""
"To add your own media, place comments, and more, you can log in with your "
"MediaGoblin account."
msgstr "בכדי להוסיף ×ת המדיה שלך, ×œ×”×©×™× ×ª×’×•×‘×•×ª, ועוד, ביכולתך להתחבר ×¢× ×—×©×‘×•×Ÿ MediaGoblin."
-#: mediagoblin/templates/mediagoblin/root.html:58
+#: mediagoblin/templates/mediagoblin/root.html:38
msgid "Don't have one yet? It's easy!"
msgstr "×ין ברשותך חשבון עדיין? ×–×” קל!"
-#: mediagoblin/templates/mediagoblin/root.html:59
+#: mediagoblin/templates/mediagoblin/root.html:39
#, python-format
msgid ""
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Create an account at this site</a>\n"
@@ -434,7 +484,7 @@ msgid ""
" <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
msgstr "<a class=\"button_action_highlight\" href=\"%(register_url)s\">יצירת חשבון ×צל ×תר ×–×”</a>\n ×ו\n <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">להתקין ×ת MediaGoblin על שרתך</a>"
-#: mediagoblin/templates/mediagoblin/root.html:67
+#: mediagoblin/templates/mediagoblin/root.html:47
msgid "Most recent media"
msgstr "המדיה ×”×חרונה ביותר"
@@ -540,41 +590,62 @@ msgid ""
"%(verification_url)s"
msgstr "×©×œ×•× %(username)s,\n\nבכדי להפעיל ×ת חשבונך ×צל GNU MediaGoblin, עליך לפתוח ×ת הכתובת הב××”\nבתוך דפדפן הרשת שלך:\n\n%(verification_url)s"
+#: 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:43
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:159
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:175
msgid "Attachments"
msgstr "תצריפי×"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
msgid "Add attachment"
msgstr "הוספת תצריף"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:60
+#: 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:81
+#: 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:62
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:51
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
msgid "Save changes"
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:47
+#: 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
@@ -587,13 +658,17 @@ msgstr "ערוך %(media_title)s"
msgid "Changing %(username)s's account settings"
msgstr "שינוי הגדרות חשבון עבור %(username)s"
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
+msgid "Delete my account"
+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:35
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
#, python-format
msgid "Editing %(username)s's profile"
msgstr "עריכת דיוקן עבור %(username)s"
@@ -609,7 +684,7 @@ 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/stl.html:136
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
msgstr "הורד"
@@ -632,7 +707,7 @@ msgid ""
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/video.html:56
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:61
msgid "Original file"
msgstr "קובץ מקורי"
@@ -644,8 +719,8 @@ msgstr "קובץ WebM (קודק Vorbis)"
#: 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:67
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
+#: 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"
@@ -690,21 +765,21 @@ msgstr "פורמט קובץ"
msgid "Object Height"
msgstr "גובה ×ובייקט"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
msgid ""
-"Sorry, this video will not work because \n"
-"\t your web browser does not support HTML5 \n"
-"\t video."
-msgstr "צר לי, ויד×ו ×–×” ×œ× ×™×¢×‘×•×“ מכיוון \n\t שדפדפן הרשת שלך ×œ× ×ª×•×ž×š \n\t ויד×ו של HTML5."
+"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:43
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:47
msgid ""
"You can get a modern web browser that \n"
-"\t can play this video 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>!"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:69
msgid "WebM file (640p; VP8/Vorbis)"
msgstr "קובץ WebM ‫(640p; VP8/Vorbis)"
@@ -712,12 +787,6 @@ msgstr "קובץ WebM ‫(640p; VP8/Vorbis)"
msgid "Add a collection"
msgstr "הוסף ×וסף"
-#: mediagoblin/templates/mediagoblin/submit/collection.html:30
-#: mediagoblin/templates/mediagoblin/submit/start.html:34
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-msgid "Add"
-msgstr "הוסף"
-
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
msgid "Add your media"
@@ -734,12 +803,12 @@ 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:87
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
msgid "Edit"
msgstr "ערוך"
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:91
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
msgid "Delete"
msgstr "מחק"
@@ -749,11 +818,6 @@ msgstr "מחק"
msgid "Really delete %(title)s?"
msgstr "ב×מת למחוק ×ת %(title)s?"
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:47
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Delete permanently"
-msgstr "מחק לצמיתות"
-
#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:31
#, python-format
msgid "Really remove %(media_title)s from %(collection_title)s?"
@@ -763,6 +827,16 @@ msgstr "ב×מת להסיר ×ת %(media_title)s מן %(collection_title)s?"
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 ""
@@ -775,56 +849,53 @@ msgstr "×©×œ×•× %(username)s,\n%(comment_author)s הגיב/×” על פרסומך
msgid "%(username)s's media"
msgstr "המדיה של %(username)s"
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:37
+#: 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:46
+#: 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:102
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:94
msgid "Add a comment"
msgstr "הוסף תגובה"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:109
-msgid ""
-"You can use <a "
-"href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> for"
-" formatting."
-msgstr "ביכולתך לעשות שימוש בתחביר <a href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> לעיצוב."
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:113
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:102
msgid "Add this comment"
msgstr "הוסף ×ת תגובה זו"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:123
msgid "at"
msgstr "×צל"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:152
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:144
#, python-format
msgid ""
"<h3>Added on</h3>\n"
" <p>%(date)s</p>"
msgstr "<h3>הוסף בת×ריך</h3>\n <p>%(date)s</p>"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:202
-msgid "Add media to collection"
-msgstr "הוסף מדיה ל×וסף"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
#, python-format
-msgid "Add %(title)s to collection"
-msgstr "הוסף ×ת %(title)s ל×וסף"
+msgid "Add “%(media_title)s†to a collection"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:51
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
msgstr "הוסף ×וסף חדש"
@@ -886,27 +957,31 @@ msgstr "×× ×תה ×כן ××“× ×–×” ××•×œ× ×יבדת ×ת דו×״ל ×”××
msgid "Here's a spot to tell others about yourself."
msgstr "×”× ×” ×ž×§×•× ×œ×•×ž×¨ ל××—×¨×™× ×ודותייך."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:101
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:100
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:117
msgid "Edit profile"
msgstr "ערוך דיוקן"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:105
msgid "This user hasn't filled in their profile (yet)."
msgstr "משתמש ×–×” ×œ× ×ž×™×œ× ×“×™×•×§×Ÿ (עדיין)."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:124
+msgid "Browse collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:137
#, python-format
msgid "View all of %(username)s's media"
msgstr "צפיה בכל המדיה של %(username)s"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:145
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:150
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:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:162
#: 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..."
@@ -916,28 +991,24 @@ msgstr "×œ× × ×¨××” שיש ×›×ן מדיה כלשהי עדיין..."
msgid "(remove)"
msgstr "(הסר)"
-#: mediagoblin/templates/mediagoblin/utils/collections.html:20
-#, python-format
-msgid "In collections (%(collected)s)"
-msgstr "ב××•×¡×¤×™× (%(collected)s)"
+#: 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/geolocation_map.html:25
-msgid "Location"
-msgstr "מיקו×"
-
-#: mediagoblin/templates/mediagoblin/utils/geolocation_map.html:53
-#, python-format
-msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-msgstr "הצגה ×צל <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
msgstr "כל הזכויות שמורות"
@@ -968,49 +1039,64 @@ msgstr "ישן יותר"
msgid "Tagged with"
msgstr "מתויגת ×¢×"
-#: mediagoblin/tools/exif.py:78
+#: mediagoblin/tools/exif.py:80
msgid "Could not read the image file."
msgstr "×œ× ×”×™×” ניתן ×œ×§×¨×•× ×ת קובץ התמונה."
-#: mediagoblin/tools/response.py:30
+#: mediagoblin/tools/response.py:35
msgid "Oops!"
msgstr "×ופס!"
-#: mediagoblin/tools/response.py:31
+#: mediagoblin/tools/response.py:36
msgid "An error occured"
msgstr "×ירעה שגי××”"
-#: mediagoblin/tools/response.py:46
+#: mediagoblin/tools/response.py:51
msgid "Operation not allowed"
msgstr "פעולה ×œ× ×ž×•×¨×©×™×ª"
-#: mediagoblin/tools/response.py:47
+#: mediagoblin/tools/response.py:52
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:55
+#: mediagoblin/tools/response.py:60
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/user_pages/forms.py:28
+#: 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\">Markdown</a> for"
+" formatting."
+msgstr "ביכולתך לעשות שימוש בתחביר <a href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> לעיצוב."
+
+#: mediagoblin/user_pages/forms.py:31
msgid "I am sure I want to delete this"
msgstr "×× ×™ בטוח שברצוני למחוק ×–×ת"
-#: mediagoblin/user_pages/forms.py:32
+#: 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:35
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:40
msgid "-- Select --"
msgstr "-- בחר --"
-#: mediagoblin/user_pages/forms.py:37
+#: mediagoblin/user_pages/forms.py:42
msgid "Include a note"
msgstr "הכללת פתק"
@@ -1018,74 +1104,69 @@ msgstr "הכללת פתק"
msgid "commented on your post"
msgstr "הגיב/ה על פרסומך"
-#: mediagoblin/user_pages/views.py:156
+#: mediagoblin/user_pages/views.py:166
msgid "Oops, your comment was empty."
msgstr "×ופס, תגובתך היתה ריקה."
-#: mediagoblin/user_pages/views.py:162
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
msgstr "תגובתך פורסמה!"
-#: mediagoblin/user_pages/views.py:230
+#: mediagoblin/user_pages/views.py:197
+msgid "Please check your entries and try again."
+msgstr "×× × ×‘×“×•×§ ×ת רשומותיך ונסה שוב."
+
+#: mediagoblin/user_pages/views.py:237
msgid "You have to select or add a collection"
msgstr "עליך לבחור ×ו להוסיף ×וסף"
-#: mediagoblin/user_pages/views.py:238
+#: mediagoblin/user_pages/views.py:248
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr "\"%s\" כבר ×§×™×™× ×‘×וסף \"%s\""
-#: mediagoblin/user_pages/views.py:253
+#: mediagoblin/user_pages/views.py:264
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr "\"%s\" התווסף ×ל ×”×וסף \"%s\""
-#: mediagoblin/user_pages/views.py:261
-msgid "Please check your entries and try again."
-msgstr "×× × ×‘×“×•×§ ×ת רשומותיך ונסה שוב."
-
-#: mediagoblin/user_pages/views.py:292
-msgid ""
-"Some of the files with this entry seem to be missing. Deleting anyway."
-msgstr "נר××” שכמה ×§×‘×¦×™× ×¢× ×¨×™×©×•× ×–×” חסרי×. מוחק בכל ×–×ת"
-
-#: mediagoblin/user_pages/views.py:297
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
msgstr "מחקת ×ת מדיה זו."
-#: mediagoblin/user_pages/views.py:304
+#: mediagoblin/user_pages/views.py:293
msgid "The media was not deleted because you didn't check that you were sure."
msgstr "המדיה ×œ× × ×ž×—×§×” מכיוון ×©×œ× ×¡×™×ž× ×ª ש×תה בטוח."
-#: mediagoblin/user_pages/views.py:312
+#: mediagoblin/user_pages/views.py:301
msgid "You are about to delete another user's media. Proceed with caution."
msgstr "בחרת למחוק מדיה של משתמש ×חר. המשך בזהירות."
-#: mediagoblin/user_pages/views.py:370
+#: mediagoblin/user_pages/views.py:375
msgid "You deleted the item from the collection."
msgstr "מחקת ×ת הפריט מן ×וסף ×–×”."
-#: mediagoblin/user_pages/views.py:374
+#: mediagoblin/user_pages/views.py:379
msgid "The item was not removed because you didn't check that you were sure."
msgstr "הפריט ×œ× ×”×•×¡×¨ מכיוון ×©×œ× ×¡×™×ž× ×ª ש×תה בטוח."
-#: mediagoblin/user_pages/views.py:384
+#: mediagoblin/user_pages/views.py:389
msgid ""
"You are about to delete an item from another user's collection. Proceed with"
" caution."
msgstr "בחרת למחוק פריט מן ×וסף של משתמש ×חר. המשך בזהירות."
-#: mediagoblin/user_pages/views.py:417
+#: mediagoblin/user_pages/views.py:422
#, python-format
msgid "You deleted the collection \"%s\""
msgstr "מחקת ×ת ×”×וסף \"%s\""
-#: mediagoblin/user_pages/views.py:424
+#: mediagoblin/user_pages/views.py:429
msgid ""
"The collection was not deleted because you didn't check that you were sure."
msgstr "×”×וסף ×œ× ×”×•×¡×¨ מכיוון ×©×œ× ×¡×™×ž× ×ª ש×תה בטוח."
-#: mediagoblin/user_pages/views.py:434
+#: mediagoblin/user_pages/views.py:439
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
index 32ec1bc2..d9addaa6 100644
--- a/mediagoblin/i18n/ia/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/ia/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/ia/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/ia/LC_MESSAGES/mediagoblin.po
index 34f97df5..73180e86 100644
--- a/mediagoblin/i18n/ia/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/ia/LC_MESSAGES/mediagoblin.po
@@ -1,5 +1,5 @@
# Translations template for PROJECT.
-# Copyright (C) 2012 ORGANIZATION
+# Copyright (C) 2013 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: http://issues.mediagoblin.org/\n"
-"POT-Creation-Date: 2012-12-20 09:18-0600\n"
-"PO-Revision-Date: 2012-12-20 15:14+0000\n"
+"POT-Creation-Date: 2013-03-04 18:04-0600\n"
+"PO-Revision-Date: 2013-03-05 00:04+0000\n"
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
@@ -20,82 +20,96 @@ msgstr ""
"Language: ia\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:41
+#: mediagoblin/auth/forms.py:28
+msgid "Invalid User name or email address."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:29
+msgid "This field does not take email addresses."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:30
+msgid "This field requires an email address."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:52 mediagoblin/auth/forms.py:67
msgid "Username"
msgstr "Nomine de usator"
-#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:45
+#: mediagoblin/auth/forms.py:56 mediagoblin/auth/forms.py:71
msgid "Password"
msgstr "Contrasigno"
-#: mediagoblin/auth/forms.py:34
+#: mediagoblin/auth/forms.py:60
msgid "Email address"
msgstr "Adresse de e-posta"
-#: mediagoblin/auth/forms.py:51
+#: mediagoblin/auth/forms.py:78
msgid "Username or email"
msgstr ""
-#: mediagoblin/auth/forms.py:58
-msgid "Incorrect input"
-msgstr ""
-
-#: mediagoblin/auth/views.py:55
+#: mediagoblin/auth/views.py:54
msgid "Sorry, registration is disabled on this instance."
msgstr ""
-#: mediagoblin/auth/views.py:75
+#: mediagoblin/auth/views.py:68
msgid "Sorry, a user with that name already exists."
msgstr ""
-#: mediagoblin/auth/views.py:79
+#: mediagoblin/auth/views.py:72
msgid "Sorry, a user with that email address already exists."
msgstr ""
-#: mediagoblin/auth/views.py:182
+#: mediagoblin/auth/views.py:174
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
msgstr ""
-#: mediagoblin/auth/views.py:188
+#: mediagoblin/auth/views.py:180
msgid "The verification key or user id is incorrect"
msgstr ""
-#: mediagoblin/auth/views.py:206
+#: mediagoblin/auth/views.py:198
msgid "You must be logged in so we know who to send the email to!"
msgstr ""
-#: mediagoblin/auth/views.py:214
+#: mediagoblin/auth/views.py:206
msgid "You've already verified your email address!"
msgstr ""
-#: mediagoblin/auth/views.py:227
+#: mediagoblin/auth/views.py:219
msgid "Resent your verification email."
msgstr ""
-#: mediagoblin/auth/views.py:263
+#: mediagoblin/auth/views.py:250
+msgid ""
+"If that email address (case sensitive!) is registered an email has been sent"
+" with instructions on how to change your password."
+msgstr ""
+
+#: mediagoblin/auth/views.py:261
+msgid "Couldn't find someone with that username."
+msgstr ""
+
+#: mediagoblin/auth/views.py:264
msgid ""
"An email has been sent with instructions on how to change your password."
msgstr ""
-#: mediagoblin/auth/views.py:273
+#: mediagoblin/auth/views.py:271
msgid ""
"Could not send password recovery email as your username is inactive or your "
"account's email address has not been verified."
msgstr ""
-#: mediagoblin/auth/views.py:285
-msgid "Couldn't find someone with that username or email."
-msgstr ""
-
-#: mediagoblin/auth/views.py:333
+#: mediagoblin/auth/views.py:328
msgid "You can now log in using your new password."
msgstr ""
-#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:82
+#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:93
#: mediagoblin/submit/forms.py:28 mediagoblin/submit/forms.py:47
-#: mediagoblin/user_pages/forms.py:40
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr "Titulo"
@@ -104,8 +118,8 @@ msgid "Description of this work"
msgstr ""
#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:52
-#: mediagoblin/edit/forms.py:86 mediagoblin/submit/forms.py:32
-#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:44
+#: mediagoblin/edit/forms.py:97 mediagoblin/submit/forms.py:32
+#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:49
msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
@@ -120,11 +134,11 @@ msgstr "Etiquettas"
msgid "Separate tags by commas."
msgstr ""
-#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:90
+#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:101
msgid "Slug"
msgstr ""
-#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:91
+#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:102
msgid "The slug can't be empty"
msgstr ""
@@ -163,65 +177,81 @@ msgstr ""
msgid "New password"
msgstr ""
-#: mediagoblin/edit/forms.py:71
+#: mediagoblin/edit/forms.py:74
+msgid "License preference"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:80
+msgid "This will be your default license on upload forms."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:82
msgid "Email me when others comment on my media"
msgstr ""
-#: mediagoblin/edit/forms.py:83
+#: mediagoblin/edit/forms.py:94
msgid "The title can't be empty"
msgstr ""
-#: mediagoblin/edit/forms.py:85 mediagoblin/submit/forms.py:50
-#: mediagoblin/user_pages/forms.py:43
+#: mediagoblin/edit/forms.py:96 mediagoblin/submit/forms.py:50
+#: mediagoblin/user_pages/forms.py:48
msgid "Description of this collection"
msgstr ""
-#: mediagoblin/edit/forms.py:92
+#: mediagoblin/edit/forms.py:103
msgid ""
"The title part of this collection's address. You usually don't need to "
"change this."
msgstr ""
-#: mediagoblin/edit/views.py:65
+#: mediagoblin/edit/views.py:66
msgid "An entry with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:86
+#: mediagoblin/edit/views.py:85
msgid "You are editing another user's media. Proceed with caution."
msgstr ""
-#: mediagoblin/edit/views.py:156
+#: mediagoblin/edit/views.py:155
#, python-format
msgid "You added the attachment %s!"
msgstr ""
-#: mediagoblin/edit/views.py:181
+#: mediagoblin/edit/views.py:182
+msgid "You can only edit your own profile."
+msgstr ""
+
+#: mediagoblin/edit/views.py:188
msgid "You are editing a user's profile. Proceed with caution."
msgstr ""
-#: mediagoblin/edit/views.py:197
+#: mediagoblin/edit/views.py:204
msgid "Profile changes saved"
msgstr ""
-#: mediagoblin/edit/views.py:226 mediagoblin/edit/views.py:246
+#: mediagoblin/edit/views.py:241
+msgid "Wrong password"
+msgstr ""
+
+#: mediagoblin/edit/views.py:252
msgid "Account settings saved"
msgstr ""
-#: mediagoblin/edit/views.py:251
-msgid "Wrong password"
+#: mediagoblin/edit/views.py:286
+msgid "You need to confirm the deletion of your account."
msgstr ""
-#: mediagoblin/edit/views.py:287 mediagoblin/submit/views.py:211
-#: mediagoblin/user_pages/views.py:210
+#: mediagoblin/edit/views.py:322 mediagoblin/submit/views.py:142
+#: mediagoblin/user_pages/views.py:214
#, python-format
msgid "You already have a collection called \"%s\"!"
msgstr ""
-#: mediagoblin/edit/views.py:291
+#: mediagoblin/edit/views.py:326
msgid "A collection with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:308
+#: mediagoblin/edit/views.py:343
msgid "You are editing another user's collection. Proceed with caution."
msgstr ""
@@ -237,54 +267,62 @@ msgstr ""
msgid "However, old link directory symlink found; removed.\n"
msgstr ""
-#: mediagoblin/media_types/__init__.py:60
-#: mediagoblin/media_types/__init__.py:101
+#: 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:61
+#: mediagoblin/media_types/__init__.py:102
msgid "Sorry, I don't support that file type :("
msgstr ""
-#: mediagoblin/media_types/video/processing.py:35
+#: mediagoblin/media_types/video/processing.py:36
msgid "Video transcoding failed"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:26
-msgid "Client ID"
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
+msgid "Location"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:28
-msgid "Next URL"
+#: 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/oauth/forms.py:30
+#: mediagoblin/plugins/oauth/forms.py:29
msgid "Allow"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:31
+#: mediagoblin/plugins/oauth/forms.py:30
msgid "Deny"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:35
+#: mediagoblin/plugins/oauth/forms.py:34
msgid "Name"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:36
+#: mediagoblin/plugins/oauth/forms.py:35
msgid "The name of the OAuth client"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:37
+#: mediagoblin/plugins/oauth/forms.py:36
msgid "Description"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:39
+#: 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:41
+#: mediagoblin/plugins/oauth/forms.py:40
msgid "Type"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:46
+#: 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"
@@ -294,25 +332,40 @@ msgid ""
" JavaScript client)."
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:53
+#: mediagoblin/plugins/oauth/forms.py:52
msgid "Redirect URI"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:55
+#: 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:67
+#: mediagoblin/plugins/oauth/forms.py:66
msgid "This field is required for public clients"
msgstr ""
-#: mediagoblin/plugins/oauth/views.py:60
+#: mediagoblin/plugins/oauth/views.py:59
msgid "The client {0} has been registered!"
msgstr ""
-#: mediagoblin/processing/__init__.py:138
+#: 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/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:172
msgid "Invalid file given for media type."
msgstr ""
@@ -320,56 +373,74 @@ msgstr ""
msgid "File"
msgstr "File"
-#: mediagoblin/submit/views.py:57
+#: mediagoblin/submit/views.py:51
msgid "You must provide a file."
msgstr ""
-#: mediagoblin/submit/views.py:164
+#: mediagoblin/submit/views.py:97
msgid "Woohoo! Submitted!"
msgstr ""
-#: mediagoblin/submit/views.py:215
+#: mediagoblin/submit/views.py:146
#, python-format
msgid "Collection \"%s\" added!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:48
-msgid "MediaGoblin logo"
+#: mediagoblin/templates/mediagoblin/base.html:64
+msgid "Verify your email!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:54
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "log out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:70
+#: mediagoblin/templates/mediagoblin/auth/login.html:28
+#: mediagoblin/templates/mediagoblin/auth/login.html:36
+#: mediagoblin/templates/mediagoblin/auth/login.html:54
+msgid "Log in"
+msgstr "Initiar session"
+
+#: mediagoblin/templates/mediagoblin/base.html:79
#, python-format
msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:60
-msgid "log out"
+#: mediagoblin/templates/mediagoblin/base.html:86
+msgid "Change account settings"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:62
-#: mediagoblin/templates/mediagoblin/root.html:28
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:151
-msgid "Add media"
+#: mediagoblin/templates/mediagoblin/base.html:90
+#: mediagoblin/templates/mediagoblin/base.html:105
+#: mediagoblin/templates/mediagoblin/admin/panel.html:21
+#: mediagoblin/templates/mediagoblin/admin/panel.html:26
+#: 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:68
-msgid "Verify your email!"
+#: mediagoblin/templates/mediagoblin/base.html:93
+msgid "Log out"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:73
-#: mediagoblin/templates/mediagoblin/auth/login.html:28
-#: mediagoblin/templates/mediagoblin/auth/login.html:36
-#: mediagoblin/templates/mediagoblin/auth/login.html:54
-msgid "Log in"
-msgstr "Initiar session"
+#: mediagoblin/templates/mediagoblin/base.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:156
+msgid "Add media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:99
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
+msgid "Create new collection"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:87
+#: mediagoblin/templates/mediagoblin/base.html:122
+#, python-format
msgid ""
-"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
-"href=\"http://gnu.org/\">GNU</a> project."
+"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/base.html:90
+#: mediagoblin/templates/mediagoblin/base.html:125
#, python-format
msgid ""
"Released under the <a "
@@ -381,52 +452,31 @@ msgstr ""
msgid "Image of goblin stressing out"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:25
-msgid "Actions"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/root.html:31
-msgid "Create new collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:34
-msgid "Change account settings"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:38
-#: mediagoblin/templates/mediagoblin/root.html:44
-#: mediagoblin/templates/mediagoblin/admin/panel.html:21
-#: mediagoblin/templates/mediagoblin/admin/panel.html:26
-#: 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/root.html:51
msgid "Explore"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:53
+#: mediagoblin/templates/mediagoblin/root.html:33
msgid "Hi there, welcome to this MediaGoblin site!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:55
+#: mediagoblin/templates/mediagoblin/root.html:35
msgid ""
"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
"extraordinarily great piece of media hosting software."
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:56
+#: mediagoblin/templates/mediagoblin/root.html:36
msgid ""
"To add your own media, place comments, and more, you can log in with your "
"MediaGoblin account."
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:58
+#: mediagoblin/templates/mediagoblin/root.html:38
msgid "Don't have one yet? It's easy!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:59
+#: mediagoblin/templates/mediagoblin/root.html:39
#, python-format
msgid ""
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Create an account at this site</a>\n"
@@ -434,7 +484,7 @@ msgid ""
" <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:67
+#: mediagoblin/templates/mediagoblin/root.html:47
msgid "Most recent media"
msgstr ""
@@ -540,41 +590,62 @@ msgid ""
"%(verification_url)s"
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:43
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:159
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:175
msgid "Attachments"
msgstr ""
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
msgid "Add attachment"
msgstr ""
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:60
+#: 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:81
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
msgid "Cancel"
msgstr "Cancellar"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:62
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:51
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
msgid "Save changes"
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:47
+#: 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
@@ -587,13 +658,17 @@ msgstr ""
msgid "Changing %(username)s's account settings"
msgstr ""
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
+msgid "Delete my account"
+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:35
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
#, python-format
msgid "Editing %(username)s's profile"
msgstr ""
@@ -609,7 +684,7 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
msgstr ""
@@ -632,7 +707,7 @@ msgid ""
msgstr ""
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:56
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:61
msgid "Original file"
msgstr ""
@@ -644,8 +719,8 @@ msgstr ""
#: 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:67
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
+#: 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 ""
@@ -690,21 +765,21 @@ msgstr ""
msgid "Object Height"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
msgid ""
-"Sorry, this video will not work because \n"
-"\t your web browser does not support HTML5 \n"
-"\t video."
+"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:43
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:47
msgid ""
"You can get a modern web browser that \n"
-"\t can play this video at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:69
msgid "WebM file (640p; VP8/Vorbis)"
msgstr ""
@@ -712,12 +787,6 @@ msgstr ""
msgid "Add a collection"
msgstr ""
-#: mediagoblin/templates/mediagoblin/submit/collection.html:30
-#: mediagoblin/templates/mediagoblin/submit/start.html:34
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-msgid "Add"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
msgid "Add your media"
@@ -734,12 +803,12 @@ 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:87
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
msgid "Edit"
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:91
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
msgid "Delete"
msgstr ""
@@ -749,11 +818,6 @@ msgstr ""
msgid "Really delete %(title)s?"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:47
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Delete permanently"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:31
#, python-format
msgid "Really remove %(media_title)s from %(collection_title)s?"
@@ -763,6 +827,16 @@ msgstr ""
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 ""
@@ -775,56 +849,53 @@ msgstr ""
msgid "%(username)s's media"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:37
+#: 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:46
+#: 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:102
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:94
msgid "Add a comment"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:109
-msgid ""
-"You can use <a "
-"href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> for"
-" formatting."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:113
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:102
msgid "Add this comment"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:123
msgid "at"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:152
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:144
#, python-format
msgid ""
"<h3>Added on</h3>\n"
" <p>%(date)s</p>"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:202
-msgid "Add media to collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
#, python-format
-msgid "Add %(title)s to collection"
+msgid "Add “%(media_title)s†to a collection"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:51
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
msgstr ""
@@ -886,27 +957,31 @@ msgstr ""
msgid "Here's a spot to tell others about yourself."
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:101
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:100
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:117
msgid "Edit profile"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:105
msgid "This user hasn't filled in their profile (yet)."
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:124
+msgid "Browse collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:137
#, python-format
msgid "View all of %(username)s's media"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:145
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:150
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:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:162
#: 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..."
@@ -916,28 +991,24 @@ msgstr ""
msgid "(remove)"
msgstr ""
-#: mediagoblin/templates/mediagoblin/utils/collections.html:20
-#, python-format
-msgid "In collections (%(collected)s)"
+#: 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/geolocation_map.html:25
-msgid "Location"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/utils/geolocation_map.html:53
-#, python-format
-msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
msgstr ""
@@ -968,49 +1039,64 @@ msgstr ""
msgid "Tagged with"
msgstr ""
-#: mediagoblin/tools/exif.py:78
+#: mediagoblin/tools/exif.py:80
msgid "Could not read the image file."
msgstr ""
-#: mediagoblin/tools/response.py:30
+#: mediagoblin/tools/response.py:35
msgid "Oops!"
msgstr ""
-#: mediagoblin/tools/response.py:31
+#: mediagoblin/tools/response.py:36
msgid "An error occured"
msgstr ""
-#: mediagoblin/tools/response.py:46
+#: mediagoblin/tools/response.py:51
msgid "Operation not allowed"
msgstr ""
-#: mediagoblin/tools/response.py:47
+#: mediagoblin/tools/response.py:52
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:55
+#: mediagoblin/tools/response.py:60
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/user_pages/forms.py:28
+#: 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\">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:32
+#: 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:35
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:40
msgid "-- Select --"
msgstr ""
-#: mediagoblin/user_pages/forms.py:37
+#: mediagoblin/user_pages/forms.py:42
msgid "Include a note"
msgstr ""
@@ -1018,74 +1104,69 @@ msgstr ""
msgid "commented on your post"
msgstr ""
-#: mediagoblin/user_pages/views.py:156
+#: mediagoblin/user_pages/views.py:166
msgid "Oops, your comment was empty."
msgstr ""
-#: mediagoblin/user_pages/views.py:162
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
msgstr ""
-#: mediagoblin/user_pages/views.py:230
+#: mediagoblin/user_pages/views.py:197
+msgid "Please check your entries and try again."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:237
msgid "You have to select or add a collection"
msgstr ""
-#: mediagoblin/user_pages/views.py:238
+#: mediagoblin/user_pages/views.py:248
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:253
+#: mediagoblin/user_pages/views.py:264
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:261
-msgid "Please check your entries and try again."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:292
-msgid ""
-"Some of the files with this entry seem to be missing. Deleting anyway."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:297
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
msgstr ""
-#: mediagoblin/user_pages/views.py:304
+#: mediagoblin/user_pages/views.py:293
msgid "The media was not deleted because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/user_pages/views.py:312
+#: mediagoblin/user_pages/views.py:301
msgid "You are about to delete another user's media. Proceed with caution."
msgstr ""
-#: mediagoblin/user_pages/views.py:370
+#: mediagoblin/user_pages/views.py:375
msgid "You deleted the item from the collection."
msgstr ""
-#: mediagoblin/user_pages/views.py:374
+#: mediagoblin/user_pages/views.py:379
msgid "The item was not removed because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/user_pages/views.py:384
+#: mediagoblin/user_pages/views.py:389
msgid ""
"You are about to delete an item from another user's collection. Proceed with"
" caution."
msgstr ""
-#: mediagoblin/user_pages/views.py:417
+#: mediagoblin/user_pages/views.py:422
#, python-format
msgid "You deleted the collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:424
+#: mediagoblin/user_pages/views.py:429
msgid ""
"The collection was not deleted because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/user_pages/views.py:434
+#: mediagoblin/user_pages/views.py:439
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
index 23f9f1bf..376aace4 100644
--- a/mediagoblin/i18n/is_IS/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/is_IS/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/is_IS/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/is_IS/LC_MESSAGES/mediagoblin.po
index 04a1f7f6..1b298a64 100644
--- a/mediagoblin/i18n/is_IS/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/is_IS/LC_MESSAGES/mediagoblin.po
@@ -1,5 +1,5 @@
# Translations template for PROJECT.
-# Copyright (C) 2012 ORGANIZATION
+# Copyright (C) 2013 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: http://issues.mediagoblin.org/\n"
-"POT-Creation-Date: 2012-12-20 09:18-0600\n"
-"PO-Revision-Date: 2012-12-20 15:14+0000\n"
+"POT-Creation-Date: 2013-03-04 18:04-0600\n"
+"PO-Revision-Date: 2013-03-05 00:04+0000\n"
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
@@ -19,82 +19,96 @@ msgstr ""
"Language: is_IS\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:41
+#: mediagoblin/auth/forms.py:28
+msgid "Invalid User name or email address."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:29
+msgid "This field does not take email addresses."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:30
+msgid "This field requires an email address."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:52 mediagoblin/auth/forms.py:67
msgid "Username"
msgstr "Notandanafn"
-#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:45
+#: mediagoblin/auth/forms.py:56 mediagoblin/auth/forms.py:71
msgid "Password"
msgstr "Lykilorð"
-#: mediagoblin/auth/forms.py:34
+#: mediagoblin/auth/forms.py:60
msgid "Email address"
msgstr "Netfang"
-#: mediagoblin/auth/forms.py:51
+#: mediagoblin/auth/forms.py:78
msgid "Username or email"
msgstr "Notandanafn eða netfang"
-#: mediagoblin/auth/forms.py:58
-msgid "Incorrect input"
-msgstr "Ógild innsending"
-
-#: mediagoblin/auth/views.py:55
+#: mediagoblin/auth/views.py:54
msgid "Sorry, registration is disabled on this instance."
msgstr "Því miður er nýskráning ekki leyfð á þessu svæði."
-#: mediagoblin/auth/views.py:75
+#: mediagoblin/auth/views.py:68
msgid "Sorry, a user with that name already exists."
msgstr "Því miður er nú þegar til notandi með þetta nafn."
-#: mediagoblin/auth/views.py:79
+#: mediagoblin/auth/views.py:72
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:182
+#: mediagoblin/auth/views.py:174
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:188
+#: mediagoblin/auth/views.py:180
msgid "The verification key or user id is incorrect"
msgstr "Staðfestingarlykillinn eða notendaauðkennið er rangt"
-#: mediagoblin/auth/views.py:206
+#: mediagoblin/auth/views.py:198
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:214
+#: mediagoblin/auth/views.py:206
msgid "You've already verified your email address!"
msgstr "Þú hefur staðfest netfangið þitt!"
-#: mediagoblin/auth/views.py:227
+#: mediagoblin/auth/views.py:219
msgid "Resent your verification email."
msgstr "Endursendi staðfestingartölvupóst"
-#: mediagoblin/auth/views.py:263
+#: mediagoblin/auth/views.py:250
+msgid ""
+"If that email address (case sensitive!) is registered an email has been sent"
+" with instructions on how to change your password."
+msgstr ""
+
+#: mediagoblin/auth/views.py:261
+msgid "Couldn't find someone with that username."
+msgstr ""
+
+#: mediagoblin/auth/views.py:264
msgid ""
"An email has been sent with instructions on how to change your password."
msgstr "Tölvupóstur hefur verið sendur með leiðbeiningum um hvernig þú átt að breyta lykilorðinu þínu."
-#: mediagoblin/auth/views.py:273
+#: mediagoblin/auth/views.py:271
msgid ""
"Could not send password recovery email as your username is inactive or your "
"account's email address has not been verified."
msgstr "Gat ekki sent tölvupóst um endurstillingu lykilorðs því notandanafnið þitt er óvirkt eða þá að þú hefur ekki staðfest netfangið þitt."
-#: mediagoblin/auth/views.py:285
-msgid "Couldn't find someone with that username or email."
-msgstr "Gat ekki fundið neinn með það notandanafn eða lykilorð."
-
-#: mediagoblin/auth/views.py:333
+#: mediagoblin/auth/views.py:328
msgid "You can now log in using your new password."
msgstr "Þú getur núna innskráð þig með nýja lykilorðinu þínu."
-#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:82
+#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:93
#: mediagoblin/submit/forms.py:28 mediagoblin/submit/forms.py:47
-#: mediagoblin/user_pages/forms.py:40
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr "Titill"
@@ -103,8 +117,8 @@ msgid "Description of this work"
msgstr "Lýsing á þessu efni"
#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:52
-#: mediagoblin/edit/forms.py:86 mediagoblin/submit/forms.py:32
-#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:44
+#: mediagoblin/edit/forms.py:97 mediagoblin/submit/forms.py:32
+#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:49
msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
@@ -119,11 +133,11 @@ msgstr "Efnisorð"
msgid "Separate tags by commas."
msgstr "Aðskildu efnisorðin með kommum."
-#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:90
+#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:101
msgid "Slug"
msgstr "Vefslóðarormur"
-#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:91
+#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:102
msgid "The slug can't be empty"
msgstr "Vefslóðarormurinn getur ekki verið tómur"
@@ -162,65 +176,81 @@ msgstr "Skráðu gamla lykilorðið þitt til að sanna að þú átt þennan aÃ
msgid "New password"
msgstr "Nýtt lykilorð"
-#: mediagoblin/edit/forms.py:71
+#: mediagoblin/edit/forms.py:74
+msgid "License preference"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:80
+msgid "This will be your default license on upload forms."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:82
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:83
+#: mediagoblin/edit/forms.py:94
msgid "The title can't be empty"
msgstr "Þessi titill getur verið innihaldslaus"
-#: mediagoblin/edit/forms.py:85 mediagoblin/submit/forms.py:50
-#: mediagoblin/user_pages/forms.py:43
+#: mediagoblin/edit/forms.py:96 mediagoblin/submit/forms.py:50
+#: mediagoblin/user_pages/forms.py:48
msgid "Description of this collection"
msgstr "Lýsing á þessu albúmi"
-#: mediagoblin/edit/forms.py:92
+#: mediagoblin/edit/forms.py:103
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/views.py:65
+#: mediagoblin/edit/views.py:66
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:86
+#: mediagoblin/edit/views.py:85
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:156
+#: mediagoblin/edit/views.py:155
#, python-format
msgid "You added the attachment %s!"
msgstr "Þú bættir við viðhenginu %s!"
-#: mediagoblin/edit/views.py:181
+#: mediagoblin/edit/views.py:182
+msgid "You can only edit your own profile."
+msgstr ""
+
+#: mediagoblin/edit/views.py:188
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:197
+#: mediagoblin/edit/views.py:204
msgid "Profile changes saved"
msgstr "Breytingar á kenniskrá vistaðar"
-#: mediagoblin/edit/views.py:226 mediagoblin/edit/views.py:246
+#: mediagoblin/edit/views.py:241
+msgid "Wrong password"
+msgstr "Vitlaust lykilorð"
+
+#: mediagoblin/edit/views.py:252
msgid "Account settings saved"
msgstr "Aðgangsstillingar vistaðar"
-#: mediagoblin/edit/views.py:251
-msgid "Wrong password"
-msgstr "Vitlaust lykilorð"
+#: mediagoblin/edit/views.py:286
+msgid "You need to confirm the deletion of your account."
+msgstr ""
-#: mediagoblin/edit/views.py:287 mediagoblin/submit/views.py:211
-#: mediagoblin/user_pages/views.py:210
+#: mediagoblin/edit/views.py:322 mediagoblin/submit/views.py:142
+#: mediagoblin/user_pages/views.py:214
#, python-format
msgid "You already have a collection called \"%s\"!"
msgstr "Þú hefur nú þegar albúm sem kallast \"%s\"!"
-#: mediagoblin/edit/views.py:291
+#: mediagoblin/edit/views.py:326
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:308
+#: mediagoblin/edit/views.py:343
msgid "You are editing another user's collection. Proceed with caution."
msgstr "Þú ert að breyta albúmi annars notanda. Farðu mjög varlega."
@@ -236,54 +266,62 @@ msgstr "Engin eignamappa fyrir þetta þema\n"
msgid "However, old link directory symlink found; removed.\n"
msgstr "Fann samt gamlan táknrænan tengil á möppu; fjarlægður.\n"
-#: mediagoblin/media_types/__init__.py:60
-#: mediagoblin/media_types/__init__.py:101
+#: 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:61
+#: mediagoblin/media_types/__init__.py:102
msgid "Sorry, I don't support that file type :("
msgstr "Ég styð því miður ekki þessa gerð af skrám :("
-#: mediagoblin/media_types/video/processing.py:35
+#: mediagoblin/media_types/video/processing.py:36
msgid "Video transcoding failed"
msgstr "Myndbandsþverkótun mistókst"
-#: mediagoblin/plugins/oauth/forms.py:26
-msgid "Client ID"
-msgstr "Auðkenni biðlara"
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
+msgid "Location"
+msgstr "Staðsetning"
-#: mediagoblin/plugins/oauth/forms.py:28
-msgid "Next URL"
-msgstr "Næsta vefslóð"
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:52
+#, python-format
+msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
+msgstr "Skoða á <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-#: mediagoblin/plugins/oauth/forms.py:30
+#: mediagoblin/plugins/oauth/forms.py:29
msgid "Allow"
msgstr "Leyfa"
-#: mediagoblin/plugins/oauth/forms.py:31
+#: mediagoblin/plugins/oauth/forms.py:30
msgid "Deny"
msgstr "Banna"
-#: mediagoblin/plugins/oauth/forms.py:35
+#: mediagoblin/plugins/oauth/forms.py:34
msgid "Name"
msgstr "Nafn"
-#: mediagoblin/plugins/oauth/forms.py:36
+#: mediagoblin/plugins/oauth/forms.py:35
msgid "The name of the OAuth client"
msgstr "Nafn OAuth biðlarans"
-#: mediagoblin/plugins/oauth/forms.py:37
+#: mediagoblin/plugins/oauth/forms.py:36
msgid "Description"
msgstr "Lýsing"
-#: mediagoblin/plugins/oauth/forms.py:39
+#: mediagoblin/plugins/oauth/forms.py:38
msgid ""
"This will be visible to users allowing your\n"
" application to authenticate as them."
msgstr "Þetta verður sýnilegt öðrum notendum sem leyfir\n forritinu þínu að skrá sig inn sem þeir."
-#: mediagoblin/plugins/oauth/forms.py:41
+#: mediagoblin/plugins/oauth/forms.py:40
msgid "Type"
msgstr "Tegund"
-#: mediagoblin/plugins/oauth/forms.py:46
+#: 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"
@@ -293,25 +331,40 @@ msgid ""
" JavaScript client)."
msgstr "<strong>Trúnaður</strong> - Biðlarinn getur\n sent beiðnir til GNU MediaGoblin vefsvæðisins sem geta ekki verið\n truflaðar af notandaforriti (t.d. forriti á vefþjóni).<br />\n <strong>Opinbert</strong> - Biðlarinn getur ekki gert trúnaðarbundnar\n beiðnir til GNU MediaGoblin vefsvæðisins (t.d. Javascript biðlara\n hjá notanda)."
-#: mediagoblin/plugins/oauth/forms.py:53
+#: mediagoblin/plugins/oauth/forms.py:52
msgid "Redirect URI"
msgstr "Ãframsendingarvefslóð"
-#: mediagoblin/plugins/oauth/forms.py:55
+#: mediagoblin/plugins/oauth/forms.py:54
msgid ""
"The redirect URI for the applications, this field\n"
" is <strong>required</strong> for public clients."
msgstr "Ãframsendingarvefslóðin fyrir forritin, þessi reitur\n er <strong>nauðsynlegur</strong> fyrir opinbera biðlara."
-#: mediagoblin/plugins/oauth/forms.py:67
+#: mediagoblin/plugins/oauth/forms.py:66
msgid "This field is required for public clients"
msgstr "Þessi reitur er nauðsynlegur fyrir opinbera biðlara"
-#: mediagoblin/plugins/oauth/views.py:60
+#: mediagoblin/plugins/oauth/views.py:59
msgid "The client {0} has been registered!"
msgstr "Biðlarinn {0} hefur verið skráður!"
-#: mediagoblin/processing/__init__.py:138
+#: 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/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr "Bæta við"
+
+#: mediagoblin/processing/__init__.py:172
msgid "Invalid file given for media type."
msgstr "Ógild skrá gefin fyrir þessa margmiðlunartegund."
@@ -319,56 +372,74 @@ msgstr "Ógild skrá gefin fyrir þessa margmiðlunartegund."
msgid "File"
msgstr "Skrá"
-#: mediagoblin/submit/views.py:57
+#: mediagoblin/submit/views.py:51
msgid "You must provide a file."
msgstr "Þú verður að gefa upp skrá."
-#: mediagoblin/submit/views.py:164
+#: mediagoblin/submit/views.py:97
msgid "Woohoo! Submitted!"
msgstr "Jibbí jei! Það tókst að senda inn!"
-#: mediagoblin/submit/views.py:215
+#: mediagoblin/submit/views.py:146
#, python-format
msgid "Collection \"%s\" added!"
msgstr "Albúmið \"%s\" var búið til!"
-#: mediagoblin/templates/mediagoblin/base.html:48
-msgid "MediaGoblin logo"
-msgstr "MediaGoblin einkennismerkið"
-
-#: mediagoblin/templates/mediagoblin/base.html:54
-#, 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:64
+msgid "Verify your email!"
+msgstr "Staðfestu netfangið þitt!"
-#: mediagoblin/templates/mediagoblin/base.html:60
+#: mediagoblin/templates/mediagoblin/base.html:65
msgid "log out"
msgstr "útskrá"
-#: mediagoblin/templates/mediagoblin/base.html:62
-#: mediagoblin/templates/mediagoblin/root.html:28
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:151
-msgid "Add media"
-msgstr "Senda inn efni"
-
-#: mediagoblin/templates/mediagoblin/base.html:68
-msgid "Verify your email!"
-msgstr "Staðfestu netfangið þitt!"
-
-#: mediagoblin/templates/mediagoblin/base.html:73
+#: mediagoblin/templates/mediagoblin/base.html:70
#: mediagoblin/templates/mediagoblin/auth/login.html:28
#: mediagoblin/templates/mediagoblin/auth/login.html:36
#: mediagoblin/templates/mediagoblin/auth/login.html:54
msgid "Log in"
msgstr "Innskráning"
-#: mediagoblin/templates/mediagoblin/base.html:87
-msgid ""
-"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
-"href=\"http://gnu.org/\">GNU</a> project."
-msgstr "Keyrt af <a href=\"http://mediagoblin.org\">MediaGoblin</a>, sem er <a href=\"http://gnu.org/\">GNU</a> verkefni."
+#: mediagoblin/templates/mediagoblin/base.html:79
+#, 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:86
+msgid "Change account settings"
+msgstr "Breyta stillingum notandaaðgangs"
#: mediagoblin/templates/mediagoblin/base.html:90
+#: mediagoblin/templates/mediagoblin/base.html:105
+#: mediagoblin/templates/mediagoblin/admin/panel.html:21
+#: mediagoblin/templates/mediagoblin/admin/panel.html:26
+#: 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"
+
+#: mediagoblin/templates/mediagoblin/base.html:93
+msgid "Log out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:156
+msgid "Add media"
+msgstr "Senda inn efni"
+
+#: mediagoblin/templates/mediagoblin/base.html:99
+#: 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:122
+#, 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/base.html:125
#, python-format
msgid ""
"Released under the <a "
@@ -380,52 +451,31 @@ msgstr "Gefið út undir <a href=\"http://www.fsf.org/licensing/licenses/agpl-3.
msgid "Image of goblin stressing out"
msgstr "Mynd af durt í stresskasti"
-#: mediagoblin/templates/mediagoblin/root.html:25
-msgid "Actions"
-msgstr "Aðgerðir"
-
#: mediagoblin/templates/mediagoblin/root.html:31
-msgid "Create new collection"
-msgstr "Búa til nýtt albúm"
-
-#: mediagoblin/templates/mediagoblin/root.html:34
-msgid "Change account settings"
-msgstr "Breyta stillingum notandaaðgangs"
-
-#: mediagoblin/templates/mediagoblin/root.html:38
-#: mediagoblin/templates/mediagoblin/root.html:44
-#: mediagoblin/templates/mediagoblin/admin/panel.html:21
-#: mediagoblin/templates/mediagoblin/admin/panel.html:26
-#: 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"
-
-#: mediagoblin/templates/mediagoblin/root.html:51
msgid "Explore"
msgstr "Skoða"
-#: mediagoblin/templates/mediagoblin/root.html:53
+#: mediagoblin/templates/mediagoblin/root.html:33
msgid "Hi there, welcome to this MediaGoblin site!"
msgstr "Hæ! Gakktu í bæinn á þetta MediaGoblin vefsvæði!"
-#: mediagoblin/templates/mediagoblin/root.html:55
+#: mediagoblin/templates/mediagoblin/root.html:35
msgid ""
"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
"extraordinarily great piece of media hosting software."
msgstr "Þetta vefsvæði keyrira á <a href=\"http://mediagoblin.org\">MediaGoblin</a> sem er ótrúlega frábær hugbúnaður til að geyma margmiðlunarefni."
-#: mediagoblin/templates/mediagoblin/root.html:56
+#: mediagoblin/templates/mediagoblin/root.html:36
msgid ""
"To add your own media, place comments, and more, you can log in with your "
"MediaGoblin account."
msgstr "Til að senda inn þitt efni, gera athugasemdir og fleira getur þú skráð þig inn með þínum MediaGoblin aðgangi."
-#: mediagoblin/templates/mediagoblin/root.html:58
+#: mediagoblin/templates/mediagoblin/root.html:38
msgid "Don't have one yet? It's easy!"
msgstr "Ertu ekki með aðgang? Það er auðvelt að búa til!"
-#: mediagoblin/templates/mediagoblin/root.html:59
+#: mediagoblin/templates/mediagoblin/root.html:39
#, python-format
msgid ""
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Create an account at this site</a>\n"
@@ -433,7 +483,7 @@ msgid ""
" <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
msgstr "<a class=\"button_action_highlight\" href=\"%(register_url)s\">Búa til aðgang á þessari síðu</a>\n eða\n <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Settu upp þinn eigin margmiðlunarþjón</a>"
-#: mediagoblin/templates/mediagoblin/root.html:67
+#: mediagoblin/templates/mediagoblin/root.html:47
msgid "Most recent media"
msgstr "Nýlegt efni"
@@ -539,41 +589,62 @@ msgid ""
"%(verification_url)s"
msgstr "Hæ %(username)s,\n\ntil að virkja GNU MediaGoblin aðganginn þinn, opnaðu þá eftirfarandi vefslóði í\nvafranum þínum:\n\n%(verification_url)s"
+#: mediagoblin/templates/mediagoblin/bits/logo.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/bits/logo.html:23
+msgid "MediaGoblin logo"
+msgstr "MediaGoblin einkennismerkið"
+
#: mediagoblin/templates/mediagoblin/edit/attachments.html:23
#: mediagoblin/templates/mediagoblin/edit/attachments.html:35
#, python-format
msgid "Editing attachments for %(media_title)s"
msgstr "Breyti viðhengjum við: %(media_title)s"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:43
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:159
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:175
msgid "Attachments"
msgstr "Viðhengi"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
msgid "Add attachment"
msgstr "Bæta við viðhengi"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:60
+#: 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:81
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
msgid "Cancel"
msgstr "Hætta við"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:62
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:51
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
msgid "Save changes"
msgstr "Vista breytingar"
+#: 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:47
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
+msgid "Delete permanently"
+msgstr "Eytt algjörlega"
+
#: mediagoblin/templates/mediagoblin/edit/edit.html:23
#: mediagoblin/templates/mediagoblin/edit/edit.html:35
#, python-format
@@ -586,13 +657,17 @@ msgstr "Breyti %(media_title)s"
msgid "Changing %(username)s's account settings"
msgstr "Breyti notandaaðgangsstillingum fyrir: %(username)s"
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
+msgid "Delete my account"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:29
#, python-format
msgid "Editing %(collection_title)s"
msgstr "Breyti %(collection_title)s"
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:23
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
#, python-format
msgid "Editing %(username)s's profile"
msgstr "Breyti kenniskrá notandans: %(username)s"
@@ -608,7 +683,7 @@ 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/stl.html:136
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
msgstr "Sækja af Netinu"
@@ -631,7 +706,7 @@ msgid ""
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/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:56
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:61
msgid "Original file"
msgstr "Upphaflega skráin"
@@ -643,8 +718,8 @@ msgstr "WebM skrá (Vorbis víxlþjöppun)"
#: 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:67
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
+#: 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 "Mynd fyrir %(media_title)s"
@@ -689,21 +764,21 @@ msgstr "Skráarsnið"
msgid "Object Height"
msgstr "Hæð hlutar"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
msgid ""
-"Sorry, this video will not work because \n"
-"\t your web browser does not support HTML5 \n"
-"\t video."
-msgstr "Því miður mun þetta myndband ekki virka vegna þess að \n\t vafrinn þinn styður ekki HTML5 \n\t myndbönd."
+"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:43
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:47
msgid ""
"You can get a modern web browser that \n"
-"\t can play this video at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
-msgstr "Þú getur náð í nýlegan vafra sem \n\t getur spilað þetta myndband á <a href=\"http://getfirefox.com\">\n\t http://getfirefox.com</a>!"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:69
msgid "WebM file (640p; VP8/Vorbis)"
msgstr "WebM skrá (640p; VP8/Vorbis)"
@@ -711,12 +786,6 @@ msgstr "WebM skrá (640p; VP8/Vorbis)"
msgid "Add a collection"
msgstr "Búa til albúm"
-#: mediagoblin/templates/mediagoblin/submit/collection.html:30
-#: mediagoblin/templates/mediagoblin/submit/start.html:34
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-msgid "Add"
-msgstr "Bæta við"
-
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
msgid "Add your media"
@@ -733,12 +802,12 @@ msgid "%(collection_title)s by <a href=\"%(user_url)s\">%(username)s</a>"
msgstr "%(collection_title)s sem <a href=\"%(user_url)s\">%(username)s</a> bjó til"
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:87
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
msgid "Edit"
msgstr "Breyta"
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:91
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
msgid "Delete"
msgstr "Eyða"
@@ -748,11 +817,6 @@ msgstr "Eyða"
msgid "Really delete %(title)s?"
msgstr "Virkilega eyða %(title)s?"
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:47
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Delete permanently"
-msgstr "Eytt algjörlega"
-
#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:31
#, python-format
msgid "Really remove %(media_title)s from %(collection_title)s?"
@@ -762,6 +826,16 @@ msgstr "Virkilega fjarlægja %(media_title)s úr %(collection_title)s albúminu?
msgid "Remove"
msgstr "Fjarlægja"
+#: 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 ""
@@ -774,56 +848,53 @@ msgstr "Hæ %(username)s,\n%(comment_author)s skrifaði athugasemd við færslun
msgid "%(username)s's media"
msgstr "Efni sem %(username)s á"
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:37
+#: 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 "Efni sem <a href=\"%(user_url)s\">%(username)s</a> á"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
#, 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:102
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:94
msgid "Add a comment"
msgstr "Bæta við athugasemd"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:109
-msgid ""
-"You can use <a "
-"href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> for"
-" formatting."
-msgstr "Þú getur notað <a href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> til að stílgera textann"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:113
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:102
msgid "Add this comment"
msgstr "Senda inn þessa athugasemd"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:123
msgid "at"
msgstr "hjá"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:152
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:144
#, python-format
msgid ""
"<h3>Added on</h3>\n"
" <p>%(date)s</p>"
msgstr "<h3>Bætt við:</h3>\n <p>%(date)s</p>"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:202
-msgid "Add media to collection"
-msgstr "Bæta efni við albúmið"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
#, python-format
-msgid "Add %(title)s to collection"
-msgstr "Setja %(title)s í albúm"
+msgid "Add “%(media_title)s†to a collection"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:51
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
msgstr "+"
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
msgstr "Búa til nýtt albúm"
@@ -885,27 +956,31 @@ msgstr "Ef þú ert þessi aðili en hefur týnt staðfestingarpóstinum getur Ã
msgid "Here's a spot to tell others about yourself."
msgstr "Hér er svæði til að segja öðrum frá þér."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:101
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:100
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:117
msgid "Edit profile"
msgstr "Breyta kenniskrá"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:105
msgid "This user hasn't filled in their profile (yet)."
msgstr "Þessi notandi hefur ekki fyllt inn í upplýsingar um sig (ennþá)."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:124
+msgid "Browse collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:137
#, python-format
msgid "View all of %(username)s's media"
msgstr "Skoða efnið sem %(username)s á"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:145
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:150
msgid ""
"This is where your media will appear, but you don't seem to have added "
"anything yet."
msgstr "Þetta er staðurinn þar sem efnið þitt birtist en þú virðist ekki hafa sent neitt inn ennþá."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:162
#: 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..."
@@ -915,28 +990,24 @@ msgstr "Það virðist ekki vera neitt efni hérna ennþá..."
msgid "(remove)"
msgstr "(fjarlægja)"
-#: mediagoblin/templates/mediagoblin/utils/collections.html:20
-#, python-format
-msgid "In collections (%(collected)s)"
-msgstr "à albúmum (%(collected)s)"
+#: 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 "fréttaveituteikn"
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:23
msgid "Atom feed"
msgstr "Atom fréttaveita"
-#: mediagoblin/templates/mediagoblin/utils/geolocation_map.html:25
-msgid "Location"
-msgstr "Staðsetning"
-
-#: mediagoblin/templates/mediagoblin/utils/geolocation_map.html:53
-#, python-format
-msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-msgstr "Skoða á <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
msgstr "Öll réttindi áskilin"
@@ -967,49 +1038,64 @@ msgstr "eldri"
msgid "Tagged with"
msgstr "Merkt með"
-#: mediagoblin/tools/exif.py:78
+#: mediagoblin/tools/exif.py:80
msgid "Could not read the image file."
msgstr "Gat ekki lesið myndskrána."
-#: mediagoblin/tools/response.py:30
+#: mediagoblin/tools/response.py:35
msgid "Oops!"
msgstr "Obbosí!"
-#: mediagoblin/tools/response.py:31
+#: mediagoblin/tools/response.py:36
msgid "An error occured"
msgstr "Villa kom upp"
-#: mediagoblin/tools/response.py:46
+#: mediagoblin/tools/response.py:51
msgid "Operation not allowed"
msgstr "Aðgerð ekki leyfileg"
-#: mediagoblin/tools/response.py:47
+#: mediagoblin/tools/response.py:52
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>Þú hefur reynt að framkvæma aðger sem þú hefur ekki leyfi til. Varstu að reyna að eyða öllum notendunum aftur?"
-#: mediagoblin/tools/response.py:55
+#: mediagoblin/tools/response.py:60
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 "Því miður! Það virðist ekki vera nein síða á þessari vefslóð.</p><p>Ef þú ert viss um að vefslóðin sé rétt hefur vefsíðan sem þú ert að leita að kannski verið flutt eða fjarlægð."
-#: mediagoblin/user_pages/forms.py:28
+#: 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\">Markdown</a> for"
+" formatting."
+msgstr "Þú getur notað <a href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> til að stílgera textann"
+
+#: mediagoblin/user_pages/forms.py:31
msgid "I am sure I want to delete this"
msgstr "Ég er viss um að ég vilji eyða þessu"
-#: mediagoblin/user_pages/forms.py:32
+#: mediagoblin/user_pages/forms.py:35
msgid "I am sure I want to remove this item from the collection"
msgstr "Ég er viss um að ég vilji fjarlægja þetta efni úr albúminu"
-#: mediagoblin/user_pages/forms.py:35
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:40
msgid "-- Select --"
msgstr "-- Velja --"
-#: mediagoblin/user_pages/forms.py:37
+#: mediagoblin/user_pages/forms.py:42
msgid "Include a note"
msgstr "Bæta við minnispunktum"
@@ -1017,74 +1103,69 @@ msgstr "Bæta við minnispunktum"
msgid "commented on your post"
msgstr "skrifaði athugasemd við færsluna þína"
-#: mediagoblin/user_pages/views.py:156
+#: mediagoblin/user_pages/views.py:166
msgid "Oops, your comment was empty."
msgstr "Obbosí! Athugasemdin þín var innihaldslaus."
-#: mediagoblin/user_pages/views.py:162
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
msgstr "Athugasemdin þín var skráð!"
-#: mediagoblin/user_pages/views.py:230
+#: mediagoblin/user_pages/views.py:197
+msgid "Please check your entries and try again."
+msgstr "Vinsamlegast kíktu á innsendingarnar þínar og reyndu aftur."
+
+#: mediagoblin/user_pages/views.py:237
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:238
+#: mediagoblin/user_pages/views.py:248
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr "\"%s\" er nú þegar í albúminu \"%s\""
-#: mediagoblin/user_pages/views.py:253
+#: mediagoblin/user_pages/views.py:264
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr "\"%s\" sett í albúmið \"%s\""
-#: mediagoblin/user_pages/views.py:261
-msgid "Please check your entries and try again."
-msgstr "Vinsamlegast kíktu á innsendingarnar þínar og reyndu aftur."
-
-#: mediagoblin/user_pages/views.py:292
-msgid ""
-"Some of the files with this entry seem to be missing. Deleting anyway."
-msgstr "Sumar af skránum við þessa innsendingu virðast vera horfnar. Eyði þrátt fyrir það."
-
-#: mediagoblin/user_pages/views.py:297
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
msgstr "Þú eyddir þessu efni."
-#: mediagoblin/user_pages/views.py:304
+#: mediagoblin/user_pages/views.py:293
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/user_pages/views.py:312
+#: mediagoblin/user_pages/views.py:301
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:370
+#: mediagoblin/user_pages/views.py:375
msgid "You deleted the item from the collection."
msgstr "Þú tókst þetta efni úr albúminu."
-#: mediagoblin/user_pages/views.py:374
+#: mediagoblin/user_pages/views.py:379
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:384
+#: mediagoblin/user_pages/views.py:389
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:417
+#: mediagoblin/user_pages/views.py:422
#, python-format
msgid "You deleted the collection \"%s\""
msgstr "Þú eyddir albúminu \"%s\""
-#: mediagoblin/user_pages/views.py:424
+#: mediagoblin/user_pages/views.py:429
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:434
+#: mediagoblin/user_pages/views.py:439
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
index dad0aec4..62451511 100644
--- a/mediagoblin/i18n/it/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/it/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/it/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/it/LC_MESSAGES/mediagoblin.po
index e91926a1..e13345a7 100644
--- a/mediagoblin/i18n/it/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/it/LC_MESSAGES/mediagoblin.po
@@ -1,5 +1,5 @@
# Translations template for PROJECT.
-# Copyright (C) 2012 ORGANIZATION
+# Copyright (C) 2013 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: http://issues.mediagoblin.org/\n"
-"POT-Creation-Date: 2012-12-20 09:18-0600\n"
-"PO-Revision-Date: 2012-12-20 15:14+0000\n"
+"POT-Creation-Date: 2013-03-04 18:04-0600\n"
+"PO-Revision-Date: 2013-03-05 00:04+0000\n"
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
@@ -22,82 +22,96 @@ msgstr ""
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:41
+#: mediagoblin/auth/forms.py:28
+msgid "Invalid User name or email address."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:29
+msgid "This field does not take email addresses."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:30
+msgid "This field requires an email address."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:52 mediagoblin/auth/forms.py:67
msgid "Username"
msgstr "Nome utente"
-#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:45
+#: mediagoblin/auth/forms.py:56 mediagoblin/auth/forms.py:71
msgid "Password"
msgstr "Password"
-#: mediagoblin/auth/forms.py:34
+#: mediagoblin/auth/forms.py:60
msgid "Email address"
msgstr "Indirizzo email"
-#: mediagoblin/auth/forms.py:51
+#: mediagoblin/auth/forms.py:78
msgid "Username or email"
msgstr "Nome utente o indirizzo email"
-#: mediagoblin/auth/forms.py:58
-msgid "Incorrect input"
-msgstr ""
-
-#: mediagoblin/auth/views.py:55
+#: mediagoblin/auth/views.py:54
msgid "Sorry, registration is disabled on this instance."
msgstr "Spiacente, la registrazione è disabilitata su questa istanza."
-#: mediagoblin/auth/views.py:75
+#: mediagoblin/auth/views.py:68
msgid "Sorry, a user with that name already exists."
msgstr "Spiacente, esiste già un utente con quel nome."
-#: mediagoblin/auth/views.py:79
+#: mediagoblin/auth/views.py:72
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:182
+#: mediagoblin/auth/views.py:174
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:188
+#: mediagoblin/auth/views.py:180
msgid "The verification key or user id is incorrect"
msgstr "La chiave di verifica o l'id utente è sbagliato"
-#: mediagoblin/auth/views.py:206
+#: mediagoblin/auth/views.py:198
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:214
+#: mediagoblin/auth/views.py:206
msgid "You've already verified your email address!"
msgstr "Hai già verificato il tuo indirizzo email!"
-#: mediagoblin/auth/views.py:227
+#: mediagoblin/auth/views.py:219
msgid "Resent your verification email."
msgstr "Rispedisci email di verifica"
-#: mediagoblin/auth/views.py:263
+#: mediagoblin/auth/views.py:250
+msgid ""
+"If that email address (case sensitive!) is registered an email has been sent"
+" with instructions on how to change your password."
+msgstr ""
+
+#: mediagoblin/auth/views.py:261
+msgid "Couldn't find someone with that username."
+msgstr ""
+
+#: mediagoblin/auth/views.py:264
msgid ""
"An email has been sent with instructions on how to change your password."
msgstr "Ti è stata inviata un'email con le istruzioni per cambiare la tua password."
-#: mediagoblin/auth/views.py:273
+#: mediagoblin/auth/views.py:271
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."
-#: mediagoblin/auth/views.py:285
-msgid "Couldn't find someone with that username or email."
-msgstr "Impossibile trovare qualcuno con questo nome utente o password."
-
-#: mediagoblin/auth/views.py:333
+#: mediagoblin/auth/views.py:328
msgid "You can now log in using your new password."
msgstr "Ora puoi effettuare l'accesso con la nuova password."
-#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:82
+#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:93
#: mediagoblin/submit/forms.py:28 mediagoblin/submit/forms.py:47
-#: mediagoblin/user_pages/forms.py:40
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr "Titolo"
@@ -106,8 +120,8 @@ msgid "Description of this work"
msgstr "Descrizione di questo lavoro"
#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:52
-#: mediagoblin/edit/forms.py:86 mediagoblin/submit/forms.py:32
-#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:44
+#: mediagoblin/edit/forms.py:97 mediagoblin/submit/forms.py:32
+#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:49
msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
@@ -122,11 +136,11 @@ msgstr "Tags"
msgid "Separate tags by commas."
msgstr "Separa le tags con la virgola."
-#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:90
+#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:101
msgid "Slug"
msgstr ""
-#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:91
+#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:102
msgid "The slug can't be empty"
msgstr ""
@@ -165,65 +179,81 @@ msgstr "Inserisci la vecchia password per dimostrare di essere il proprietario d
msgid "New password"
msgstr "Nuova password"
-#: mediagoblin/edit/forms.py:71
+#: mediagoblin/edit/forms.py:74
+msgid "License preference"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:80
+msgid "This will be your default license on upload forms."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:82
msgid "Email me when others comment on my media"
msgstr "Inviami messaggi email quando altre persone commentano i miei files multimediali"
-#: mediagoblin/edit/forms.py:83
+#: mediagoblin/edit/forms.py:94
msgid "The title can't be empty"
msgstr ""
-#: mediagoblin/edit/forms.py:85 mediagoblin/submit/forms.py:50
-#: mediagoblin/user_pages/forms.py:43
+#: mediagoblin/edit/forms.py:96 mediagoblin/submit/forms.py:50
+#: mediagoblin/user_pages/forms.py:48
msgid "Description of this collection"
msgstr ""
-#: mediagoblin/edit/forms.py:92
+#: mediagoblin/edit/forms.py:103
msgid ""
"The title part of this collection's address. You usually don't need to "
"change this."
msgstr ""
-#: mediagoblin/edit/views.py:65
+#: mediagoblin/edit/views.py:66
msgid "An entry with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:86
+#: mediagoblin/edit/views.py:85
msgid "You are editing another user's media. Proceed with caution."
msgstr "Stai modificando files multimediali di un altro utente. Procedi con attenzione."
-#: mediagoblin/edit/views.py:156
+#: mediagoblin/edit/views.py:155
#, python-format
msgid "You added the attachment %s!"
msgstr ""
-#: mediagoblin/edit/views.py:181
+#: mediagoblin/edit/views.py:182
+msgid "You can only edit your own profile."
+msgstr ""
+
+#: mediagoblin/edit/views.py:188
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:197
+#: mediagoblin/edit/views.py:204
msgid "Profile changes saved"
msgstr "Cambiamenti del profilo salvati"
-#: mediagoblin/edit/views.py:226 mediagoblin/edit/views.py:246
+#: mediagoblin/edit/views.py:241
+msgid "Wrong password"
+msgstr "Password errata"
+
+#: mediagoblin/edit/views.py:252
msgid "Account settings saved"
msgstr "Impostazioni del profilo salvate"
-#: mediagoblin/edit/views.py:251
-msgid "Wrong password"
-msgstr "Password errata"
+#: mediagoblin/edit/views.py:286
+msgid "You need to confirm the deletion of your account."
+msgstr ""
-#: mediagoblin/edit/views.py:287 mediagoblin/submit/views.py:211
-#: mediagoblin/user_pages/views.py:210
+#: mediagoblin/edit/views.py:322 mediagoblin/submit/views.py:142
+#: mediagoblin/user_pages/views.py:214
#, python-format
msgid "You already have a collection called \"%s\"!"
msgstr ""
-#: mediagoblin/edit/views.py:291
+#: mediagoblin/edit/views.py:326
msgid "A collection with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:308
+#: mediagoblin/edit/views.py:343
msgid "You are editing another user's collection. Proceed with caution."
msgstr ""
@@ -239,54 +269,62 @@ msgstr ""
msgid "However, old link directory symlink found; removed.\n"
msgstr ""
-#: mediagoblin/media_types/__init__.py:60
-#: mediagoblin/media_types/__init__.py:101
+#: 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:61
+#: mediagoblin/media_types/__init__.py:102
msgid "Sorry, I don't support that file type :("
msgstr "Mi dispiace, non supporto questo tipo di file :("
-#: mediagoblin/media_types/video/processing.py:35
+#: mediagoblin/media_types/video/processing.py:36
msgid "Video transcoding failed"
msgstr "Transcodifica video fallita"
-#: mediagoblin/plugins/oauth/forms.py:26
-msgid "Client ID"
-msgstr ""
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
+msgid "Location"
+msgstr "Posizione"
-#: mediagoblin/plugins/oauth/forms.py:28
-msgid "Next URL"
-msgstr ""
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:52
+#, python-format
+msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
+msgstr "Visualizza su <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-#: mediagoblin/plugins/oauth/forms.py:30
+#: mediagoblin/plugins/oauth/forms.py:29
msgid "Allow"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:31
+#: mediagoblin/plugins/oauth/forms.py:30
msgid "Deny"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:35
+#: mediagoblin/plugins/oauth/forms.py:34
msgid "Name"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:36
+#: mediagoblin/plugins/oauth/forms.py:35
msgid "The name of the OAuth client"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:37
+#: mediagoblin/plugins/oauth/forms.py:36
msgid "Description"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:39
+#: 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:41
+#: mediagoblin/plugins/oauth/forms.py:40
msgid "Type"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:46
+#: 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"
@@ -296,25 +334,40 @@ msgid ""
" JavaScript client)."
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:53
+#: mediagoblin/plugins/oauth/forms.py:52
msgid "Redirect URI"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:55
+#: 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:67
+#: mediagoblin/plugins/oauth/forms.py:66
msgid "This field is required for public clients"
msgstr ""
-#: mediagoblin/plugins/oauth/views.py:60
+#: mediagoblin/plugins/oauth/views.py:59
msgid "The client {0} has been registered!"
msgstr ""
-#: mediagoblin/processing/__init__.py:138
+#: 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/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr "Aggiungi"
+
+#: mediagoblin/processing/__init__.py:172
msgid "Invalid file given for media type."
msgstr "File non valido per il tipo di file multimediale indicato."
@@ -322,56 +375,74 @@ msgstr "File non valido per il tipo di file multimediale indicato."
msgid "File"
msgstr "File"
-#: mediagoblin/submit/views.py:57
+#: mediagoblin/submit/views.py:51
msgid "You must provide a file."
msgstr "Devi specificare un file."
-#: mediagoblin/submit/views.py:164
+#: mediagoblin/submit/views.py:97
msgid "Woohoo! Submitted!"
msgstr "Evviva! Caricato!"
-#: mediagoblin/submit/views.py:215
+#: mediagoblin/submit/views.py:146
#, python-format
msgid "Collection \"%s\" added!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:48
-msgid "MediaGoblin logo"
-msgstr "Simbolo di MediaGoblin"
+#: mediagoblin/templates/mediagoblin/base.html:64
+msgid "Verify your email!"
+msgstr "Verifica la tua email!"
+
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "log out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:70
+#: mediagoblin/templates/mediagoblin/auth/login.html:28
+#: mediagoblin/templates/mediagoblin/auth/login.html:36
+#: mediagoblin/templates/mediagoblin/auth/login.html:54
+msgid "Log in"
+msgstr "Accedi"
-#: mediagoblin/templates/mediagoblin/base.html:54
+#: mediagoblin/templates/mediagoblin/base.html:79
#, python-format
msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:60
-msgid "log out"
+#: mediagoblin/templates/mediagoblin/base.html:86
+msgid "Change account settings"
+msgstr "Cambia le impostazioni dell'account"
+
+#: mediagoblin/templates/mediagoblin/base.html:90
+#: mediagoblin/templates/mediagoblin/base.html:105
+#: mediagoblin/templates/mediagoblin/admin/panel.html:21
+#: mediagoblin/templates/mediagoblin/admin/panel.html:26
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
+msgid "Media processing panel"
+msgstr "Pannello di elaborazione files multimediali"
+
+#: mediagoblin/templates/mediagoblin/base.html:93
+msgid "Log out"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:62
-#: mediagoblin/templates/mediagoblin/root.html:28
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:151
+#: mediagoblin/templates/mediagoblin/base.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:156
msgid "Add media"
msgstr "Aggiungi files multimediali"
-#: mediagoblin/templates/mediagoblin/base.html:68
-msgid "Verify your email!"
-msgstr "Verifica la tua email!"
-
-#: mediagoblin/templates/mediagoblin/base.html:73
-#: mediagoblin/templates/mediagoblin/auth/login.html:28
-#: mediagoblin/templates/mediagoblin/auth/login.html:36
-#: mediagoblin/templates/mediagoblin/auth/login.html:54
-msgid "Log in"
-msgstr "Accedi"
+#: mediagoblin/templates/mediagoblin/base.html:99
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
+msgid "Create new collection"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:87
+#: mediagoblin/templates/mediagoblin/base.html:122
+#, python-format
msgid ""
-"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
-"href=\"http://gnu.org/\">GNU</a> project."
-msgstr "Realizzato con <a href=\"http://mediagoblin.org\">MediaGoblin</a>, un progetto <a href=\"http://gnu.org/\">GNU</a>."
+"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/base.html:90
+#: mediagoblin/templates/mediagoblin/base.html:125
#, python-format
msgid ""
"Released under the <a "
@@ -383,52 +454,31 @@ msgstr "Rilasciato con licenza <a href=\"http://www.fsf.org/licensing/licenses/a
msgid "Image of goblin stressing out"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:25
-msgid "Actions"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/root.html:31
-msgid "Create new collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:34
-msgid "Change account settings"
-msgstr "Cambia le impostazioni dell'account"
-
-#: mediagoblin/templates/mediagoblin/root.html:38
-#: mediagoblin/templates/mediagoblin/root.html:44
-#: mediagoblin/templates/mediagoblin/admin/panel.html:21
-#: mediagoblin/templates/mediagoblin/admin/panel.html:26
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
-msgid "Media processing panel"
-msgstr "Pannello di elaborazione files multimediali"
-
-#: mediagoblin/templates/mediagoblin/root.html:51
msgid "Explore"
msgstr "Esplora"
-#: mediagoblin/templates/mediagoblin/root.html:53
+#: mediagoblin/templates/mediagoblin/root.html:33
msgid "Hi there, welcome to this MediaGoblin site!"
msgstr "Ciao, benvenuto in questo sito MediaGoblin!"
-#: mediagoblin/templates/mediagoblin/root.html:55
+#: mediagoblin/templates/mediagoblin/root.html:35
msgid ""
"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
"extraordinarily great piece of media hosting software."
msgstr "Questo sito sta utilizzando <a href=\"http://mediagoblin.org\">Mediagoblin</a>, un ottimo programma per caricare e condividere files multimediali."
-#: mediagoblin/templates/mediagoblin/root.html:56
+#: mediagoblin/templates/mediagoblin/root.html:36
msgid ""
"To add your own media, place comments, and more, you can log in with your "
"MediaGoblin account."
msgstr "Per aggiungere i tuoi file multimediali, scrivere commenti e altro puoi accedere con il tuo account MediaGoblin."
-#: mediagoblin/templates/mediagoblin/root.html:58
+#: mediagoblin/templates/mediagoblin/root.html:38
msgid "Don't have one yet? It's easy!"
msgstr "Non ne hai già uno? E' semplice!"
-#: mediagoblin/templates/mediagoblin/root.html:59
+#: mediagoblin/templates/mediagoblin/root.html:39
#, python-format
msgid ""
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Create an account at this site</a>\n"
@@ -436,7 +486,7 @@ msgid ""
" <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
msgstr "<a class=\"button_action_highlight\" href=\"%(register_url)s\">Crea un account in questo sito</a>\n oppure\n <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Installa MediaGoblin sul tuo server</a>"
-#: mediagoblin/templates/mediagoblin/root.html:67
+#: mediagoblin/templates/mediagoblin/root.html:47
msgid "Most recent media"
msgstr "Files multimediali più recenti"
@@ -542,41 +592,62 @@ msgid ""
"%(verification_url)s"
msgstr "Ciao %(username)s,\n\nper attivare il tuo account GNU MediaGoblin, apri il seguente URL nel \ntuo navigatore web.\n\n%(verification_url)s"
+#: mediagoblin/templates/mediagoblin/bits/logo.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/bits/logo.html:23
+msgid "MediaGoblin logo"
+msgstr "Simbolo di 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 "Stai modificando gli allegati di %(media_title)s"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:43
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:159
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:175
msgid "Attachments"
msgstr "Allegati"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
msgid "Add attachment"
msgstr "Aggiungi allegato"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:60
+#: 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:81
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
msgid "Cancel"
msgstr "Annulla"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:62
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:51
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
msgid "Save changes"
msgstr "Salva i cambiamenti"
+#: 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:47
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
+msgid "Delete permanently"
+msgstr "Elimina definitivamente"
+
#: mediagoblin/templates/mediagoblin/edit/edit.html:23
#: mediagoblin/templates/mediagoblin/edit/edit.html:35
#, python-format
@@ -589,13 +660,17 @@ msgstr "Stai modificando %(media_title)s"
msgid "Changing %(username)s's account settings"
msgstr "Stai cambiando le impostazioni dell'account di %(username)s"
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
+msgid "Delete my account"
+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:35
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
#, python-format
msgid "Editing %(username)s's profile"
msgstr "Stai modificando il profilo di %(username)s"
@@ -611,7 +686,7 @@ msgstr "File taggato 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/stl.html:136
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
msgstr "Scarica"
@@ -634,7 +709,7 @@ msgid ""
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>!"
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:56
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:61
msgid "Original file"
msgstr "File originario"
@@ -646,8 +721,8 @@ msgstr "File WebM (codec Vorbis)"
#: 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:67
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
+#: 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 ""
@@ -692,21 +767,21 @@ msgstr ""
msgid "Object Height"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
msgid ""
-"Sorry, this video will not work because \n"
-"\t your web browser does not support HTML5 \n"
-"\t video."
-msgstr "Spiacente ma è impossibile visualizzare questo video perché\n\t il tuo browser web non supporta l'HTML5 \n\t video."
+"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:43
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:47
msgid ""
"You can get a modern web browser that \n"
-"\t can play this video at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
-msgstr "Puoi scaricare un browser web moderno,\n\t in grado di visualizzare questo video, qui <a href=\"http://getfirefox.com\">\n\t http://getfirefox.com</a>!"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:69
msgid "WebM file (640p; VP8/Vorbis)"
msgstr "File WebM (640p; VP8/Vorbis)"
@@ -714,12 +789,6 @@ msgstr "File WebM (640p; VP8/Vorbis)"
msgid "Add a collection"
msgstr ""
-#: mediagoblin/templates/mediagoblin/submit/collection.html:30
-#: mediagoblin/templates/mediagoblin/submit/start.html:34
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-msgid "Add"
-msgstr "Aggiungi"
-
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
msgid "Add your media"
@@ -736,12 +805,12 @@ 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:87
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
msgid "Edit"
msgstr "Modifica"
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:91
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
msgid "Delete"
msgstr "Elimina"
@@ -751,11 +820,6 @@ msgstr "Elimina"
msgid "Really delete %(title)s?"
msgstr "Vuoi davvero eliminare %(title)s?"
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:47
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Delete permanently"
-msgstr "Elimina definitivamente"
-
#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:31
#, python-format
msgid "Really remove %(media_title)s from %(collection_title)s?"
@@ -765,6 +829,16 @@ msgstr ""
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 ""
@@ -777,56 +851,53 @@ msgstr "Ciao %(username)s,\n%(comment_author)s ha commentato il tuo post (%(comm
msgid "%(username)s's media"
msgstr "Files multimediali di %(username)s"
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:37
+#: 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 "Files multimediali di <a href=\"%(user_url)s\">%(username)s</a>"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
#, python-format
msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
msgstr "â– Stai guardando i files multimediali di <a href=\"%(user_url)s\">%(username)s</a>"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:102
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:94
msgid "Add a comment"
msgstr "Aggiungi un commento"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:109
-msgid ""
-"You can use <a "
-"href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> for"
-" formatting."
-msgstr "Puoi usare il <a href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> per la formattazione."
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:113
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:102
msgid "Add this comment"
msgstr "Aggiungi questo commento"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:123
msgid "at"
msgstr "a"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:152
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:144
#, python-format
msgid ""
"<h3>Added on</h3>\n"
" <p>%(date)s</p>"
msgstr "<h3>Aggiunto il</h3>\n <p>%(date)s</p>"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:202
-msgid "Add media to collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
#, python-format
-msgid "Add %(title)s to collection"
+msgid "Add “%(media_title)s†to a collection"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:51
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
msgstr ""
@@ -888,27 +959,31 @@ msgstr "Se sei quella persona ma hai perso l'email di verifica, puoi <a href=\"%
msgid "Here's a spot to tell others about yourself."
msgstr "Ecco un posto dove raccontare agli altri di te."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:101
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:100
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:117
msgid "Edit profile"
msgstr "Modifica profilo"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:105
msgid "This user hasn't filled in their profile (yet)."
msgstr "Questo utente non ha (ancora) compilato il proprio profilo."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:124
+msgid "Browse collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:137
#, python-format
msgid "View all of %(username)s's media"
msgstr "Visualizza tutti i files multimediali di %(username)s"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:145
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:150
msgid ""
"This is where your media will appear, but you don't seem to have added "
"anything yet."
msgstr "Qui è dove appariranno i tuoi files multimediali, ma sembra che tu non abbia ancora aggiunto niente."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:162
#: 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..."
@@ -918,28 +993,24 @@ msgstr "Sembra che non ci sia ancora nessun file multimediale qui..."
msgid "(remove)"
msgstr ""
-#: mediagoblin/templates/mediagoblin/utils/collections.html:20
-#, python-format
-msgid "In collections (%(collected)s)"
+#: 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 "feed icon"
#: 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/geolocation_map.html:25
-msgid "Location"
-msgstr "Posizione"
-
-#: mediagoblin/templates/mediagoblin/utils/geolocation_map.html:53
-#, python-format
-msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-msgstr "Visualizza su <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
msgstr "Tutti i diritti riservati"
@@ -970,49 +1041,64 @@ msgstr "più vecchio"
msgid "Tagged with"
msgstr "Taggato con"
-#: mediagoblin/tools/exif.py:78
+#: mediagoblin/tools/exif.py:80
msgid "Could not read the image file."
msgstr "Impossibile leggere il file immagine."
-#: mediagoblin/tools/response.py:30
+#: mediagoblin/tools/response.py:35
msgid "Oops!"
msgstr "Oops!"
-#: mediagoblin/tools/response.py:31
+#: mediagoblin/tools/response.py:36
msgid "An error occured"
msgstr ""
-#: mediagoblin/tools/response.py:46
+#: mediagoblin/tools/response.py:51
msgid "Operation not allowed"
msgstr ""
-#: mediagoblin/tools/response.py:47
+#: mediagoblin/tools/response.py:52
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:55
+#: mediagoblin/tools/response.py:60
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/user_pages/forms.py:28
+#: 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\">Markdown</a> for"
+" formatting."
+msgstr "Puoi usare il <a href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> per la formattazione."
+
+#: mediagoblin/user_pages/forms.py:31
msgid "I am sure I want to delete this"
msgstr "Sono sicuro di volerlo eliminare"
-#: mediagoblin/user_pages/forms.py:32
+#: 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:35
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:40
msgid "-- Select --"
msgstr ""
-#: mediagoblin/user_pages/forms.py:37
+#: mediagoblin/user_pages/forms.py:42
msgid "Include a note"
msgstr ""
@@ -1020,74 +1106,69 @@ msgstr ""
msgid "commented on your post"
msgstr "ha commentato il tuo post"
-#: mediagoblin/user_pages/views.py:156
+#: mediagoblin/user_pages/views.py:166
msgid "Oops, your comment was empty."
msgstr "Oops, il tuo commento era vuoto."
-#: mediagoblin/user_pages/views.py:162
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
msgstr "Il tuo commento è stato aggiunto!"
-#: mediagoblin/user_pages/views.py:230
+#: mediagoblin/user_pages/views.py:197
+msgid "Please check your entries and try again."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:237
msgid "You have to select or add a collection"
msgstr ""
-#: mediagoblin/user_pages/views.py:238
+#: mediagoblin/user_pages/views.py:248
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:253
+#: mediagoblin/user_pages/views.py:264
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:261
-msgid "Please check your entries and try again."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:292
-msgid ""
-"Some of the files with this entry seem to be missing. Deleting anyway."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:297
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
msgstr "Hai eliminato il file."
-#: mediagoblin/user_pages/views.py:304
+#: mediagoblin/user_pages/views.py:293
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."
-#: mediagoblin/user_pages/views.py:312
+#: mediagoblin/user_pages/views.py:301
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:370
+#: mediagoblin/user_pages/views.py:375
msgid "You deleted the item from the collection."
msgstr ""
-#: mediagoblin/user_pages/views.py:374
+#: mediagoblin/user_pages/views.py:379
msgid "The item was not removed because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/user_pages/views.py:384
+#: mediagoblin/user_pages/views.py:389
msgid ""
"You are about to delete an item from another user's collection. Proceed with"
" caution."
msgstr ""
-#: mediagoblin/user_pages/views.py:417
+#: mediagoblin/user_pages/views.py:422
#, python-format
msgid "You deleted the collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:424
+#: mediagoblin/user_pages/views.py:429
msgid ""
"The collection was not deleted because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/user_pages/views.py:434
+#: mediagoblin/user_pages/views.py:439
msgid ""
"You are about to delete another user's collection. Proceed with caution."
msgstr ""
diff --git a/mediagoblin/i18n/ja/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/ja/LC_MESSAGES/mediagoblin.mo
index 1ebdba16..1344c9bd 100644
--- a/mediagoblin/i18n/ja/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/ja/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/ja/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/ja/LC_MESSAGES/mediagoblin.po
index abbf5b26..008a6d27 100644
--- a/mediagoblin/i18n/ja/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/ja/LC_MESSAGES/mediagoblin.po
@@ -1,15 +1,16 @@
# Translations template for PROJECT.
-# Copyright (C) 2012 ORGANIZATION
+# Copyright (C) 2013 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
# <averym@gmail.com>, 2011.
+# <parlegon@gmail.com>, 2013.
msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://issues.mediagoblin.org/\n"
-"POT-Creation-Date: 2012-12-20 09:18-0600\n"
-"PO-Revision-Date: 2012-12-20 15:14+0000\n"
+"POT-Creation-Date: 2013-03-04 18:04-0600\n"
+"PO-Revision-Date: 2013-03-05 00:04+0000\n"
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
@@ -19,82 +20,96 @@ msgstr ""
"Language: ja\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:41
+#: mediagoblin/auth/forms.py:28
+msgid "Invalid User name or email address."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:29
+msgid "This field does not take email addresses."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:30
+msgid "This field requires an email address."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:52 mediagoblin/auth/forms.py:67
msgid "Username"
msgstr "ユーザãƒãƒ¼ãƒ "
-#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:45
+#: mediagoblin/auth/forms.py:56 mediagoblin/auth/forms.py:71
msgid "Password"
msgstr "パスワード"
-#: mediagoblin/auth/forms.py:34
+#: mediagoblin/auth/forms.py:60
msgid "Email address"
msgstr "メールアドレス"
-#: mediagoblin/auth/forms.py:51
+#: mediagoblin/auth/forms.py:78
msgid "Username or email"
msgstr ""
-#: mediagoblin/auth/forms.py:58
-msgid "Incorrect input"
-msgstr ""
-
-#: mediagoblin/auth/views.py:55
+#: mediagoblin/auth/views.py:54
msgid "Sorry, registration is disabled on this instance."
msgstr "申ã—訳ã‚りã¾ã›ã‚“ãŒã€ã“ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã§ç™»éŒ²ã¯ç„¡åйã«ãªã£ã¦ã„ã¾ã™ã€‚"
-#: mediagoblin/auth/views.py:75
+#: mediagoblin/auth/views.py:68
msgid "Sorry, a user with that name already exists."
msgstr "申ã—訳ã‚りã¾ã›ã‚“ãŒã€ãã®åå‰ã‚’æŒã¤ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒã™ã§ã«å­˜åœ¨ã—ã¦ã„ã¾ã™ã€‚"
-#: mediagoblin/auth/views.py:79
+#: mediagoblin/auth/views.py:72
msgid "Sorry, a user with that email address already exists."
msgstr ""
-#: mediagoblin/auth/views.py:182
+#: mediagoblin/auth/views.py:174
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
msgstr "メアドãŒç¢ºèªã•れã¦ã„ã¾ã™ã€‚ã“れã§ã€ãƒ­ã‚°ã‚¤ãƒ³ã—ã¦ãƒ—ロファイルを編集ã—ã€ç”»åƒã‚’æå‡ºã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ï¼"
-#: mediagoblin/auth/views.py:188
+#: mediagoblin/auth/views.py:180
msgid "The verification key or user id is incorrect"
msgstr "検証キーã¾ãŸã¯ãƒ¦ãƒ¼ã‚¶ãƒ¼IDãŒé–“é•ã£ã¦ã„ã¾ã™"
-#: mediagoblin/auth/views.py:206
+#: mediagoblin/auth/views.py:198
msgid "You must be logged in so we know who to send the email to!"
msgstr ""
-#: mediagoblin/auth/views.py:214
+#: mediagoblin/auth/views.py:206
msgid "You've already verified your email address!"
msgstr ""
-#: mediagoblin/auth/views.py:227
+#: mediagoblin/auth/views.py:219
msgid "Resent your verification email."
msgstr "検証メールをå†é€ã—ã¾ã—ãŸã€‚"
-#: mediagoblin/auth/views.py:263
+#: mediagoblin/auth/views.py:250
+msgid ""
+"If that email address (case sensitive!) is registered an email has been sent"
+" with instructions on how to change your password."
+msgstr ""
+
+#: mediagoblin/auth/views.py:261
+msgid "Couldn't find someone with that username."
+msgstr ""
+
+#: mediagoblin/auth/views.py:264
msgid ""
"An email has been sent with instructions on how to change your password."
msgstr ""
-#: mediagoblin/auth/views.py:273
+#: mediagoblin/auth/views.py:271
msgid ""
"Could not send password recovery email as your username is inactive or your "
"account's email address has not been verified."
msgstr ""
-#: mediagoblin/auth/views.py:285
-msgid "Couldn't find someone with that username or email."
-msgstr ""
-
-#: mediagoblin/auth/views.py:333
+#: mediagoblin/auth/views.py:328
msgid "You can now log in using your new password."
msgstr ""
-#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:82
+#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:93
#: mediagoblin/submit/forms.py:28 mediagoblin/submit/forms.py:47
-#: mediagoblin/user_pages/forms.py:40
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr "タイトル"
@@ -103,8 +118,8 @@ msgid "Description of this work"
msgstr ""
#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:52
-#: mediagoblin/edit/forms.py:86 mediagoblin/submit/forms.py:32
-#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:44
+#: mediagoblin/edit/forms.py:97 mediagoblin/submit/forms.py:32
+#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:49
msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
@@ -119,11 +134,11 @@ msgstr "ã‚¿ã‚°"
msgid "Separate tags by commas."
msgstr ""
-#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:90
+#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:101
msgid "Slug"
msgstr "スラグ"
-#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:91
+#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:102
msgid "The slug can't be empty"
msgstr "スラグã¯å¿…è¦ã§ã™ã€‚"
@@ -162,65 +177,81 @@ msgstr ""
msgid "New password"
msgstr ""
-#: mediagoblin/edit/forms.py:71
+#: mediagoblin/edit/forms.py:74
+msgid "License preference"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:80
+msgid "This will be your default license on upload forms."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:82
msgid "Email me when others comment on my media"
msgstr ""
-#: mediagoblin/edit/forms.py:83
+#: mediagoblin/edit/forms.py:94
msgid "The title can't be empty"
msgstr ""
-#: mediagoblin/edit/forms.py:85 mediagoblin/submit/forms.py:50
-#: mediagoblin/user_pages/forms.py:43
+#: mediagoblin/edit/forms.py:96 mediagoblin/submit/forms.py:50
+#: mediagoblin/user_pages/forms.py:48
msgid "Description of this collection"
msgstr ""
-#: mediagoblin/edit/forms.py:92
+#: mediagoblin/edit/forms.py:103
msgid ""
"The title part of this collection's address. You usually don't need to "
"change this."
msgstr ""
-#: mediagoblin/edit/views.py:65
+#: mediagoblin/edit/views.py:66
msgid "An entry with that slug already exists for this user."
msgstr "ãã®ã‚¹ãƒ©ã‚°ã‚’æŒã¤ã‚¨ãƒ³ãƒˆãƒªã¯ã€ã“ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¯æ—¢ã«å­˜åœ¨ã—ã¾ã™ã€‚"
-#: mediagoblin/edit/views.py:86
+#: mediagoblin/edit/views.py:85
msgid "You are editing another user's media. Proceed with caution."
msgstr "ã‚ãªãŸã¯ã€ä»–ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ãƒ¡ãƒ‡ã‚£ã‚¢ã‚’編集ã—ã¦ã„ã¾ã™ã€‚ã”æ³¨æ„ãã ã•ã„。"
-#: mediagoblin/edit/views.py:156
+#: mediagoblin/edit/views.py:155
#, python-format
msgid "You added the attachment %s!"
msgstr ""
-#: mediagoblin/edit/views.py:181
+#: mediagoblin/edit/views.py:182
+msgid "You can only edit your own profile."
+msgstr ""
+
+#: mediagoblin/edit/views.py:188
msgid "You are editing a user's profile. Proceed with caution."
msgstr "ã‚ãªãŸã¯ã€ä»–ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ãƒ—ロファイルを編集ã—ã¦ã„ã¾ã™ã€‚ã”æ³¨æ„ãã ã•ã„。"
-#: mediagoblin/edit/views.py:197
+#: mediagoblin/edit/views.py:204
msgid "Profile changes saved"
msgstr ""
-#: mediagoblin/edit/views.py:226 mediagoblin/edit/views.py:246
+#: mediagoblin/edit/views.py:241
+msgid "Wrong password"
+msgstr ""
+
+#: mediagoblin/edit/views.py:252
msgid "Account settings saved"
msgstr ""
-#: mediagoblin/edit/views.py:251
-msgid "Wrong password"
+#: mediagoblin/edit/views.py:286
+msgid "You need to confirm the deletion of your account."
msgstr ""
-#: mediagoblin/edit/views.py:287 mediagoblin/submit/views.py:211
-#: mediagoblin/user_pages/views.py:210
+#: mediagoblin/edit/views.py:322 mediagoblin/submit/views.py:142
+#: mediagoblin/user_pages/views.py:214
#, python-format
msgid "You already have a collection called \"%s\"!"
msgstr ""
-#: mediagoblin/edit/views.py:291
+#: mediagoblin/edit/views.py:326
msgid "A collection with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:308
+#: mediagoblin/edit/views.py:343
msgid "You are editing another user's collection. Proceed with caution."
msgstr ""
@@ -236,54 +267,62 @@ msgstr ""
msgid "However, old link directory symlink found; removed.\n"
msgstr ""
-#: mediagoblin/media_types/__init__.py:60
-#: mediagoblin/media_types/__init__.py:101
+#: 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:61
+#: mediagoblin/media_types/__init__.py:102
msgid "Sorry, I don't support that file type :("
msgstr ""
-#: mediagoblin/media_types/video/processing.py:35
+#: mediagoblin/media_types/video/processing.py:36
msgid "Video transcoding failed"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:26
-msgid "Client ID"
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
+msgid "Location"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:28
-msgid "Next URL"
+#: 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/oauth/forms.py:30
+#: mediagoblin/plugins/oauth/forms.py:29
msgid "Allow"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:31
+#: mediagoblin/plugins/oauth/forms.py:30
msgid "Deny"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:35
+#: mediagoblin/plugins/oauth/forms.py:34
msgid "Name"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:36
+#: mediagoblin/plugins/oauth/forms.py:35
msgid "The name of the OAuth client"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:37
+#: mediagoblin/plugins/oauth/forms.py:36
msgid "Description"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:39
+#: 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:41
+#: mediagoblin/plugins/oauth/forms.py:40
msgid "Type"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:46
+#: 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"
@@ -293,25 +332,40 @@ msgid ""
" JavaScript client)."
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:53
+#: mediagoblin/plugins/oauth/forms.py:52
msgid "Redirect URI"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:55
+#: 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:67
+#: mediagoblin/plugins/oauth/forms.py:66
msgid "This field is required for public clients"
msgstr ""
-#: mediagoblin/plugins/oauth/views.py:60
+#: mediagoblin/plugins/oauth/views.py:59
msgid "The client {0} has been registered!"
msgstr ""
-#: mediagoblin/processing/__init__.py:138
+#: 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/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr "追加"
+
+#: mediagoblin/processing/__init__.py:172
msgid "Invalid file given for media type."
msgstr ""
@@ -319,56 +373,74 @@ msgstr ""
msgid "File"
msgstr "ファイル"
-#: mediagoblin/submit/views.py:57
+#: mediagoblin/submit/views.py:51
msgid "You must provide a file."
msgstr "ファイルをæä¾›ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚"
-#: mediagoblin/submit/views.py:164
+#: mediagoblin/submit/views.py:97
msgid "Woohoo! Submitted!"
msgstr "投稿終了ï¼"
-#: mediagoblin/submit/views.py:215
+#: mediagoblin/submit/views.py:146
#, python-format
msgid "Collection \"%s\" added!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:48
-msgid "MediaGoblin logo"
+#: mediagoblin/templates/mediagoblin/base.html:64
+msgid "Verify your email!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "log out"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:54
+#: mediagoblin/templates/mediagoblin/base.html:70
+#: mediagoblin/templates/mediagoblin/auth/login.html:28
+#: mediagoblin/templates/mediagoblin/auth/login.html:36
+#: mediagoblin/templates/mediagoblin/auth/login.html:54
+msgid "Log in"
+msgstr "ログイン"
+
+#: mediagoblin/templates/mediagoblin/base.html:79
#, python-format
msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:60
-msgid "log out"
+#: mediagoblin/templates/mediagoblin/base.html:86
+msgid "Change account settings"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:62
-#: mediagoblin/templates/mediagoblin/root.html:28
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:151
-msgid "Add media"
+#: mediagoblin/templates/mediagoblin/base.html:90
+#: mediagoblin/templates/mediagoblin/base.html:105
+#: mediagoblin/templates/mediagoblin/admin/panel.html:21
+#: mediagoblin/templates/mediagoblin/admin/panel.html:26
+#: 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:68
-msgid "Verify your email!"
+#: mediagoblin/templates/mediagoblin/base.html:93
+msgid "Log out"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:73
-#: mediagoblin/templates/mediagoblin/auth/login.html:28
-#: mediagoblin/templates/mediagoblin/auth/login.html:36
-#: mediagoblin/templates/mediagoblin/auth/login.html:54
-msgid "Log in"
-msgstr "ログイン"
+#: mediagoblin/templates/mediagoblin/base.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:156
+msgid "Add media"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:87
+#: mediagoblin/templates/mediagoblin/base.html:99
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
+msgid "Create new collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:122
+#, python-format
msgid ""
-"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
-"href=\"http://gnu.org/\">GNU</a> project."
+"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/base.html:90
+#: mediagoblin/templates/mediagoblin/base.html:125
#, python-format
msgid ""
"Released under the <a "
@@ -380,52 +452,31 @@ msgstr ""
msgid "Image of goblin stressing out"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:25
-msgid "Actions"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/root.html:31
-msgid "Create new collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:34
-msgid "Change account settings"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:38
-#: mediagoblin/templates/mediagoblin/root.html:44
-#: mediagoblin/templates/mediagoblin/admin/panel.html:21
-#: mediagoblin/templates/mediagoblin/admin/panel.html:26
-#: 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/root.html:51
msgid "Explore"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:53
+#: mediagoblin/templates/mediagoblin/root.html:33
msgid "Hi there, welcome to this MediaGoblin site!"
-msgstr ""
+msgstr "ã“ã‚“ã«ã¡ã¯ã€ã“ã®MediaGoblinサイトã¸ã‚ˆã†ã“ãï¼"
-#: mediagoblin/templates/mediagoblin/root.html:55
+#: mediagoblin/templates/mediagoblin/root.html:35
msgid ""
"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
"extraordinarily great piece of media hosting software."
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:56
+#: mediagoblin/templates/mediagoblin/root.html:36
msgid ""
"To add your own media, place comments, and more, you can log in with your "
"MediaGoblin account."
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:58
+#: mediagoblin/templates/mediagoblin/root.html:38
msgid "Don't have one yet? It's easy!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:59
+#: mediagoblin/templates/mediagoblin/root.html:39
#, python-format
msgid ""
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Create an account at this site</a>\n"
@@ -433,7 +484,7 @@ msgid ""
" <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:67
+#: mediagoblin/templates/mediagoblin/root.html:47
msgid "Most recent media"
msgstr ""
@@ -517,7 +568,7 @@ msgstr "ã“ã“ã§ä½œæˆï¼"
#: mediagoblin/templates/mediagoblin/auth/login.html:51
msgid "Forgot your password?"
-msgstr ""
+msgstr "パスワードを忘れã¾ã—ãŸã‹ï¼Ÿ"
#: mediagoblin/templates/mediagoblin/auth/register.html:28
#: mediagoblin/templates/mediagoblin/auth/register.html:36
@@ -539,41 +590,62 @@ msgid ""
"%(verification_url)s"
msgstr "%(username)s様ã¸\n\nGNU MediaGoblinアカウントを検証ã«ã™ã‚‹ã«ã¯ã€ã“ã®URLã‚’é–‹ã„ã¦ãã ã•ã„。\n\n%(verification_url)s"
+#: 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:43
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:159
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:175
msgid "Attachments"
msgstr ""
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
msgid "Add attachment"
msgstr ""
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:60
+#: 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:81
+#: 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:62
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:51
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
msgid "Save changes"
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:47
+#: 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
@@ -586,13 +658,17 @@ msgstr "%(media_title)sを編集中"
msgid "Changing %(username)s's account settings"
msgstr ""
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
+msgid "Delete my account"
+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:35
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
#, python-format
msgid "Editing %(username)s's profile"
msgstr "%(username)sã•ã‚“ã®ãƒ—ロフィールを編集中"
@@ -608,9 +684,9 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
-msgstr ""
+msgstr "ダウンロード"
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
msgid "Original"
@@ -631,7 +707,7 @@ msgid ""
msgstr ""
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:56
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:61
msgid "Original file"
msgstr ""
@@ -643,8 +719,8 @@ msgstr ""
#: 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:67
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
+#: 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 ""
@@ -689,21 +765,21 @@ msgstr ""
msgid "Object Height"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
msgid ""
-"Sorry, this video will not work because \n"
-"\t your web browser does not support HTML5 \n"
-"\t video."
+"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:43
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:47
msgid ""
"You can get a modern web browser that \n"
-"\t can play this video at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:69
msgid "WebM file (640p; VP8/Vorbis)"
msgstr ""
@@ -711,12 +787,6 @@ msgstr ""
msgid "Add a collection"
msgstr ""
-#: mediagoblin/templates/mediagoblin/submit/collection.html:30
-#: mediagoblin/templates/mediagoblin/submit/start.html:34
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-msgid "Add"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
msgid "Add your media"
@@ -733,14 +803,14 @@ 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:87
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
msgid "Edit"
-msgstr ""
+msgstr "編集"
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:91
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
msgid "Delete"
-msgstr ""
+msgstr "削除"
#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:30
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
@@ -748,11 +818,6 @@ msgstr ""
msgid "Really delete %(title)s?"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:47
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Delete permanently"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:31
#, python-format
msgid "Really remove %(media_title)s from %(collection_title)s?"
@@ -762,6 +827,16 @@ msgstr ""
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 ""
@@ -774,56 +849,53 @@ msgstr ""
msgid "%(username)s's media"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:37
+#: 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:46
+#: 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:102
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:94
msgid "Add a comment"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:109
-msgid ""
-"You can use <a "
-"href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> for"
-" formatting."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:113
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:102
msgid "Add this comment"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:123
msgid "at"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:152
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:144
#, python-format
msgid ""
"<h3>Added on</h3>\n"
" <p>%(date)s</p>"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:202
-msgid "Add media to collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
#, python-format
-msgid "Add %(title)s to collection"
+msgid "Add “%(media_title)s†to a collection"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:51
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
msgstr ""
@@ -885,27 +957,31 @@ msgstr "ã‚ãªãŸã®ç¢ºèªãƒ¡ãƒ¼ãƒ«ã‚’紛失ã—ãŸå ´åˆã€<a href=\"%(login_url
msgid "Here's a spot to tell others about yourself."
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:101
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:100
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:117
msgid "Edit profile"
msgstr "プロフィールを編集"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:105
msgid "This user hasn't filled in their profile (yet)."
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:124
+msgid "Browse collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:137
#, python-format
msgid "View all of %(username)s's media"
msgstr "%(username)sã•ã‚“ã®ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã‚’ã™ã¹ã¦è¦‹ã‚‹"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:145
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:150
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:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:162
#: 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..."
@@ -915,28 +991,24 @@ msgstr ""
msgid "(remove)"
msgstr ""
-#: mediagoblin/templates/mediagoblin/utils/collections.html:20
-#, python-format
-msgid "In collections (%(collected)s)"
+#: 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/geolocation_map.html:25
-msgid "Location"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/utils/geolocation_map.html:53
-#, python-format
-msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
msgstr ""
@@ -967,49 +1039,64 @@ msgstr ""
msgid "Tagged with"
msgstr ""
-#: mediagoblin/tools/exif.py:78
+#: mediagoblin/tools/exif.py:80
msgid "Could not read the image file."
msgstr ""
-#: mediagoblin/tools/response.py:30
+#: mediagoblin/tools/response.py:35
msgid "Oops!"
msgstr ""
-#: mediagoblin/tools/response.py:31
+#: mediagoblin/tools/response.py:36
msgid "An error occured"
msgstr ""
-#: mediagoblin/tools/response.py:46
+#: mediagoblin/tools/response.py:51
msgid "Operation not allowed"
msgstr ""
-#: mediagoblin/tools/response.py:47
+#: mediagoblin/tools/response.py:52
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:55
+#: mediagoblin/tools/response.py:60
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/user_pages/forms.py:28
+#: 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\">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:32
+#: 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:35
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:40
msgid "-- Select --"
msgstr ""
-#: mediagoblin/user_pages/forms.py:37
+#: mediagoblin/user_pages/forms.py:42
msgid "Include a note"
msgstr ""
@@ -1017,74 +1104,69 @@ msgstr ""
msgid "commented on your post"
msgstr ""
-#: mediagoblin/user_pages/views.py:156
+#: mediagoblin/user_pages/views.py:166
msgid "Oops, your comment was empty."
msgstr ""
-#: mediagoblin/user_pages/views.py:162
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
msgstr ""
-#: mediagoblin/user_pages/views.py:230
+#: mediagoblin/user_pages/views.py:197
+msgid "Please check your entries and try again."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:237
msgid "You have to select or add a collection"
msgstr ""
-#: mediagoblin/user_pages/views.py:238
+#: mediagoblin/user_pages/views.py:248
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:253
+#: mediagoblin/user_pages/views.py:264
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:261
-msgid "Please check your entries and try again."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:292
-msgid ""
-"Some of the files with this entry seem to be missing. Deleting anyway."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:297
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
msgstr ""
-#: mediagoblin/user_pages/views.py:304
+#: mediagoblin/user_pages/views.py:293
msgid "The media was not deleted because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/user_pages/views.py:312
+#: mediagoblin/user_pages/views.py:301
msgid "You are about to delete another user's media. Proceed with caution."
msgstr ""
-#: mediagoblin/user_pages/views.py:370
+#: mediagoblin/user_pages/views.py:375
msgid "You deleted the item from the collection."
msgstr ""
-#: mediagoblin/user_pages/views.py:374
+#: mediagoblin/user_pages/views.py:379
msgid "The item was not removed because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/user_pages/views.py:384
+#: mediagoblin/user_pages/views.py:389
msgid ""
"You are about to delete an item from another user's collection. Proceed with"
" caution."
msgstr ""
-#: mediagoblin/user_pages/views.py:417
+#: mediagoblin/user_pages/views.py:422
#, python-format
msgid "You deleted the collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:424
+#: mediagoblin/user_pages/views.py:429
msgid ""
"The collection was not deleted because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/user_pages/views.py:434
+#: mediagoblin/user_pages/views.py:439
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
index e7602e15..69bf72bc 100644
--- a/mediagoblin/i18n/ko_KR/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/ko_KR/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/ko_KR/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/ko_KR/LC_MESSAGES/mediagoblin.po
index 6a35c0e0..ac87c90f 100644
--- a/mediagoblin/i18n/ko_KR/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/ko_KR/LC_MESSAGES/mediagoblin.po
@@ -1,5 +1,5 @@
# Translations template for PROJECT.
-# Copyright (C) 2012 ORGANIZATION
+# Copyright (C) 2013 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: http://issues.mediagoblin.org/\n"
-"POT-Creation-Date: 2012-12-20 09:18-0600\n"
-"PO-Revision-Date: 2012-12-20 15:14+0000\n"
+"POT-Creation-Date: 2013-03-04 18:04-0600\n"
+"PO-Revision-Date: 2013-03-05 00:04+0000\n"
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
@@ -19,82 +19,96 @@ msgstr ""
"Language: ko_KR\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:41
+#: mediagoblin/auth/forms.py:28
+msgid "Invalid User name or email address."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:29
+msgid "This field does not take email addresses."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:30
+msgid "This field requires an email address."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:52 mediagoblin/auth/forms.py:67
msgid "Username"
msgstr "ì‚¬ìš©ìž ì´ë¦„"
-#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:45
+#: mediagoblin/auth/forms.py:56 mediagoblin/auth/forms.py:71
msgid "Password"
msgstr "비밀번호"
-#: mediagoblin/auth/forms.py:34
+#: mediagoblin/auth/forms.py:60
msgid "Email address"
msgstr "email 주소"
-#: mediagoblin/auth/forms.py:51
+#: mediagoblin/auth/forms.py:78
msgid "Username or email"
msgstr "ì‚¬ìš©ìž ì´ë¦„ ë˜ëŠ” email"
-#: mediagoblin/auth/forms.py:58
-msgid "Incorrect input"
-msgstr "ìž˜ëª»ëœ ìž…ë ¥ 입니다."
-
-#: mediagoblin/auth/views.py:55
+#: mediagoblin/auth/views.py:54
msgid "Sorry, registration is disabled on this instance."
msgstr "죄송합니다. ì§€ê¸ˆì€ ê°€ìž… 하실 수 없습니다."
-#: mediagoblin/auth/views.py:75
+#: mediagoblin/auth/views.py:68
msgid "Sorry, a user with that name already exists."
msgstr "죄송합니다. 해당 ì‚¬ìš©ìž ì´ë¦„ì´ ì´ë¯¸ 존재 합니다."
-#: mediagoblin/auth/views.py:79
+#: mediagoblin/auth/views.py:72
msgid "Sorry, a user with that email address already exists."
msgstr "죄송합니다. 사용ìžì™€ 해당 ì´ë©”ì¼ì€ ì´ë¯¸ 등ë¡ë˜ì–´ 있습니다."
-#: mediagoblin/auth/views.py:182
+#: mediagoblin/auth/views.py:174
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
msgstr "해당 email 주소가 ì´ë¯¸ ì¸ì¦ ë˜ì–´ 있습니다. 지금 로그ì¸í•˜ì‹œê³  계정 정보를 수정하고 ì‚¬ì§„ì„ ì „ì†¡í•´ 보세요!"
-#: mediagoblin/auth/views.py:188
+#: mediagoblin/auth/views.py:180
msgid "The verification key or user id is incorrect"
msgstr "ì¸ì¦ 키 ë˜ëŠ” ì‚¬ìš©ìž IDê°€ 올바르지 않습니다."
-#: mediagoblin/auth/views.py:206
+#: mediagoblin/auth/views.py:198
msgid "You must be logged in so we know who to send the email to!"
msgstr "로그ì¸ì„ 하셔야 고블린ì—서 ë©”ì¼ì„ 보낼 수 있습니다!"
-#: mediagoblin/auth/views.py:214
+#: mediagoblin/auth/views.py:206
msgid "You've already verified your email address!"
msgstr "ì´ë¯¸ ì¸ì¦ë°›ì€ email 주소를 가지고 있습니다!"
-#: mediagoblin/auth/views.py:227
+#: mediagoblin/auth/views.py:219
msgid "Resent your verification email."
msgstr "ì¸ì¦ ë©”ì¼ì„ 다시 ë³´ë‚´ 주세요."
-#: mediagoblin/auth/views.py:263
+#: mediagoblin/auth/views.py:250
+msgid ""
+"If that email address (case sensitive!) is registered an email has been sent"
+" with instructions on how to change your password."
+msgstr ""
+
+#: mediagoblin/auth/views.py:261
+msgid "Couldn't find someone with that username."
+msgstr ""
+
+#: mediagoblin/auth/views.py:264
msgid ""
"An email has been sent with instructions on how to change your password."
msgstr "비밀번호를 변경하는 ë°©ë²•ì— ëŒ€í•œ 설명서가 ë©”ì¼ë¡œ 전송 ë˜ì—ˆìŠµë‹ˆë‹¤."
-#: mediagoblin/auth/views.py:273
+#: mediagoblin/auth/views.py:271
msgid ""
"Could not send password recovery email as your username is inactive or your "
"account's email address has not been verified."
msgstr "사용ìžì˜ ì´ë¦„ì´ ì¡´ìž¬í•˜ì§€ 않거나, 사용ìžì˜ email 주소가 ì¸ì¦ë˜ì§€ 않아 비밀번호 복구 ë©”ì¼ì„ 보낼 수 없습니다."
-#: mediagoblin/auth/views.py:285
-msgid "Couldn't find someone with that username or email."
-msgstr "ì‚¬ìš©ìž ì´ë¦„ ë˜ëŠ” email로 ëœ ì‚¬ìš©ìžë¥¼ ì°¾ì„ ìˆ˜ 없습니다."
-
-#: mediagoblin/auth/views.py:333
+#: mediagoblin/auth/views.py:328
msgid "You can now log in using your new password."
msgstr "ì´ì œ 새로운 비밀번호로 ë¡œê·¸ì¸ í•˜ì‹¤ 수 있습니다."
-#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:82
+#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:93
#: mediagoblin/submit/forms.py:28 mediagoblin/submit/forms.py:47
-#: mediagoblin/user_pages/forms.py:40
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr "제목"
@@ -103,8 +117,8 @@ msgid "Description of this work"
msgstr "ì´ ìž‘ì—…ì— ëŒ€í•œ 설명"
#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:52
-#: mediagoblin/edit/forms.py:86 mediagoblin/submit/forms.py:32
-#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:44
+#: mediagoblin/edit/forms.py:97 mediagoblin/submit/forms.py:32
+#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:49
msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
@@ -119,11 +133,11 @@ msgstr "태그"
msgid "Separate tags by commas."
msgstr "태그는 , 로 구분 ë©ë‹ˆë‹¤."
-#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:90
+#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:101
msgid "Slug"
msgstr "'슬러그'"
-#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:91
+#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:102
msgid "The slug can't be empty"
msgstr "'슬러그'는 ê³µë°±ì¼ ìˆ˜ 없습니다."
@@ -162,65 +176,81 @@ msgstr "계정 확ì¸ì„ 위해, ì´ì „ 비밀 번호를 입력해 주세요."
msgid "New password"
msgstr "새로운 비밀번호"
-#: mediagoblin/edit/forms.py:71
+#: mediagoblin/edit/forms.py:74
+msgid "License preference"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:80
+msgid "This will be your default license on upload forms."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:82
msgid "Email me when others comment on my media"
msgstr "ì œ ë¯¸ë””ì–´ì— ëŒ€í•œ 컨í…ì„ ì›í•œë‹¤ë©´, ë©”ì¼ì„ 보내주세요."
-#: mediagoblin/edit/forms.py:83
+#: mediagoblin/edit/forms.py:94
msgid "The title can't be empty"
msgstr "ì œëª©ì€ ê³µë°±ì¼ ìˆ˜ 없습니다."
-#: mediagoblin/edit/forms.py:85 mediagoblin/submit/forms.py:50
-#: mediagoblin/user_pages/forms.py:43
+#: mediagoblin/edit/forms.py:96 mediagoblin/submit/forms.py:50
+#: mediagoblin/user_pages/forms.py:48
msgid "Description of this collection"
msgstr "모ìŒì§‘ì— ëŒ€í•œ 설명"
-#: mediagoblin/edit/forms.py:92
+#: mediagoblin/edit/forms.py:103
msgid ""
"The title part of this collection's address. You usually don't need to "
"change this."
msgstr ""
-#: mediagoblin/edit/views.py:65
+#: mediagoblin/edit/views.py:66
msgid "An entry with that slug already exists for this user."
msgstr "해당 ìœ ì €ì— ëŒ€í•œ '슬러그'ê°€ ì´ë¯¸ 존재합니다."
-#: mediagoblin/edit/views.py:86
+#: mediagoblin/edit/views.py:85
msgid "You are editing another user's media. Proceed with caution."
msgstr "다른 사용ìžì˜ 미디어를 수정하고 있습니다. 조심해서 수정하세요."
-#: mediagoblin/edit/views.py:156
+#: mediagoblin/edit/views.py:155
#, python-format
msgid "You added the attachment %s!"
msgstr ""
-#: mediagoblin/edit/views.py:181
+#: mediagoblin/edit/views.py:182
+msgid "You can only edit your own profile."
+msgstr ""
+
+#: mediagoblin/edit/views.py:188
msgid "You are editing a user's profile. Proceed with caution."
msgstr "사용ìžì˜ 계정 정보를 수정하고 있습니다. 조심해서 수정하세요."
-#: mediagoblin/edit/views.py:197
+#: mediagoblin/edit/views.py:204
msgid "Profile changes saved"
msgstr "계정 ì •ë³´ê°€ 저장 ë˜ì—ˆìŠµë‹ˆë‹¤."
-#: mediagoblin/edit/views.py:226 mediagoblin/edit/views.py:246
+#: mediagoblin/edit/views.py:241
+msgid "Wrong password"
+msgstr "ìž˜ëª»ëœ ë¹„ë°€ë²ˆí˜¸"
+
+#: mediagoblin/edit/views.py:252
msgid "Account settings saved"
msgstr "계정 ì„¤ì •ì´ ì €ìž¥ ë˜ì—ˆìŠµë‹ˆë‹¤."
-#: mediagoblin/edit/views.py:251
-msgid "Wrong password"
-msgstr "ìž˜ëª»ëœ ë¹„ë°€ë²ˆí˜¸"
+#: mediagoblin/edit/views.py:286
+msgid "You need to confirm the deletion of your account."
+msgstr ""
-#: mediagoblin/edit/views.py:287 mediagoblin/submit/views.py:211
-#: mediagoblin/user_pages/views.py:210
+#: mediagoblin/edit/views.py:322 mediagoblin/submit/views.py:142
+#: mediagoblin/user_pages/views.py:214
#, python-format
msgid "You already have a collection called \"%s\"!"
msgstr "\"%s\" 모ìŒì§‘ì„ ì´ë¯¸ 가지고 있습니다!"
-#: mediagoblin/edit/views.py:291
+#: mediagoblin/edit/views.py:326
msgid "A collection with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:308
+#: mediagoblin/edit/views.py:343
msgid "You are editing another user's collection. Proceed with caution."
msgstr "다른 ìœ ì €ì˜ ëª¨ìŒì§‘ì„ ìˆ˜ì • 중 입니다. 주ì˜í•˜ì„¸ìš”."
@@ -236,54 +266,62 @@ msgstr "ì´ í…Œë§ˆë¥¼ 위한 ì—ì…‹ 디렉토리가 없습니다.\n"
msgid "However, old link directory symlink found; removed.\n"
msgstr "그런ë°, ì˜¤ëž˜ëœ ë””ë ‰í† ë¦¬ 심볼릭 ë§í¬ë¥¼ 찾았습니다; 지워졌습니다.\n"
-#: mediagoblin/media_types/__init__.py:60
-#: mediagoblin/media_types/__init__.py:101
+#: 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:61
+#: mediagoblin/media_types/__init__.py:102
msgid "Sorry, I don't support that file type :("
msgstr "죄송합니다. 해당 íƒ€ìž…ì˜ íŒŒì¼ì€ ì§€ì›í•˜ì§€ 않아요 :("
-#: mediagoblin/media_types/video/processing.py:35
+#: mediagoblin/media_types/video/processing.py:36
msgid "Video transcoding failed"
msgstr "비디오 ë³€í™˜ì— ì‹¤íŒ¨ 했습니다."
-#: mediagoblin/plugins/oauth/forms.py:26
-msgid "Client ID"
-msgstr "ì‚¬ìš©ìž ID"
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
+msgid "Location"
+msgstr "장소"
-#: mediagoblin/plugins/oauth/forms.py:28
-msgid "Next URL"
-msgstr "ë‹¤ìŒ URL"
+#: 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/oauth/forms.py:30
+#: mediagoblin/plugins/oauth/forms.py:29
msgid "Allow"
msgstr "허용"
-#: mediagoblin/plugins/oauth/forms.py:31
+#: mediagoblin/plugins/oauth/forms.py:30
msgid "Deny"
msgstr "ê±°ë¶€"
-#: mediagoblin/plugins/oauth/forms.py:35
+#: mediagoblin/plugins/oauth/forms.py:34
msgid "Name"
msgstr "ì´ë¦„"
-#: mediagoblin/plugins/oauth/forms.py:36
+#: mediagoblin/plugins/oauth/forms.py:35
msgid "The name of the OAuth client"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:37
+#: mediagoblin/plugins/oauth/forms.py:36
msgid "Description"
msgstr "설명"
-#: mediagoblin/plugins/oauth/forms.py:39
+#: 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:41
+#: mediagoblin/plugins/oauth/forms.py:40
msgid "Type"
msgstr "종류"
-#: mediagoblin/plugins/oauth/forms.py:46
+#: 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"
@@ -293,25 +331,40 @@ msgid ""
" JavaScript client)."
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:53
+#: mediagoblin/plugins/oauth/forms.py:52
msgid "Redirect URI"
msgstr "리다ì´ë ‰íЏ URI"
-#: mediagoblin/plugins/oauth/forms.py:55
+#: 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:67
+#: mediagoblin/plugins/oauth/forms.py:66
msgid "This field is required for public clients"
msgstr "ì´ í•­ëª©ì€ ê³µê°œ 사용ìžë“¤ì„ 위해 ê¼­ í•„ìš” 합니다."
-#: mediagoblin/plugins/oauth/views.py:60
+#: mediagoblin/plugins/oauth/views.py:59
msgid "The client {0} has been registered!"
msgstr "ì‚¬ìš©ìž {0}ë‹˜ì´ ë“±ë¡ ë˜ì—ˆìŠµë‹ˆë‹¤!"
-#: mediagoblin/processing/__init__.py:138
+#: 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/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr "추가"
+
+#: mediagoblin/processing/__init__.py:172
msgid "Invalid file given for media type."
msgstr "알수없는 미디어 íŒŒì¼ ìž…ë‹ˆë‹¤."
@@ -319,56 +372,74 @@ msgstr "알수없는 미디어 íŒŒì¼ ìž…ë‹ˆë‹¤."
msgid "File"
msgstr "파ì¼"
-#: mediagoblin/submit/views.py:57
+#: mediagoblin/submit/views.py:51
msgid "You must provide a file."
msgstr "파ì¼ì„ 등ë¡í•˜ì…”야 합니다."
-#: mediagoblin/submit/views.py:164
+#: mediagoblin/submit/views.py:97
msgid "Woohoo! Submitted!"
msgstr "ì´í–!! 등ë¡í–ˆìŠµë‹ˆë‹¤!"
-#: mediagoblin/submit/views.py:215
+#: mediagoblin/submit/views.py:146
#, python-format
msgid "Collection \"%s\" added!"
msgstr "\"%s\" 모ìŒì§‘ì´ ì¶”ê°€ë˜ì—ˆìŠµë‹ˆë‹¤!"
-#: mediagoblin/templates/mediagoblin/base.html:48
-msgid "MediaGoblin logo"
-msgstr "MediaGoblin 로고"
+#: mediagoblin/templates/mediagoblin/base.html:64
+msgid "Verify your email!"
+msgstr "ë©”ì¼ì„ 확ì¸í•˜ì„¸ìš”!"
+
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "log out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:70
+#: mediagoblin/templates/mediagoblin/auth/login.html:28
+#: mediagoblin/templates/mediagoblin/auth/login.html:36
+#: mediagoblin/templates/mediagoblin/auth/login.html:54
+msgid "Log in"
+msgstr "로그ì¸"
-#: mediagoblin/templates/mediagoblin/base.html:54
+#: mediagoblin/templates/mediagoblin/base.html:79
#, python-format
msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:60
-msgid "log out"
+#: mediagoblin/templates/mediagoblin/base.html:86
+msgid "Change account settings"
+msgstr "계정 설정 변경"
+
+#: mediagoblin/templates/mediagoblin/base.html:90
+#: mediagoblin/templates/mediagoblin/base.html:105
+#: mediagoblin/templates/mediagoblin/admin/panel.html:21
+#: mediagoblin/templates/mediagoblin/admin/panel.html:26
+#: 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:93
+msgid "Log out"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:62
-#: mediagoblin/templates/mediagoblin/root.html:28
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:151
+#: mediagoblin/templates/mediagoblin/base.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:156
msgid "Add media"
msgstr "미디어 추가"
-#: mediagoblin/templates/mediagoblin/base.html:68
-msgid "Verify your email!"
-msgstr "ë©”ì¼ì„ 확ì¸í•˜ì„¸ìš”!"
-
-#: mediagoblin/templates/mediagoblin/base.html:73
-#: mediagoblin/templates/mediagoblin/auth/login.html:28
-#: mediagoblin/templates/mediagoblin/auth/login.html:36
-#: mediagoblin/templates/mediagoblin/auth/login.html:54
-msgid "Log in"
-msgstr "로그ì¸"
+#: mediagoblin/templates/mediagoblin/base.html:99
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
+msgid "Create new collection"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:87
+#: mediagoblin/templates/mediagoblin/base.html:122
+#, python-format
msgid ""
-"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
-"href=\"http://gnu.org/\">GNU</a> project."
-msgstr "Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a href=\"http://gnu.org/\">GNU</a> project."
+"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/base.html:90
+#: mediagoblin/templates/mediagoblin/base.html:125
#, python-format
msgid ""
"Released under the <a "
@@ -380,52 +451,31 @@ msgstr "Released under the <a href=\"http://www.fsf.org/licensing/licenses/agpl-
msgid "Image of goblin stressing out"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:25
-msgid "Actions"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/root.html:31
-msgid "Create new collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:34
-msgid "Change account settings"
-msgstr "계정 설정 변경"
-
-#: mediagoblin/templates/mediagoblin/root.html:38
-#: mediagoblin/templates/mediagoblin/root.html:44
-#: mediagoblin/templates/mediagoblin/admin/panel.html:21
-#: mediagoblin/templates/mediagoblin/admin/panel.html:26
-#: 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/root.html:51
msgid "Explore"
msgstr "íƒìƒ‰"
-#: mediagoblin/templates/mediagoblin/root.html:53
+#: mediagoblin/templates/mediagoblin/root.html:33
msgid "Hi there, welcome to this MediaGoblin site!"
msgstr "안녕하세요! 미디어 고블린 사ì´íŠ¸ì— ì˜¨ê±¸ í™˜ì˜ í•©ë‹ˆë‹¤!"
-#: mediagoblin/templates/mediagoblin/root.html:55
+#: mediagoblin/templates/mediagoblin/root.html:35
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/root.html:56
+#: mediagoblin/templates/mediagoblin/root.html:36
msgid ""
"To add your own media, place comments, and more, you can log in with your "
"MediaGoblin account."
msgstr "ìžì‹ ì˜ 미디어를 추가하고, ëŒ“ê¸€ì„ ë‚¨ê¸°ì„¸ìš”! 미디어 고블린 계정으로 ë‚´ì—­ì„ í™•ì¸ í•˜ì‹¤ 수 있습니다!"
-#: mediagoblin/templates/mediagoblin/root.html:58
+#: mediagoblin/templates/mediagoblin/root.html:38
msgid "Don't have one yet? It's easy!"
msgstr "ì•„ì§ ì•„ë¬´ê²ƒë„ ì—†ìœ¼ì‹œë‹¤êµ¬ìš”? 매우 쉽습니다!"
-#: mediagoblin/templates/mediagoblin/root.html:59
+#: mediagoblin/templates/mediagoblin/root.html:39
#, python-format
msgid ""
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Create an account at this site</a>\n"
@@ -433,7 +483,7 @@ msgid ""
" <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
msgstr "<a class=\"button_action_highlight\" href=\"%(register_url)s\">ì‚¬ìš©ìž ê³„ì • 만들기</a>\n ë˜ëŠ”\n <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">서버를 위한 MediaGoblin 설정하기</a>"
-#: mediagoblin/templates/mediagoblin/root.html:67
+#: mediagoblin/templates/mediagoblin/root.html:47
msgid "Most recent media"
msgstr "가장 ìµœê·¼ì— ë“±ë¡ëœ 미디어"
@@ -539,41 +589,62 @@ msgid ""
"%(verification_url)s"
msgstr "안녕하세요 %(username)s님,\n\nGNU MediaGoblin ê³„ì •ì„ í™œì„±í™” 하시려면, ì•„ëž˜ì˜ URL 주소를 브ë¼ìš°ì ¸ë¡œ ì ‘ì†í•˜ì„¸ìš”.\n\n%(verification_url)s"
+#: 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:43
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:159
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:175
msgid "Attachments"
msgstr "첨부"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
msgid "Add attachment"
msgstr "첨부 추가"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:60
+#: 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:81
+#: 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:62
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:51
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
msgid "Save changes"
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:47
+#: 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
@@ -586,13 +657,17 @@ msgstr "%(media_title)s 편집중..."
msgid "Changing %(username)s's account settings"
msgstr "%(username)s'ì˜ ê³„ì • 설정 변경중..."
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
+msgid "Delete my account"
+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:35
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
#, python-format
msgid "Editing %(username)s's profile"
msgstr "%(username)sì˜ ê³„ì • ì •ë³´ 수정중..."
@@ -608,7 +683,7 @@ 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/stl.html:136
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
msgstr "다운로드"
@@ -631,7 +706,7 @@ msgid ""
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/video.html:56
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:61
msgid "Original file"
msgstr "ì›ë³¸ 파ì¼"
@@ -643,8 +718,8 @@ msgstr "WebM íŒŒì¼ (Vorbis ì½”ë±)"
#: 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:67
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
+#: 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 ì´ë¯¸ì§€"
@@ -689,21 +764,21 @@ msgstr ""
msgid "Object Height"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
msgid ""
-"Sorry, this video will not work because \n"
-"\t your web browser does not support HTML5 \n"
-"\t video."
-msgstr "죄송합니다. 사용하고 계신 브ë¼ìš°ì ¸ê°€ HTML5 video를\n\t ì§€ì›í•˜ì§€ 않습니다. 비디오를 재ìƒí•  수\n\t 없습니다."
+"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:43
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:47
msgid ""
"You can get a modern web browser that \n"
-"\t can play this video 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>!"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:69
msgid "WebM file (640p; VP8/Vorbis)"
msgstr "WebM íŒŒì¼ (640p; VP8/Vorbis)"
@@ -711,12 +786,6 @@ msgstr "WebM íŒŒì¼ (640p; VP8/Vorbis)"
msgid "Add a collection"
msgstr "모ìŒì§‘ 추가"
-#: mediagoblin/templates/mediagoblin/submit/collection.html:30
-#: mediagoblin/templates/mediagoblin/submit/start.html:34
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-msgid "Add"
-msgstr "추가"
-
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
msgid "Add your media"
@@ -733,12 +802,12 @@ msgid "%(collection_title)s by <a href=\"%(user_url)s\">%(username)s</a>"
msgstr "<a href=\"%(user_url)s\">%(username)s</a>ì˜ %(collection_title)s"
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:87
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
msgid "Edit"
msgstr "수정"
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:91
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
msgid "Delete"
msgstr "삭제"
@@ -748,11 +817,6 @@ msgstr "삭제"
msgid "Really delete %(title)s?"
msgstr "%(title)s ì„ ì§€ìš°ì‹œê² ìŠµë‹ˆê¹Œ?"
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:47
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Delete permanently"
-msgstr "ì˜êµ¬ì ìœ¼ë¡œ ì‚­ì œ"
-
#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:31
#, python-format
msgid "Really remove %(media_title)s from %(collection_title)s?"
@@ -762,6 +826,16 @@ msgstr "%(collection_title)sì˜ %(media_title)sì„ ì‚­ì œ 하시겠습니까?"
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 ""
@@ -774,56 +848,53 @@ msgstr "안녕하세요 %(username)s님,\n%(comment_author)s 가 (%(comment_url)
msgid "%(username)s's media"
msgstr "%(username)sì˜ ë¯¸ë””ì–´"
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:37
+#: 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:46
+#: 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:102
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:94
msgid "Add a comment"
msgstr "ë§ê¸€ 달기"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:109
-msgid ""
-"You can use <a "
-"href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> for"
-" formatting."
-msgstr "í¬ë©§íŒ…ì„ ìœ„í•´ <a href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> ì„ ì‚¬ìš©í•  수 있습니다.."
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:113
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:102
msgid "Add this comment"
msgstr "ë§ê¸€ 추가"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:123
msgid "at"
msgstr "ì—"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:152
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:144
#, python-format
msgid ""
"<h3>Added on</h3>\n"
" <p>%(date)s</p>"
msgstr "<h3>부가 기능</h3>\n <p>%(date)s</p>"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:202
-msgid "Add media to collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
#, python-format
-msgid "Add %(title)s to collection"
-msgstr "%(title)s ì˜ ëª¨ìŒì§‘ 추가"
+msgid "Add “%(media_title)s†to a collection"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:51
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
msgstr "+"
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
msgstr "새 모ìŒì§‘ 추가"
@@ -885,27 +956,31 @@ msgstr "ì •ìƒì ì¸ 계정ì´ë‚˜, ì¸ì¦ ë©”ì¼ì„ 잃어버리셨다면 <a hre
msgid "Here's a spot to tell others about yourself."
msgstr "ë‹¹ì‹ ì— ëŒ€í•´ 소개해 보세요."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:101
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:100
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:117
msgid "Edit profile"
msgstr "계정 정보 수정"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:105
msgid "This user hasn't filled in their profile (yet)."
msgstr "ì´ ì‚¬ìš©ìžëŠ” 계정 정보를 입력하지 않았습니다."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:124
+msgid "Browse collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:137
#, python-format
msgid "View all of %(username)s's media"
msgstr "%(username)sì˜ ëª¨ë“  미디어 보기"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:145
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:150
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:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:162
#: 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..."
@@ -915,28 +990,24 @@ msgstr "ì•„ì§ ì–´ë– í•œ ë¯¸ë””ì–´ë„ ì¡´ìž¬í•˜ì§€ 않습니다."
msgid "(remove)"
msgstr ""
-#: mediagoblin/templates/mediagoblin/utils/collections.html:20
-#, python-format
-msgid "In collections (%(collected)s)"
-msgstr "(%(collected)s) 모ìŒì§‘"
+#: 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/geolocation_map.html:25
-msgid "Location"
-msgstr "장소"
-
-#: mediagoblin/templates/mediagoblin/utils/geolocation_map.html:53
-#, python-format
-msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-msgstr " <a href=\"%(osm_url)s\">OpenStreetMap</a>으로 보기"
-
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
msgstr "All rights reserved"
@@ -967,49 +1038,64 @@ msgstr "ì´ì „"
msgid "Tagged with"
msgstr "태그 정보"
-#: mediagoblin/tools/exif.py:78
+#: mediagoblin/tools/exif.py:80
msgid "Could not read the image file."
msgstr "ì´ë¯¸ì§€ 파ì¼ì„ ì½ì„ 수 없습니다."
-#: mediagoblin/tools/response.py:30
+#: mediagoblin/tools/response.py:35
msgid "Oops!"
msgstr "ì›ìФ!"
-#: mediagoblin/tools/response.py:31
+#: mediagoblin/tools/response.py:36
msgid "An error occured"
msgstr ""
-#: mediagoblin/tools/response.py:46
+#: mediagoblin/tools/response.py:51
msgid "Operation not allowed"
msgstr ""
-#: mediagoblin/tools/response.py:47
+#: mediagoblin/tools/response.py:52
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:55
+#: mediagoblin/tools/response.py:60
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/user_pages/forms.py:28
+#: 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\">Markdown</a> for"
+" formatting."
+msgstr "í¬ë©§íŒ…ì„ ìœ„í•´ <a href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> ì„ ì‚¬ìš©í•  수 있습니다.."
+
+#: mediagoblin/user_pages/forms.py:31
msgid "I am sure I want to delete this"
msgstr "ì´ê±¸ 지우고 싶습니다."
-#: mediagoblin/user_pages/forms.py:32
+#: 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:35
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:40
msgid "-- Select --"
msgstr "-- ì„ íƒ --"
-#: mediagoblin/user_pages/forms.py:37
+#: mediagoblin/user_pages/forms.py:42
msgid "Include a note"
msgstr "노트 추가"
@@ -1017,74 +1103,69 @@ msgstr "노트 추가"
msgid "commented on your post"
msgstr "ê²Œì‹œë¬¼ì— ë§ê¸€ì´ 달렸습니다."
-#: mediagoblin/user_pages/views.py:156
+#: mediagoblin/user_pages/views.py:166
msgid "Oops, your comment was empty."
msgstr "오우, ëŒ“ê¸€ì´ ë¹„ì—ˆìŠµë‹ˆë‹¤."
-#: mediagoblin/user_pages/views.py:162
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
msgstr "ëŒ“ê¸€ì´ ë“±ë¡ ë˜ì—ˆìŠµë‹ˆë‹¤!"
-#: mediagoblin/user_pages/views.py:230
+#: mediagoblin/user_pages/views.py:197
+msgid "Please check your entries and try again."
+msgstr "확ì¸ì„ 하시고 다시 시ë„하세요."
+
+#: mediagoblin/user_pages/views.py:237
msgid "You have to select or add a collection"
msgstr "모ìŒì§‘ì„ ì¶”ê°€í•˜ê±°ë‚˜ 기존 모ìŒì§‘ì„ ì„ íƒí•˜ì„¸ìš”."
-#: mediagoblin/user_pages/views.py:238
+#: mediagoblin/user_pages/views.py:248
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr "\"%s\" 모ìŒì§‘ì´ ì´ë¯¸ 존재 합니다. \"%s\""
-#: mediagoblin/user_pages/views.py:253
+#: mediagoblin/user_pages/views.py:264
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr "\"%s\" 모ìŒì§‘ì„ ì¶”ê°€í–ˆìŠµë‹ˆë‹¤. \"%s\""
-#: mediagoblin/user_pages/views.py:261
-msgid "Please check your entries and try again."
-msgstr "확ì¸ì„ 하시고 다시 시ë„하세요."
-
-#: mediagoblin/user_pages/views.py:292
-msgid ""
-"Some of the files with this entry seem to be missing. Deleting anyway."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:297
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
msgstr "미디어를 삭제 했습니다."
-#: mediagoblin/user_pages/views.py:304
+#: mediagoblin/user_pages/views.py:293
msgid "The media was not deleted because you didn't check that you were sure."
msgstr "í™•ì¸ ì²´í¬ë¥¼ 하지 않았습니다. 미디어는 ì‚­ì œë˜ì§€ 않았습니다."
-#: mediagoblin/user_pages/views.py:312
+#: mediagoblin/user_pages/views.py:301
msgid "You are about to delete another user's media. Proceed with caution."
msgstr "다른 ì‚¬ëžŒì˜ ë¯¸ë””ì–´ë¥¼ 삭제하려고 합니다. 다시 한번 확ì¸í•˜ì„¸ìš”."
-#: mediagoblin/user_pages/views.py:370
+#: mediagoblin/user_pages/views.py:375
msgid "You deleted the item from the collection."
msgstr "모ìŒì§‘ì— ìžˆëŠ” í•­ëª©ì„ ì‚­ì œ 했습니다."
-#: mediagoblin/user_pages/views.py:374
+#: mediagoblin/user_pages/views.py:379
msgid "The item was not removed because you didn't check that you were sure."
msgstr "확ì¸ì„ 하지 않았습니다. í•­ëª©ì€ ì‚­ì œí•˜ì§€ 않았습니다."
-#: mediagoblin/user_pages/views.py:384
+#: mediagoblin/user_pages/views.py:389
msgid ""
"You are about to delete an item from another user's collection. Proceed with"
" caution."
msgstr "다른 사용ìžì˜ 모ìŒì§‘ì— ìžˆëŠ” í•­ëª©ì„ ì‚­ì œí•˜ì˜€ìŠµë‹ˆë‹¤. 주ì˜í•˜ì„¸ìš”."
-#: mediagoblin/user_pages/views.py:417
+#: mediagoblin/user_pages/views.py:422
#, python-format
msgid "You deleted the collection \"%s\""
msgstr "\"%s\" 모ìŒì§‘ì„ ì‚­ì œí•˜ì…¨ìŠµë‹ˆë‹¤."
-#: mediagoblin/user_pages/views.py:424
+#: mediagoblin/user_pages/views.py:429
msgid ""
"The collection was not deleted because you didn't check that you were sure."
msgstr "확ì¸ì„ 하지 않았습니다. 모ìŒì§‘ì€ ì‚­ì œí•˜ì§€ 않았습니다."
-#: mediagoblin/user_pages/views.py:434
+#: mediagoblin/user_pages/views.py:439
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
index afa8849c..fe96d40e 100644
--- a/mediagoblin/i18n/nl/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/nl/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/nl/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/nl/LC_MESSAGES/mediagoblin.po
index ba2907fb..3fd26d23 100644
--- a/mediagoblin/i18n/nl/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/nl/LC_MESSAGES/mediagoblin.po
@@ -1,5 +1,5 @@
# Translations template for PROJECT.
-# Copyright (C) 2012 ORGANIZATION
+# Copyright (C) 2013 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: http://issues.mediagoblin.org/\n"
-"POT-Creation-Date: 2012-12-20 09:18-0600\n"
-"PO-Revision-Date: 2012-12-20 15:14+0000\n"
+"POT-Creation-Date: 2013-03-04 18:04-0600\n"
+"PO-Revision-Date: 2013-03-05 00:04+0000\n"
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
@@ -20,82 +20,96 @@ msgstr ""
"Language: nl\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:41
+#: mediagoblin/auth/forms.py:28
+msgid "Invalid User name or email address."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:29
+msgid "This field does not take email addresses."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:30
+msgid "This field requires an email address."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:52 mediagoblin/auth/forms.py:67
msgid "Username"
msgstr "Gebruikersnaam"
-#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:45
+#: mediagoblin/auth/forms.py:56 mediagoblin/auth/forms.py:71
msgid "Password"
msgstr "Wachtwoord"
-#: mediagoblin/auth/forms.py:34
+#: mediagoblin/auth/forms.py:60
msgid "Email address"
msgstr "E-mail adres"
-#: mediagoblin/auth/forms.py:51
+#: mediagoblin/auth/forms.py:78
msgid "Username or email"
msgstr "Gebruikersnaam of email-adres"
-#: mediagoblin/auth/forms.py:58
-msgid "Incorrect input"
-msgstr "Onjuiste invoer"
-
-#: mediagoblin/auth/views.py:55
+#: mediagoblin/auth/views.py:54
msgid "Sorry, registration is disabled on this instance."
msgstr "Sorry, registratie is uitgeschakeld op deze instantie."
-#: mediagoblin/auth/views.py:75
+#: mediagoblin/auth/views.py:68
msgid "Sorry, a user with that name already exists."
msgstr "Sorry, er bestaat al een gebruiker met die naam."
-#: mediagoblin/auth/views.py:79
+#: mediagoblin/auth/views.py:72
msgid "Sorry, a user with that email address already exists."
msgstr "Sorry, een gebruiker met dat e-mailadres bestaat al."
-#: mediagoblin/auth/views.py:182
+#: mediagoblin/auth/views.py:174
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:188
+#: mediagoblin/auth/views.py:180
msgid "The verification key or user id is incorrect"
msgstr "De verificatie sleutel of gebruikers-ID is onjuist"
-#: mediagoblin/auth/views.py:206
+#: mediagoblin/auth/views.py:198
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:214
+#: mediagoblin/auth/views.py:206
msgid "You've already verified your email address!"
msgstr "Je hebt je e-mailadres al geverifieerd!"
-#: mediagoblin/auth/views.py:227
+#: mediagoblin/auth/views.py:219
msgid "Resent your verification email."
msgstr "Verificatie e-mail opnieuw opgestuurd."
-#: mediagoblin/auth/views.py:263
+#: mediagoblin/auth/views.py:250
+msgid ""
+"If that email address (case sensitive!) is registered an email has been sent"
+" with instructions on how to change your password."
+msgstr ""
+
+#: mediagoblin/auth/views.py:261
+msgid "Couldn't find someone with that username."
+msgstr ""
+
+#: mediagoblin/auth/views.py:264
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/auth/views.py:273
+#: mediagoblin/auth/views.py:271
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."
-#: mediagoblin/auth/views.py:285
-msgid "Couldn't find someone with that username or email."
-msgstr "Kon niemand vinden met die gebruikersnaam of dat e-mailadres."
-
-#: mediagoblin/auth/views.py:333
+#: mediagoblin/auth/views.py:328
msgid "You can now log in using your new password."
msgstr "Je kunt nu inloggen met je nieuwe wachtwoord."
-#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:82
+#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:93
#: mediagoblin/submit/forms.py:28 mediagoblin/submit/forms.py:47
-#: mediagoblin/user_pages/forms.py:40
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr "Titel"
@@ -104,8 +118,8 @@ msgid "Description of this work"
msgstr "Beschrijving van dit werk"
#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:52
-#: mediagoblin/edit/forms.py:86 mediagoblin/submit/forms.py:32
-#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:44
+#: mediagoblin/edit/forms.py:97 mediagoblin/submit/forms.py:32
+#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:49
msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
@@ -120,11 +134,11 @@ msgstr "Etiket"
msgid "Separate tags by commas."
msgstr "Hou labels gescheiden met komma's."
-#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:90
+#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:101
msgid "Slug"
msgstr "Slug"
-#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:91
+#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:102
msgid "The slug can't be empty"
msgstr "De slug kan niet leeg zijn"
@@ -163,65 +177,81 @@ msgstr "Vul je oude wachtwoord in om te bewijzen dat dit jouw account is"
msgid "New password"
msgstr "Nieuw wachtwoord"
-#: mediagoblin/edit/forms.py:71
+#: mediagoblin/edit/forms.py:74
+msgid "License preference"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:80
+msgid "This will be your default license on upload forms."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:82
msgid "Email me when others comment on my media"
msgstr ""
-#: mediagoblin/edit/forms.py:83
+#: mediagoblin/edit/forms.py:94
msgid "The title can't be empty"
msgstr ""
-#: mediagoblin/edit/forms.py:85 mediagoblin/submit/forms.py:50
-#: mediagoblin/user_pages/forms.py:43
+#: mediagoblin/edit/forms.py:96 mediagoblin/submit/forms.py:50
+#: mediagoblin/user_pages/forms.py:48
msgid "Description of this collection"
msgstr ""
-#: mediagoblin/edit/forms.py:92
+#: mediagoblin/edit/forms.py:103
msgid ""
"The title part of this collection's address. You usually don't need to "
"change this."
msgstr ""
-#: mediagoblin/edit/views.py:65
+#: mediagoblin/edit/views.py:66
msgid "An entry with that slug already exists for this user."
msgstr "Er bestaat al een met die slug voor deze gebruiker."
-#: mediagoblin/edit/views.py:86
+#: mediagoblin/edit/views.py:85
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:156
+#: mediagoblin/edit/views.py:155
#, python-format
msgid "You added the attachment %s!"
msgstr ""
-#: mediagoblin/edit/views.py:181
+#: mediagoblin/edit/views.py:182
+msgid "You can only edit your own profile."
+msgstr ""
+
+#: mediagoblin/edit/views.py:188
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:197
+#: mediagoblin/edit/views.py:204
msgid "Profile changes saved"
msgstr "Profielaanpassingen opgeslagen"
-#: mediagoblin/edit/views.py:226 mediagoblin/edit/views.py:246
+#: mediagoblin/edit/views.py:241
+msgid "Wrong password"
+msgstr "Verkeerd wachtwoord"
+
+#: mediagoblin/edit/views.py:252
msgid "Account settings saved"
msgstr "Accountinstellingen opgeslagen"
-#: mediagoblin/edit/views.py:251
-msgid "Wrong password"
-msgstr "Verkeerd wachtwoord"
+#: mediagoblin/edit/views.py:286
+msgid "You need to confirm the deletion of your account."
+msgstr ""
-#: mediagoblin/edit/views.py:287 mediagoblin/submit/views.py:211
-#: mediagoblin/user_pages/views.py:210
+#: mediagoblin/edit/views.py:322 mediagoblin/submit/views.py:142
+#: mediagoblin/user_pages/views.py:214
#, python-format
msgid "You already have a collection called \"%s\"!"
msgstr ""
-#: mediagoblin/edit/views.py:291
+#: mediagoblin/edit/views.py:326
msgid "A collection with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:308
+#: mediagoblin/edit/views.py:343
msgid "You are editing another user's collection. Proceed with caution."
msgstr ""
@@ -237,54 +267,62 @@ msgstr ""
msgid "However, old link directory symlink found; removed.\n"
msgstr ""
-#: mediagoblin/media_types/__init__.py:60
-#: mediagoblin/media_types/__init__.py:101
+#: 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:61
+#: mediagoblin/media_types/__init__.py:102
msgid "Sorry, I don't support that file type :("
msgstr "Sorry, dat bestandstype wordt niet ondersteunt."
-#: mediagoblin/media_types/video/processing.py:35
+#: mediagoblin/media_types/video/processing.py:36
msgid "Video transcoding failed"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:26
-msgid "Client ID"
-msgstr ""
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
+msgid "Location"
+msgstr "Locatie"
-#: mediagoblin/plugins/oauth/forms.py:28
-msgid "Next URL"
-msgstr ""
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:52
+#, python-format
+msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
+msgstr "Bekijken op <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-#: mediagoblin/plugins/oauth/forms.py:30
+#: mediagoblin/plugins/oauth/forms.py:29
msgid "Allow"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:31
+#: mediagoblin/plugins/oauth/forms.py:30
msgid "Deny"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:35
+#: mediagoblin/plugins/oauth/forms.py:34
msgid "Name"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:36
+#: mediagoblin/plugins/oauth/forms.py:35
msgid "The name of the OAuth client"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:37
+#: mediagoblin/plugins/oauth/forms.py:36
msgid "Description"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:39
+#: 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:41
+#: mediagoblin/plugins/oauth/forms.py:40
msgid "Type"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:46
+#: 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"
@@ -294,25 +332,40 @@ msgid ""
" JavaScript client)."
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:53
+#: mediagoblin/plugins/oauth/forms.py:52
msgid "Redirect URI"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:55
+#: 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:67
+#: mediagoblin/plugins/oauth/forms.py:66
msgid "This field is required for public clients"
msgstr ""
-#: mediagoblin/plugins/oauth/views.py:60
+#: mediagoblin/plugins/oauth/views.py:59
msgid "The client {0} has been registered!"
msgstr ""
-#: mediagoblin/processing/__init__.py:138
+#: 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/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr "Voeg toe"
+
+#: mediagoblin/processing/__init__.py:172
msgid "Invalid file given for media type."
msgstr "Verkeerd bestandsformaat voor mediatype opgegeven."
@@ -320,56 +373,74 @@ msgstr "Verkeerd bestandsformaat voor mediatype opgegeven."
msgid "File"
msgstr "Bestand"
-#: mediagoblin/submit/views.py:57
+#: mediagoblin/submit/views.py:51
msgid "You must provide a file."
msgstr "U moet een bestand aangeven."
-#: mediagoblin/submit/views.py:164
+#: mediagoblin/submit/views.py:97
msgid "Woohoo! Submitted!"
msgstr "Mooizo! Toegevoegd!"
-#: mediagoblin/submit/views.py:215
+#: mediagoblin/submit/views.py:146
#, python-format
msgid "Collection \"%s\" added!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:48
-msgid "MediaGoblin logo"
-msgstr "MediaGoblin logo"
+#: mediagoblin/templates/mediagoblin/base.html:64
+msgid "Verify your email!"
+msgstr "Verifieer je e-mailadres!"
+
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "log out"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:54
+#: mediagoblin/templates/mediagoblin/base.html:70
+#: mediagoblin/templates/mediagoblin/auth/login.html:28
+#: mediagoblin/templates/mediagoblin/auth/login.html:36
+#: mediagoblin/templates/mediagoblin/auth/login.html:54
+msgid "Log in"
+msgstr "Inloggen"
+
+#: mediagoblin/templates/mediagoblin/base.html:79
#, python-format
msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:60
-msgid "log out"
+#: mediagoblin/templates/mediagoblin/base.html:86
+msgid "Change account settings"
+msgstr "Accountinstellingen aanpassen"
+
+#: mediagoblin/templates/mediagoblin/base.html:90
+#: mediagoblin/templates/mediagoblin/base.html:105
+#: mediagoblin/templates/mediagoblin/admin/panel.html:21
+#: mediagoblin/templates/mediagoblin/admin/panel.html:26
+#: 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:93
+msgid "Log out"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:62
-#: mediagoblin/templates/mediagoblin/root.html:28
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:151
+#: mediagoblin/templates/mediagoblin/base.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:156
msgid "Add media"
msgstr "Voeg media toe"
-#: mediagoblin/templates/mediagoblin/base.html:68
-msgid "Verify your email!"
-msgstr "Verifieer je e-mailadres!"
-
-#: mediagoblin/templates/mediagoblin/base.html:73
-#: mediagoblin/templates/mediagoblin/auth/login.html:28
-#: mediagoblin/templates/mediagoblin/auth/login.html:36
-#: mediagoblin/templates/mediagoblin/auth/login.html:54
-msgid "Log in"
-msgstr "Inloggen"
+#: mediagoblin/templates/mediagoblin/base.html:99
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
+msgid "Create new collection"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:87
+#: mediagoblin/templates/mediagoblin/base.html:122
+#, python-format
msgid ""
-"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
-"href=\"http://gnu.org/\">GNU</a> project."
-msgstr "Hier draait <a href=\"http://mediagoblin.org\">MediaGoblin</a>, een <a href=\"http://gnu.org/\">GNU</a> project."
+"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/base.html:90
+#: mediagoblin/templates/mediagoblin/base.html:125
#, python-format
msgid ""
"Released under the <a "
@@ -381,52 +452,31 @@ msgstr "Uitgegeven onder de <a href=\"http://www.fsf.org/licensing/licenses/agpl
msgid "Image of goblin stressing out"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:25
-msgid "Actions"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/root.html:31
-msgid "Create new collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:34
-msgid "Change account settings"
-msgstr "Accountinstellingen aanpassen"
-
-#: mediagoblin/templates/mediagoblin/root.html:38
-#: mediagoblin/templates/mediagoblin/root.html:44
-#: mediagoblin/templates/mediagoblin/admin/panel.html:21
-#: mediagoblin/templates/mediagoblin/admin/panel.html:26
-#: 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/root.html:51
msgid "Explore"
msgstr "Verkennen"
-#: mediagoblin/templates/mediagoblin/root.html:53
+#: mediagoblin/templates/mediagoblin/root.html:33
msgid "Hi there, welcome to this MediaGoblin site!"
msgstr "Hoi, welkom op deze MediaGoblin website!"
-#: mediagoblin/templates/mediagoblin/root.html:55
+#: mediagoblin/templates/mediagoblin/root.html:35
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/root.html:56
+#: mediagoblin/templates/mediagoblin/root.html:36
msgid ""
"To add your own media, place comments, and more, you can log in with your "
"MediaGoblin account."
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:58
+#: mediagoblin/templates/mediagoblin/root.html:38
msgid "Don't have one yet? It's easy!"
msgstr "Heb je er nog geen? Het is heel eenvoudig!"
-#: mediagoblin/templates/mediagoblin/root.html:59
+#: mediagoblin/templates/mediagoblin/root.html:39
#, python-format
msgid ""
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Create an account at this site</a>\n"
@@ -434,7 +484,7 @@ msgid ""
" <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
msgstr "&lt;a class=\"button_action_highlight\" href=\"%(register_url)s\"&gt;Creëer een account op deze website&lt;/a&gt;\n of\n &lt;a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\"&gt;Gebruik MediaGoblin op je eigen server&lt;/a&gt;"
-#: mediagoblin/templates/mediagoblin/root.html:67
+#: mediagoblin/templates/mediagoblin/root.html:47
msgid "Most recent media"
msgstr "Nieuwste media"
@@ -540,41 +590,62 @@ msgid ""
"%(verification_url)s"
msgstr "Hallo %(username)s , open de volgende URL in uw webbrowser om uw GNU MediaGoblin account te activeren: %(verification_url)s "
+#: 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 ""
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:43
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:159
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:175
msgid "Attachments"
msgstr ""
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
msgid "Add attachment"
msgstr ""
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:60
+#: 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:81
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
msgid "Cancel"
msgstr "Annuleren"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:62
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:51
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
msgid "Save changes"
msgstr "Wijzigingen opslaan"
+#: 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:47
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
+msgid "Delete permanently"
+msgstr "Permanent verwijderen"
+
#: mediagoblin/templates/mediagoblin/edit/edit.html:23
#: mediagoblin/templates/mediagoblin/edit/edit.html:35
#, python-format
@@ -587,13 +658,17 @@ msgstr "%(media_title)s aanpassen"
msgid "Changing %(username)s's account settings"
msgstr "%(username)ss accountinstellingen aanpassen"
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
+msgid "Delete my account"
+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:35
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
#, python-format
msgid "Editing %(username)s's profile"
msgstr "Het profiel aanpassen van %(username)s"
@@ -609,7 +684,7 @@ msgstr "Media met het label: %(tag_name)s"
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
msgstr ""
@@ -632,7 +707,7 @@ msgid ""
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>!"
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:56
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:61
msgid "Original file"
msgstr ""
@@ -644,8 +719,8 @@ msgstr ""
#: 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:67
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
+#: 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 "Afbeelding voor %(media_title)s"
@@ -690,21 +765,21 @@ msgstr ""
msgid "Object Height"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
msgid ""
-"Sorry, this video will not work because \n"
-"\t your web browser does not support HTML5 \n"
-"\t video."
-msgstr "Sorry, deze video werkt niet omdat je webbrowser geen HTML5 video ondersteunt."
+"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:43
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:47
msgid ""
"You can get a modern web browser that \n"
-"\t can play this video at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
-msgstr "Je kunt een moderne webbrowser die deze video af kan spelen krijgen op <a href=\"http://getfirefox.com\">http://getfirefox.com</a>!"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:69
msgid "WebM file (640p; VP8/Vorbis)"
msgstr ""
@@ -712,12 +787,6 @@ msgstr ""
msgid "Add a collection"
msgstr ""
-#: mediagoblin/templates/mediagoblin/submit/collection.html:30
-#: mediagoblin/templates/mediagoblin/submit/start.html:34
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-msgid "Add"
-msgstr "Voeg toe"
-
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
msgid "Add your media"
@@ -734,12 +803,12 @@ 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:87
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
msgid "Edit"
msgstr "Pas aan"
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:91
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
msgid "Delete"
msgstr "Verwijderen"
@@ -749,11 +818,6 @@ msgstr "Verwijderen"
msgid "Really delete %(title)s?"
msgstr "Zeker weten dat je %(title)s wil verwijderen?"
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:47
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Delete permanently"
-msgstr "Permanent verwijderen"
-
#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:31
#, python-format
msgid "Really remove %(media_title)s from %(collection_title)s?"
@@ -763,6 +827,16 @@ msgstr ""
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 ""
@@ -775,56 +849,53 @@ msgstr ""
msgid "%(username)s's media"
msgstr "Media van %(username)s"
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:37
+#: 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 "Media van <a href=\"%(user_url)s\"> %(username)s </a>"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
#, 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:102
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:94
msgid "Add a comment"
msgstr "Geef een reactie"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:109
-msgid ""
-"You can use <a "
-"href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> for"
-" formatting."
-msgstr "Voor opmaak kun je &lt;a href=\"http://daringfireball.net/projects/markdown/basics\"&gt;Markdown&lt;/a&gt; gebruiken."
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:113
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:102
msgid "Add this comment"
msgstr "Voeg dit bericht toe"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:123
msgid "at"
msgstr "op"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:152
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:144
#, python-format
msgid ""
"<h3>Added on</h3>\n"
" <p>%(date)s</p>"
msgstr "<h3>Toegevoegd op</h3>\n <p>%(date)s</p>"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:202
-msgid "Add media to collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
#, python-format
-msgid "Add %(title)s to collection"
+msgid "Add “%(media_title)s†to a collection"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:51
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
msgstr ""
@@ -886,27 +957,31 @@ msgstr "Als u die persoon bent, maar de verificatie e-mail verloren hebt, kunt u
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:101
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:100
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:117
msgid "Edit profile"
msgstr "Profiel aanpassen."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:105
msgid "This user hasn't filled in their profile (yet)."
msgstr "Deze gebruiker heeft zijn of haar profiel (nog) niet ingevuld."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:124
+msgid "Browse collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:137
#, python-format
msgid "View all of %(username)s's media"
msgstr "Bekijk alle media van %(username)s"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:145
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:150
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:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:162
#: 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..."
@@ -916,28 +991,24 @@ msgstr "Het lijkt erop dat er nog geen media is."
msgid "(remove)"
msgstr ""
-#: mediagoblin/templates/mediagoblin/utils/collections.html:20
-#, python-format
-msgid "In collections (%(collected)s)"
+#: 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 "feed icoon"
#: 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/geolocation_map.html:25
-msgid "Location"
-msgstr "Locatie"
-
-#: mediagoblin/templates/mediagoblin/utils/geolocation_map.html:53
-#, python-format
-msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-msgstr "Bekijken op <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
msgstr "Alle rechten voorbehouden"
@@ -968,49 +1039,64 @@ msgstr "ouder"
msgid "Tagged with"
msgstr "Getagged met"
-#: mediagoblin/tools/exif.py:78
+#: mediagoblin/tools/exif.py:80
msgid "Could not read the image file."
msgstr "Kon het afbeeldingsbestand niet lezen."
-#: mediagoblin/tools/response.py:30
+#: mediagoblin/tools/response.py:35
msgid "Oops!"
msgstr "Oeps!"
-#: mediagoblin/tools/response.py:31
+#: mediagoblin/tools/response.py:36
msgid "An error occured"
msgstr ""
-#: mediagoblin/tools/response.py:46
+#: mediagoblin/tools/response.py:51
msgid "Operation not allowed"
msgstr ""
-#: mediagoblin/tools/response.py:47
+#: mediagoblin/tools/response.py:52
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:55
+#: mediagoblin/tools/response.py:60
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/user_pages/forms.py:28
+#: 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\">Markdown</a> for"
+" formatting."
+msgstr "Voor opmaak kun je &lt;a href=\"http://daringfireball.net/projects/markdown/basics\"&gt;Markdown&lt;/a&gt; gebruiken."
+
+#: 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/user_pages/forms.py:32
+#: 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:35
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:40
msgid "-- Select --"
msgstr ""
-#: mediagoblin/user_pages/forms.py:37
+#: mediagoblin/user_pages/forms.py:42
msgid "Include a note"
msgstr ""
@@ -1018,74 +1104,69 @@ msgstr ""
msgid "commented on your post"
msgstr ""
-#: mediagoblin/user_pages/views.py:156
+#: mediagoblin/user_pages/views.py:166
msgid "Oops, your comment was empty."
msgstr "Oeps, je bericht was leeg."
-#: mediagoblin/user_pages/views.py:162
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
msgstr "Je bericht is geplaatst!"
-#: mediagoblin/user_pages/views.py:230
+#: mediagoblin/user_pages/views.py:197
+msgid "Please check your entries and try again."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:237
msgid "You have to select or add a collection"
msgstr ""
-#: mediagoblin/user_pages/views.py:238
+#: mediagoblin/user_pages/views.py:248
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:253
+#: mediagoblin/user_pages/views.py:264
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:261
-msgid "Please check your entries and try again."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:292
-msgid ""
-"Some of the files with this entry seem to be missing. Deleting anyway."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:297
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
msgstr "Je hebt deze media verwijderd."
-#: mediagoblin/user_pages/views.py:304
+#: mediagoblin/user_pages/views.py:293
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/user_pages/views.py:312
+#: mediagoblin/user_pages/views.py:301
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:370
+#: mediagoblin/user_pages/views.py:375
msgid "You deleted the item from the collection."
msgstr ""
-#: mediagoblin/user_pages/views.py:374
+#: mediagoblin/user_pages/views.py:379
msgid "The item was not removed because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/user_pages/views.py:384
+#: mediagoblin/user_pages/views.py:389
msgid ""
"You are about to delete an item from another user's collection. Proceed with"
" caution."
msgstr ""
-#: mediagoblin/user_pages/views.py:417
+#: mediagoblin/user_pages/views.py:422
#, python-format
msgid "You deleted the collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:424
+#: mediagoblin/user_pages/views.py:429
msgid ""
"The collection was not deleted because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/user_pages/views.py:434
+#: mediagoblin/user_pages/views.py:439
msgid ""
"You are about to delete another user's collection. Proceed with caution."
msgstr ""
diff --git a/mediagoblin/i18n/nn_NO/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/nn_NO/LC_MESSAGES/mediagoblin.mo
index 206c906c..f58e6a45 100644
--- a/mediagoblin/i18n/nn_NO/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/nn_NO/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/nn_NO/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/nn_NO/LC_MESSAGES/mediagoblin.po
index 2cfe7f61..12d34b55 100644
--- a/mediagoblin/i18n/nn_NO/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/nn_NO/LC_MESSAGES/mediagoblin.po
@@ -1,15 +1,16 @@
# Translations template for PROJECT.
-# Copyright (C) 2012 ORGANIZATION
+# Copyright (C) 2013 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
+# <odin.omdal@gmail.com>, 2013.
# <odin.omdal@gmail.com>, 2011-2012.
msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://issues.mediagoblin.org/\n"
-"POT-Creation-Date: 2012-12-20 09:18-0600\n"
-"PO-Revision-Date: 2012-12-20 16:04+0000\n"
+"POT-Creation-Date: 2013-03-04 18:04-0600\n"
+"PO-Revision-Date: 2013-03-10 13:31+0000\n"
"Last-Translator: velmont <odin.omdal@gmail.com>\n"
"Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/mediagoblin/language/nn_NO/)\n"
"MIME-Version: 1.0\n"
@@ -19,82 +20,96 @@ msgstr ""
"Language: nn_NO\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:41
+#: mediagoblin/auth/forms.py:28
+msgid "Invalid User name or email address."
+msgstr "Ugyldig brukarnamn eller passord."
+
+#: mediagoblin/auth/forms.py:29
+msgid "This field does not take email addresses."
+msgstr "Dette feltet tek ikkje epostadresser."
+
+#: mediagoblin/auth/forms.py:30
+msgid "This field requires an email address."
+msgstr "Dette feltet krev ei epostadresse."
+
+#: mediagoblin/auth/forms.py:52 mediagoblin/auth/forms.py:67
msgid "Username"
msgstr "Brukarnamn"
-#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:45
+#: mediagoblin/auth/forms.py:56 mediagoblin/auth/forms.py:71
msgid "Password"
msgstr "Passord"
-#: mediagoblin/auth/forms.py:34
+#: mediagoblin/auth/forms.py:60
msgid "Email address"
msgstr "Epost"
-#: mediagoblin/auth/forms.py:51
+#: mediagoblin/auth/forms.py:78
msgid "Username or email"
msgstr "Brukarnamn eller epost"
-#: mediagoblin/auth/forms.py:58
-msgid "Incorrect input"
-msgstr "Ugyldig verdi"
-
-#: mediagoblin/auth/views.py:55
+#: mediagoblin/auth/views.py:54
msgid "Sorry, registration is disabled on this instance."
msgstr "Registrering er slege av. Orsak."
-#: mediagoblin/auth/views.py:75
+#: mediagoblin/auth/views.py:68
msgid "Sorry, a user with that name already exists."
msgstr "Ein konto med dette brukarnamnet finst allereide."
-#: mediagoblin/auth/views.py:79
+#: mediagoblin/auth/views.py:72
msgid "Sorry, a user with that email address already exists."
msgstr "Ein brukar med den epostadressa finst allereie."
-#: mediagoblin/auth/views.py:182
+#: mediagoblin/auth/views.py:174
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:188
+#: mediagoblin/auth/views.py:180
msgid "The verification key or user id is incorrect"
msgstr "Stadfestingsnykelen eller brukar-ID-en din er feil."
-#: mediagoblin/auth/views.py:206
+#: mediagoblin/auth/views.py:198
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:214
+#: mediagoblin/auth/views.py:206
msgid "You've already verified your email address!"
msgstr "Du har allereie verifisiert epostadressa."
-#: mediagoblin/auth/views.py:227
+#: mediagoblin/auth/views.py:219
msgid "Resent your verification email."
msgstr "Send ein ny stadfestingsepost."
-#: mediagoblin/auth/views.py:263
+#: mediagoblin/auth/views.py:250
+msgid ""
+"If that email address (case sensitive!) is registered an email has been sent"
+" with instructions on how to change your password."
+msgstr "Dersom denne epostadressa er registrert, har ein epost med instruksjonar for å endra passord vorte sendt til han."
+
+#: mediagoblin/auth/views.py:261
+msgid "Couldn't find someone with that username."
+msgstr "Fann ingen med det brukarnamnet."
+
+#: mediagoblin/auth/views.py:264
msgid ""
"An email has been sent with instructions on how to change your password."
msgstr "Sender epost med instruksjonar for å endra passordet ditt."
-#: mediagoblin/auth/views.py:273
+#: mediagoblin/auth/views.py:271
msgid ""
"Could not send password recovery email as your username is inactive or your "
"account's email address has not been verified."
msgstr "Kunne ikkje senda epost. Brukarnamnet ditt er inaktivt eller uverifisert."
-#: mediagoblin/auth/views.py:285
-msgid "Couldn't find someone with that username or email."
-msgstr "Fann ingen med det brukarnamnet eller passordet."
-
-#: mediagoblin/auth/views.py:333
+#: mediagoblin/auth/views.py:328
msgid "You can now log in using your new password."
msgstr "Du kan no logga inn med det nye passordet ditt."
-#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:82
+#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:93
#: mediagoblin/submit/forms.py:28 mediagoblin/submit/forms.py:47
-#: mediagoblin/user_pages/forms.py:40
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr "Tittel"
@@ -103,8 +118,8 @@ msgid "Description of this work"
msgstr "Skildring av verk"
#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:52
-#: mediagoblin/edit/forms.py:86 mediagoblin/submit/forms.py:32
-#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:44
+#: mediagoblin/edit/forms.py:97 mediagoblin/submit/forms.py:32
+#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:49
msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
@@ -119,11 +134,11 @@ msgstr "Merkelappar"
msgid "Separate tags by commas."
msgstr "Separer merkelappar med komma."
-#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:90
+#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:101
msgid "Slug"
msgstr "Nettnamn"
-#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:91
+#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:102
msgid "The slug can't be empty"
msgstr "Nettnamnet kan ikkje vera tomt"
@@ -162,65 +177,81 @@ msgstr "Skriv inn det gamle passordet ditt for å stadfesta at du eig denne kont
msgid "New password"
msgstr "Nytt passord"
-#: mediagoblin/edit/forms.py:71
+#: mediagoblin/edit/forms.py:74
+msgid "License preference"
+msgstr "Lisens-val"
+
+#: mediagoblin/edit/forms.py:80
+msgid "This will be your default license on upload forms."
+msgstr "Dette vil vera standardvalet ditt for lisens."
+
+#: mediagoblin/edit/forms.py:82
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:83
+#: mediagoblin/edit/forms.py:94
msgid "The title can't be empty"
msgstr "Tittelen kjan ikkje vera tom"
-#: mediagoblin/edit/forms.py:85 mediagoblin/submit/forms.py:50
-#: mediagoblin/user_pages/forms.py:43
+#: mediagoblin/edit/forms.py:96 mediagoblin/submit/forms.py:50
+#: mediagoblin/user_pages/forms.py:48
msgid "Description of this collection"
msgstr "Forklaringa til denne samlinga"
-#: mediagoblin/edit/forms.py:92
+#: mediagoblin/edit/forms.py:103
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/views.py:65
+#: mediagoblin/edit/views.py:66
msgid "An entry with that slug already exists for this user."
msgstr "Eit innlegg med denne adressetittelen finst allereie."
-#: mediagoblin/edit/views.py:86
+#: mediagoblin/edit/views.py:85
msgid "You are editing another user's media. Proceed with caution."
msgstr "Trå varsamt, du endrar nokon andre sine verk."
-#: mediagoblin/edit/views.py:156
+#: mediagoblin/edit/views.py:155
#, python-format
msgid "You added the attachment %s!"
msgstr "La til vedlegg %s."
-#: mediagoblin/edit/views.py:181
+#: mediagoblin/edit/views.py:182
+msgid "You can only edit your own profile."
+msgstr "Du kan berre enda din eigen profil."
+
+#: mediagoblin/edit/views.py:188
msgid "You are editing a user's profile. Proceed with caution."
msgstr "Trå varsamt, du endrar nokon andre sin profil."
-#: mediagoblin/edit/views.py:197
+#: mediagoblin/edit/views.py:204
msgid "Profile changes saved"
msgstr "Lagra endring av profilen"
-#: mediagoblin/edit/views.py:226 mediagoblin/edit/views.py:246
+#: mediagoblin/edit/views.py:241
+msgid "Wrong password"
+msgstr "Feil passord"
+
+#: mediagoblin/edit/views.py:252
msgid "Account settings saved"
msgstr "Lagra kontoinstellingar"
-#: mediagoblin/edit/views.py:251
-msgid "Wrong password"
-msgstr "Feil passord"
+#: mediagoblin/edit/views.py:286
+msgid "You need to confirm the deletion of your account."
+msgstr "Du må stadfesta slettinga av kontoen din."
-#: mediagoblin/edit/views.py:287 mediagoblin/submit/views.py:211
-#: mediagoblin/user_pages/views.py:210
+#: mediagoblin/edit/views.py:322 mediagoblin/submit/views.py:142
+#: mediagoblin/user_pages/views.py:214
#, python-format
msgid "You already have a collection called \"%s\"!"
msgstr "Du har allereie ei samling med namn «%s»."
-#: mediagoblin/edit/views.py:291
+#: mediagoblin/edit/views.py:326
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:308
+#: mediagoblin/edit/views.py:343
msgid "You are editing another user's collection. Proceed with caution."
msgstr "Du endrar ein annan brukar si samling. Trå varsamt."
@@ -236,54 +267,62 @@ msgstr "No asset directory for this theme\n"
msgid "However, old link directory symlink found; removed.\n"
msgstr "However, old link directory symlink found; removed.\n"
-#: mediagoblin/media_types/__init__.py:60
-#: mediagoblin/media_types/__init__.py:101
+#: 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 "Finn ikkje CSRF-cookien. Dette er truleg grunna ein cookie-blokkar.<br/>\nSjå til at du tillet cookies for dette domenet."
+
+#: mediagoblin/media_types/__init__.py:61
+#: mediagoblin/media_types/__init__.py:102
msgid "Sorry, I don't support that file type :("
msgstr "Orsak, stør ikkje den filtypen :("
-#: mediagoblin/media_types/video/processing.py:35
+#: mediagoblin/media_types/video/processing.py:36
msgid "Video transcoding failed"
msgstr "Skjedde noko gale med video transkodinga"
-#: mediagoblin/plugins/oauth/forms.py:26
-msgid "Client ID"
-msgstr "Klient-ID (client ID)"
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
+msgid "Location"
+msgstr "Stad"
-#: mediagoblin/plugins/oauth/forms.py:28
-msgid "Next URL"
-msgstr "Neste adresse (next URL)"
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:52
+#, python-format
+msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
+msgstr "Sjå på <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-#: mediagoblin/plugins/oauth/forms.py:30
+#: mediagoblin/plugins/oauth/forms.py:29
msgid "Allow"
msgstr "Godta"
-#: mediagoblin/plugins/oauth/forms.py:31
+#: mediagoblin/plugins/oauth/forms.py:30
msgid "Deny"
msgstr "Nekt"
-#: mediagoblin/plugins/oauth/forms.py:35
+#: mediagoblin/plugins/oauth/forms.py:34
msgid "Name"
msgstr "Namn"
-#: mediagoblin/plugins/oauth/forms.py:36
+#: mediagoblin/plugins/oauth/forms.py:35
msgid "The name of the OAuth client"
msgstr "Namnet til OAuth-klienten"
-#: mediagoblin/plugins/oauth/forms.py:37
+#: mediagoblin/plugins/oauth/forms.py:36
msgid "Description"
msgstr "Forklaring"
-#: mediagoblin/plugins/oauth/forms.py:39
+#: mediagoblin/plugins/oauth/forms.py:38
msgid ""
"This will be visible to users allowing your\n"
" application to authenticate as them."
msgstr "Dette vil vera synleg for brukarar som godtek applikasjonen din til å autentisera dei."
-#: mediagoblin/plugins/oauth/forms.py:41
+#: mediagoblin/plugins/oauth/forms.py:40
msgid "Type"
msgstr "Type"
-#: mediagoblin/plugins/oauth/forms.py:46
+#: 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"
@@ -293,25 +332,40 @@ msgid ""
" JavaScript client)."
msgstr "<strong>Confidential</strong> - Konfidensielt, på engelsk: 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> - Open, på engelsk: The client can't make confidential\n requests to the GNU MediaGoblin instance (e.g. client-side\n JavaScript client)."
-#: mediagoblin/plugins/oauth/forms.py:53
+#: mediagoblin/plugins/oauth/forms.py:52
msgid "Redirect URI"
msgstr "Omdirigering URI"
-#: mediagoblin/plugins/oauth/forms.py:55
+#: mediagoblin/plugins/oauth/forms.py:54
msgid ""
"The redirect URI for the applications, this field\n"
" is <strong>required</strong> for public clients."
msgstr "Omdirigerings-URI-en for programmene. Denne feltet <strong>krevst</strong> for opne (public) klientar."
-#: mediagoblin/plugins/oauth/forms.py:67
+#: mediagoblin/plugins/oauth/forms.py:66
msgid "This field is required for public clients"
msgstr "Dette feltet krevst for opne (public) klientar"
-#: mediagoblin/plugins/oauth/views.py:60
+#: mediagoblin/plugins/oauth/views.py:59
msgid "The client {0} has been registered!"
msgstr "Klienten {0} er registrert."
-#: mediagoblin/processing/__init__.py:138
+#: mediagoblin/plugins/oauth/templates/oauth/client/connections.html:22
+msgid "OAuth client connections"
+msgstr "OAuth klient-tilkoplingar"
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/list.html:22
+msgid "Your OAuth clients"
+msgstr "Dine OAuth-klientar"
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/register.html:29
+#: mediagoblin/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr "Legg til"
+
+#: mediagoblin/processing/__init__.py:172
msgid "Invalid file given for media type."
msgstr "Ugyldig fil for medietypen."
@@ -319,56 +373,74 @@ msgstr "Ugyldig fil for medietypen."
msgid "File"
msgstr "Fil"
-#: mediagoblin/submit/views.py:57
+#: mediagoblin/submit/views.py:51
msgid "You must provide a file."
msgstr "Du må velja ei fil."
-#: mediagoblin/submit/views.py:164
+#: mediagoblin/submit/views.py:97
msgid "Woohoo! Submitted!"
msgstr "Johoo! Opplasta!"
-#: mediagoblin/submit/views.py:215
+#: mediagoblin/submit/views.py:146
#, python-format
msgid "Collection \"%s\" added!"
msgstr "La til samlinga «%s»."
-#: mediagoblin/templates/mediagoblin/base.html:48
-msgid "MediaGoblin logo"
-msgstr "MediaGoblin"
+#: mediagoblin/templates/mediagoblin/base.html:64
+msgid "Verify your email!"
+msgstr "Verifiser epostadressa di."
+
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "log out"
+msgstr "Logg ut"
+
+#: mediagoblin/templates/mediagoblin/base.html:70
+#: mediagoblin/templates/mediagoblin/auth/login.html:28
+#: mediagoblin/templates/mediagoblin/auth/login.html:36
+#: mediagoblin/templates/mediagoblin/auth/login.html:54
+msgid "Log in"
+msgstr "Logg inn"
-#: mediagoblin/templates/mediagoblin/base.html:54
+#: mediagoblin/templates/mediagoblin/base.html:79
#, 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:60
-msgid "log out"
+#: mediagoblin/templates/mediagoblin/base.html:86
+msgid "Change account settings"
+msgstr "Endra kontoinstellingar"
+
+#: mediagoblin/templates/mediagoblin/base.html:90
+#: mediagoblin/templates/mediagoblin/base.html:105
+#: mediagoblin/templates/mediagoblin/admin/panel.html:21
+#: mediagoblin/templates/mediagoblin/admin/panel.html:26
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
+msgid "Media processing panel"
+msgstr "Verkprosesseringspanel"
+
+#: mediagoblin/templates/mediagoblin/base.html:93
+msgid "Log out"
msgstr "Logg ut"
-#: mediagoblin/templates/mediagoblin/base.html:62
-#: mediagoblin/templates/mediagoblin/root.html:28
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:151
+#: mediagoblin/templates/mediagoblin/base.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:156
msgid "Add media"
msgstr "Legg til verk"
-#: mediagoblin/templates/mediagoblin/base.html:68
-msgid "Verify your email!"
-msgstr "Verifiser epostadressa di."
-
-#: mediagoblin/templates/mediagoblin/base.html:73
-#: mediagoblin/templates/mediagoblin/auth/login.html:28
-#: mediagoblin/templates/mediagoblin/auth/login.html:36
-#: mediagoblin/templates/mediagoblin/auth/login.html:54
-msgid "Log in"
-msgstr "Logg inn"
+#: mediagoblin/templates/mediagoblin/base.html:99
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
+msgid "Create new collection"
+msgstr "Lag ny samling"
-#: mediagoblin/templates/mediagoblin/base.html:87
+#: mediagoblin/templates/mediagoblin/base.html:122
+#, python-format
msgid ""
-"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
-"href=\"http://gnu.org/\">GNU</a> project."
-msgstr "Drive av <a href=\"http://mediagoblin.org\">MediaGoblin</a>, eit <a href=\"http://gnu.org/\">GNU</a>-prosjekt."
+"Powered by <a href=\"http://mediagoblin.org/\" title='Version "
+"%(version)s'>MediaGoblin</a>, a <a href=\"http://gnu.org/\">GNU</a> project."
+msgstr "Drive av <a href=\"http://mediagoblin.org\" title='Version %(version)s'>MediaGoblin</a>, eit <a href=\"http://gnu.org/\">GNU</a>-prosjekt."
-#: mediagoblin/templates/mediagoblin/base.html:90
+#: mediagoblin/templates/mediagoblin/base.html:125
#, python-format
msgid ""
"Released under the <a "
@@ -380,52 +452,31 @@ msgstr "Lisensiert med <a href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.
msgid "Image of goblin stressing out"
msgstr "Bilete av stressa goblin"
-#: mediagoblin/templates/mediagoblin/root.html:25
-msgid "Actions"
-msgstr "Handlingar"
-
#: mediagoblin/templates/mediagoblin/root.html:31
-msgid "Create new collection"
-msgstr "Lag ny samling"
-
-#: mediagoblin/templates/mediagoblin/root.html:34
-msgid "Change account settings"
-msgstr "Endra kontoinstellingar"
-
-#: mediagoblin/templates/mediagoblin/root.html:38
-#: mediagoblin/templates/mediagoblin/root.html:44
-#: mediagoblin/templates/mediagoblin/admin/panel.html:21
-#: mediagoblin/templates/mediagoblin/admin/panel.html:26
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
-msgid "Media processing panel"
-msgstr "Verkprosesseringspanel"
-
-#: mediagoblin/templates/mediagoblin/root.html:51
msgid "Explore"
msgstr "Utforsk"
-#: mediagoblin/templates/mediagoblin/root.html:53
+#: mediagoblin/templates/mediagoblin/root.html:33
msgid "Hi there, welcome to this MediaGoblin site!"
msgstr "Heihei, velkomen til denne MediaGoblin-sida."
-#: mediagoblin/templates/mediagoblin/root.html:55
+#: mediagoblin/templates/mediagoblin/root.html:35
msgid ""
"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
"extraordinarily great piece of media hosting software."
msgstr "Denne sida køyrer <a href=\"http://mediagoblin.org\">MediaGoblin</a>, eit superbra program for å visa fram dine kreative verk."
-#: mediagoblin/templates/mediagoblin/root.html:56
+#: mediagoblin/templates/mediagoblin/root.html:36
msgid ""
"To add your own media, place comments, and more, you can log in with your "
"MediaGoblin account."
msgstr "Vil du leggja til eigne verk og innpel, so må du logga inn."
-#: mediagoblin/templates/mediagoblin/root.html:58
+#: mediagoblin/templates/mediagoblin/root.html:38
msgid "Don't have one yet? It's easy!"
msgstr "Har du ikkje ein enno? Det er enkelt!"
-#: mediagoblin/templates/mediagoblin/root.html:59
+#: mediagoblin/templates/mediagoblin/root.html:39
#, python-format
msgid ""
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Create an account at this site</a>\n"
@@ -433,7 +484,7 @@ msgid ""
" <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
msgstr "<a class=\"button_action_highlight\" href=\"%(register_url)s\">Opprett ein konto på denne sida</a> eller <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">set opp MediaGoblin på eigen tenar</a>"
-#: mediagoblin/templates/mediagoblin/root.html:67
+#: mediagoblin/templates/mediagoblin/root.html:47
msgid "Most recent media"
msgstr "Nyaste verk"
@@ -539,41 +590,62 @@ msgid ""
"%(verification_url)s"
msgstr "Hei %(username)s,\n\nopna fylgjande netadresse i netlesaren din for å aktivera kontoen din:\n\n%(verification_url)s"
+#: 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 "Endrar vedlegg for %(media_title)s"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:43
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:159
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:175
msgid "Attachments"
msgstr "Vedlegg"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
msgid "Add attachment"
msgstr "Legg ved vedlegg"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:60
+#: 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:81
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
msgid "Cancel"
msgstr "Bryt av"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:62
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:51
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
msgid "Save changes"
msgstr "Lagra"
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
+#, python-format
+msgid "Really delete user '%(user_name)s' and all related media/comments?"
+msgstr "Sletta brukar '%(user_name)s' og alle relaterte verk og kommentarar?"
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:35
+msgid "Yes, really delete my account"
+msgstr "Ja, slett kontoen min"
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:47
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
+msgid "Delete permanently"
+msgstr "Slett permanent"
+
#: mediagoblin/templates/mediagoblin/edit/edit.html:23
#: mediagoblin/templates/mediagoblin/edit/edit.html:35
#, python-format
@@ -586,13 +658,17 @@ msgstr "Endrar %(media_title)s"
msgid "Changing %(username)s's account settings"
msgstr "Endrar kontoinnstellingane til %(username)s"
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
+msgid "Delete my account"
+msgstr "Slett kontoen min"
+
#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:29
#, python-format
msgid "Editing %(collection_title)s"
msgstr "Endrar %(collection_title)s"
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:23
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
#, python-format
msgid "Editing %(username)s's profile"
msgstr "Endrar profilen til %(username)s"
@@ -608,7 +684,7 @@ 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/stl.html:136
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
msgstr "Last ned"
@@ -631,7 +707,7 @@ msgid ""
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>."
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:56
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:61
msgid "Original file"
msgstr "Opphavleg fil"
@@ -643,8 +719,8 @@ msgstr "WebM-fil (Vorbis-kodek)"
#: 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:67
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
+#: 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 "Bilete for %(media_title)s"
@@ -689,21 +765,21 @@ msgstr "Filformat"
msgid "Object Height"
msgstr "Objekthøgd"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
msgid ""
-"Sorry, this video will not work because \n"
-"\t your web browser does not support HTML5 \n"
-"\t video."
-msgstr "Orsak, denne videoen fungerer ikkje fordi netlesaren din ikkje stør HTML5-video."
+"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:43
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:47
msgid ""
"You can get a modern web browser that \n"
-"\t can play this video at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
-msgstr "Du kan skaffa ein moderne netlesar som kan spela av denne videoen hjå <a href=\"http://opera.com/download\">http://opera.com/download</a>."
+" 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:59
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:69
msgid "WebM file (640p; VP8/Vorbis)"
msgstr "WebM fil (640p; VP8/Vorbis)"
@@ -711,12 +787,6 @@ msgstr "WebM fil (640p; VP8/Vorbis)"
msgid "Add a collection"
msgstr "Legg til ei samling"
-#: mediagoblin/templates/mediagoblin/submit/collection.html:30
-#: mediagoblin/templates/mediagoblin/submit/start.html:34
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-msgid "Add"
-msgstr "Legg til"
-
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
msgid "Add your media"
@@ -733,12 +803,12 @@ msgid "%(collection_title)s by <a href=\"%(user_url)s\">%(username)s</a>"
msgstr "%(collection_title)s av <a href=\"%(user_url)s\">%(username)s</a>"
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:87
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
msgid "Edit"
msgstr "Endra"
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:91
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
msgid "Delete"
msgstr "Slett"
@@ -748,11 +818,6 @@ msgstr "Slett"
msgid "Really delete %(title)s?"
msgstr "Vil du verkeleg sletta %(title)s?"
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:47
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Delete permanently"
-msgstr "Slett permanent"
-
#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:31
#, python-format
msgid "Really remove %(media_title)s from %(collection_title)s?"
@@ -762,6 +827,16 @@ msgstr "Fjerna %(media_title)s frå %(collection_title)s?"
msgid "Remove"
msgstr "Fjern"
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:21
+#, python-format
+msgid "%(username)s's collections"
+msgstr "%(username)s sine samlingar"
+
+#: 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> sine samlingar"
+
#: mediagoblin/templates/mediagoblin/user_pages/comment_email.txt:19
#, python-format
msgid ""
@@ -774,56 +849,53 @@ msgstr "Hei %(username)s,\n%(comment_author)s kommenterte innlegget ditt (%(comm
msgid "%(username)s's media"
msgstr "Verka til %(username)s"
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:37
+#: 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> sine verk merka <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> sine verk"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
#, 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:102
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:94
msgid "Add a comment"
msgstr "Legg att innspel"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:109
-msgid ""
-"You can use <a "
-"href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> for"
-" formatting."
-msgstr "Du kan bruka <a href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> til formatterring."
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:113
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:102
msgid "Add this comment"
msgstr "Legg til dette innspelet"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:123
msgid "at"
msgstr "hjå"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:152
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:144
#, python-format
msgid ""
"<h3>Added on</h3>\n"
" <p>%(date)s</p>"
msgstr "<h3>Lagt til</h3>\n <p>%(date)s</p>"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:202
-msgid "Add media to collection"
-msgstr "Legg til verk til samling"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
#, python-format
-msgid "Add %(title)s to collection"
-msgstr "Putt %(title)s inn i samling"
+msgid "Add “%(media_title)s†to a collection"
+msgstr "Putt «%(media_title)s» i samling"
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:51
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
msgstr "+"
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
msgstr "Legg til ei ny samling"
@@ -885,27 +957,31 @@ msgstr "Viss dette er deg, kan du <a href=\"%(login_url)s\">logga inn</a> for å
msgid "Here's a spot to tell others about yourself."
msgstr "Her kan du fortelja om deg sjølv."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:101
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:100
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:117
msgid "Edit profile"
msgstr "Endra profil"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:105
msgid "This user hasn't filled in their profile (yet)."
msgstr "Brukaren har ikkje fylt ut profilen sin (enno)."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:124
+msgid "Browse collections"
+msgstr "Sjå gjennom samlingar"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:137
#, python-format
msgid "View all of %(username)s's media"
msgstr "Sjå alle %(username)s sine verk"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:145
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:150
msgid ""
"This is where your media will appear, but you don't seem to have added "
"anything yet."
msgstr "Her kjem verka dine."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:162
#: 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..."
@@ -915,28 +991,24 @@ msgstr "Ser ikkje ut til at det finst nokon verk her nett no."
msgid "(remove)"
msgstr "(fjern)"
-#: mediagoblin/templates/mediagoblin/utils/collections.html:20
-#, python-format
-msgid "In collections (%(collected)s)"
-msgstr "I samlingar (%(collected)s)"
+#: mediagoblin/templates/mediagoblin/utils/collections.html:21
+msgid "Collected in"
+msgstr "I samling"
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:40
+msgid "Add to a collection"
+msgstr "Putt i samling"
#: 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-kjelde"
-#: mediagoblin/templates/mediagoblin/utils/geolocation_map.html:25
-msgid "Location"
-msgstr "Stad"
-
-#: mediagoblin/templates/mediagoblin/utils/geolocation_map.html:53
-#, python-format
-msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-msgstr "Sjå på <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
msgstr "Alle rettar reservert"
@@ -967,49 +1039,64 @@ msgstr "eldre"
msgid "Tagged with"
msgstr "Merka med"
-#: mediagoblin/tools/exif.py:78
+#: mediagoblin/tools/exif.py:80
msgid "Could not read the image file."
msgstr "Klarte ikkje lesa biletefila."
-#: mediagoblin/tools/response.py:30
+#: mediagoblin/tools/response.py:35
msgid "Oops!"
msgstr "Oops."
-#: mediagoblin/tools/response.py:31
+#: mediagoblin/tools/response.py:36
msgid "An error occured"
msgstr "Noko gjekk gale"
-#: mediagoblin/tools/response.py:46
+#: mediagoblin/tools/response.py:51
msgid "Operation not allowed"
msgstr "Ulovleg operasjon"
-#: mediagoblin/tools/response.py:47
+#: mediagoblin/tools/response.py:52
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:55
+#: mediagoblin/tools/response.py:60
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 "Ser ikkje ut til å finnast noko her. Orsak.</p>\n<p>Dersom du er sikker på at adressa finst, so er ho truleg flytta eller sletta."
-#: mediagoblin/user_pages/forms.py:28
+#: mediagoblin/user_pages/forms.py:23
+msgid "Comment"
+msgstr "Innspel"
+
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use <a "
+"href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> for"
+" formatting."
+msgstr "Du kan bruka <a href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> til formatterring."
+
+#: mediagoblin/user_pages/forms.py:31
msgid "I am sure I want to delete this"
msgstr "Eg er sikker eg vil sletta dette"
-#: mediagoblin/user_pages/forms.py:32
+#: mediagoblin/user_pages/forms.py:35
msgid "I am sure I want to remove this item from the collection"
msgstr "Eg er sikker på at eg vil fjerna dette frå samlinga"
-#: mediagoblin/user_pages/forms.py:35
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr "Samling"
+
+#: mediagoblin/user_pages/forms.py:40
msgid "-- Select --"
msgstr "-- Vel --"
-#: mediagoblin/user_pages/forms.py:37
+#: mediagoblin/user_pages/forms.py:42
msgid "Include a note"
msgstr "Legg ved eit notat"
@@ -1017,74 +1104,69 @@ msgstr "Legg ved eit notat"
msgid "commented on your post"
msgstr "kom med innspel på innlegget ditt"
-#: mediagoblin/user_pages/views.py:156
+#: mediagoblin/user_pages/views.py:166
msgid "Oops, your comment was empty."
msgstr "Vops, innspelet ditt var tomt."
-#: mediagoblin/user_pages/views.py:162
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
msgstr "Innspelet ditt er lagt til."
-#: mediagoblin/user_pages/views.py:230
+#: mediagoblin/user_pages/views.py:197
+msgid "Please check your entries and try again."
+msgstr "Sjekk filene dine og prøv omatt."
+
+#: mediagoblin/user_pages/views.py:237
msgid "You have to select or add a collection"
msgstr "Du må velja eller laga ei samling"
-#: mediagoblin/user_pages/views.py:238
+#: mediagoblin/user_pages/views.py:248
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr "«%s» er allereie i samling «%s»"
-#: mediagoblin/user_pages/views.py:253
+#: mediagoblin/user_pages/views.py:264
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr "«%s» lagt til samling «%s»"
-#: mediagoblin/user_pages/views.py:261
-msgid "Please check your entries and try again."
-msgstr "Sjekk filene dine og prøv omatt."
-
-#: mediagoblin/user_pages/views.py:292
-msgid ""
-"Some of the files with this entry seem to be missing. Deleting anyway."
-msgstr "Nokre av filene ser ut til å mangla. Slettar likevel."
-
-#: mediagoblin/user_pages/views.py:297
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
msgstr "Du sletta verket."
-#: mediagoblin/user_pages/views.py:304
+#: mediagoblin/user_pages/views.py:293
msgid "The media was not deleted because you didn't check that you were sure."
msgstr "Sletta ikkje verket."
-#: mediagoblin/user_pages/views.py:312
+#: mediagoblin/user_pages/views.py:301
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:370
+#: mediagoblin/user_pages/views.py:375
msgid "You deleted the item from the collection."
msgstr "Du fjerna fila frå samlinga."
-#: mediagoblin/user_pages/views.py:374
+#: mediagoblin/user_pages/views.py:379
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:384
+#: mediagoblin/user_pages/views.py:389
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:417
+#: mediagoblin/user_pages/views.py:422
#, python-format
msgid "You deleted the collection \"%s\""
msgstr "Samlinga «%s» sletta"
-#: mediagoblin/user_pages/views.py:424
+#: mediagoblin/user_pages/views.py:429
msgid ""
"The collection was not deleted because you didn't check that you were sure."
msgstr "Sletta ikkje samlinga."
-#: mediagoblin/user_pages/views.py:434
+#: mediagoblin/user_pages/views.py:439
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
index 64a4d00f..ea905b61 100644
--- a/mediagoblin/i18n/pl/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/pl/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/pl/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/pl/LC_MESSAGES/mediagoblin.po
index b516065d..9edf8e2b 100644
--- a/mediagoblin/i18n/pl/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/pl/LC_MESSAGES/mediagoblin.po
@@ -1,5 +1,5 @@
# Translations template for PROJECT.
-# Copyright (C) 2012 ORGANIZATION
+# Copyright (C) 2013 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: http://issues.mediagoblin.org/\n"
-"POT-Creation-Date: 2012-12-20 09:18-0600\n"
-"PO-Revision-Date: 2012-12-20 15:14+0000\n"
+"POT-Creation-Date: 2013-03-04 18:04-0600\n"
+"PO-Revision-Date: 2013-03-05 00:04+0000\n"
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
@@ -19,82 +19,96 @@ msgstr ""
"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"
-#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:41
+#: mediagoblin/auth/forms.py:28
+msgid "Invalid User name or email address."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:29
+msgid "This field does not take email addresses."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:30
+msgid "This field requires an email address."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:52 mediagoblin/auth/forms.py:67
msgid "Username"
msgstr "Użytkownik"
-#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:45
+#: mediagoblin/auth/forms.py:56 mediagoblin/auth/forms.py:71
msgid "Password"
msgstr "Hasło"
-#: mediagoblin/auth/forms.py:34
+#: mediagoblin/auth/forms.py:60
msgid "Email address"
msgstr "Adres e-mail"
-#: mediagoblin/auth/forms.py:51
+#: mediagoblin/auth/forms.py:78
msgid "Username or email"
msgstr "Użytkownik lub adres e-mail"
-#: mediagoblin/auth/forms.py:58
-msgid "Incorrect input"
-msgstr "Nieprawidłowe dane"
-
-#: mediagoblin/auth/views.py:55
+#: mediagoblin/auth/views.py:54
msgid "Sorry, registration is disabled on this instance."
msgstr "Niestety rejestracja w tym serwisie jest wyłączona."
-#: mediagoblin/auth/views.py:75
+#: mediagoblin/auth/views.py:68
msgid "Sorry, a user with that name already exists."
msgstr "Niestety użytkownik o takiej nazwie już istnieje."
-#: mediagoblin/auth/views.py:79
+#: mediagoblin/auth/views.py:72
msgid "Sorry, a user with that email address already exists."
msgstr "Niestety użytkownik z tym adresem e-mail już istnieje."
-#: mediagoblin/auth/views.py:182
+#: mediagoblin/auth/views.py:174
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:188
+#: mediagoblin/auth/views.py:180
msgid "The verification key or user id is incorrect"
msgstr "Nieprawidłowy klucz weryfikacji lub identyfikator użytkownika."
-#: mediagoblin/auth/views.py:206
+#: mediagoblin/auth/views.py:198
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:214
+#: mediagoblin/auth/views.py:206
msgid "You've already verified your email address!"
msgstr "Twój adres e-mail już został zweryfikowany!"
-#: mediagoblin/auth/views.py:227
+#: mediagoblin/auth/views.py:219
msgid "Resent your verification email."
msgstr "Wyślij ponownie e-mail weryfikujący."
-#: mediagoblin/auth/views.py:263
+#: mediagoblin/auth/views.py:250
+msgid ""
+"If that email address (case sensitive!) is registered an email has been sent"
+" with instructions on how to change your password."
+msgstr ""
+
+#: mediagoblin/auth/views.py:261
+msgid "Couldn't find someone with that username."
+msgstr ""
+
+#: mediagoblin/auth/views.py:264
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/auth/views.py:273
+#: mediagoblin/auth/views.py:271
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/auth/views.py:285
-msgid "Couldn't find someone with that username or email."
-msgstr "Nie znaleziono nikogo o takiej nazwie użytkownika lub adresie e-mail."
-
-#: mediagoblin/auth/views.py:333
+#: mediagoblin/auth/views.py:328
msgid "You can now log in using your new password."
msgstr "Teraz możesz się zalogować używając nowe hasło."
-#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:82
+#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:93
#: mediagoblin/submit/forms.py:28 mediagoblin/submit/forms.py:47
-#: mediagoblin/user_pages/forms.py:40
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr "Tytuł"
@@ -103,8 +117,8 @@ msgid "Description of this work"
msgstr "Opis tej pracy"
#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:52
-#: mediagoblin/edit/forms.py:86 mediagoblin/submit/forms.py:32
-#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:44
+#: mediagoblin/edit/forms.py:97 mediagoblin/submit/forms.py:32
+#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:49
msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
@@ -119,11 +133,11 @@ msgstr "Znaczniki"
msgid "Separate tags by commas."
msgstr "Rozdzielaj znaczniki przecinkami."
-#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:90
+#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:101
msgid "Slug"
msgstr "Slug"
-#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:91
+#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:102
msgid "The slug can't be empty"
msgstr "Slug nie może być pusty"
@@ -162,65 +176,81 @@ msgstr "Wprowadź swoje stare hasło aby udowodnić, że to twoje konto."
msgid "New password"
msgstr "Nowe hasło"
-#: mediagoblin/edit/forms.py:71
+#: mediagoblin/edit/forms.py:74
+msgid "License preference"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:80
+msgid "This will be your default license on upload forms."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:82
msgid "Email me when others comment on my media"
msgstr "Powiadamiaj mnie e-mailem o komentarzach do moich mediów"
-#: mediagoblin/edit/forms.py:83
+#: mediagoblin/edit/forms.py:94
msgid "The title can't be empty"
msgstr "Tytuł nie może być pusty"
-#: mediagoblin/edit/forms.py:85 mediagoblin/submit/forms.py:50
-#: mediagoblin/user_pages/forms.py:43
+#: mediagoblin/edit/forms.py:96 mediagoblin/submit/forms.py:50
+#: mediagoblin/user_pages/forms.py:48
msgid "Description of this collection"
msgstr "Opis tej kolekcji"
-#: mediagoblin/edit/forms.py:92
+#: mediagoblin/edit/forms.py:103
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/views.py:65
+#: mediagoblin/edit/views.py:66
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:86
+#: mediagoblin/edit/views.py:85
msgid "You are editing another user's media. Proceed with caution."
msgstr "Edytujesz media innego użytkownika. Zachowaj ostrożność."
-#: mediagoblin/edit/views.py:156
+#: mediagoblin/edit/views.py:155
#, python-format
msgid "You added the attachment %s!"
msgstr ""
-#: mediagoblin/edit/views.py:181
+#: mediagoblin/edit/views.py:182
+msgid "You can only edit your own profile."
+msgstr ""
+
+#: mediagoblin/edit/views.py:188
msgid "You are editing a user's profile. Proceed with caution."
msgstr "Edytujesz profil innego użytkownika. Zachowaj ostrożność."
-#: mediagoblin/edit/views.py:197
+#: mediagoblin/edit/views.py:204
msgid "Profile changes saved"
msgstr "Zapisano zmiany profilu"
-#: mediagoblin/edit/views.py:226 mediagoblin/edit/views.py:246
+#: mediagoblin/edit/views.py:241
+msgid "Wrong password"
+msgstr "Nieprawidłowe hasło"
+
+#: mediagoblin/edit/views.py:252
msgid "Account settings saved"
msgstr "Zapisano ustawienia konta"
-#: mediagoblin/edit/views.py:251
-msgid "Wrong password"
-msgstr "Nieprawidłowe hasło"
+#: mediagoblin/edit/views.py:286
+msgid "You need to confirm the deletion of your account."
+msgstr ""
-#: mediagoblin/edit/views.py:287 mediagoblin/submit/views.py:211
-#: mediagoblin/user_pages/views.py:210
+#: mediagoblin/edit/views.py:322 mediagoblin/submit/views.py:142
+#: mediagoblin/user_pages/views.py:214
#, python-format
msgid "You already have a collection called \"%s\"!"
msgstr "Kolekcja \"%s\" już istnieje!"
-#: mediagoblin/edit/views.py:291
+#: mediagoblin/edit/views.py:326
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:308
+#: mediagoblin/edit/views.py:343
msgid "You are editing another user's collection. Proceed with caution."
msgstr "Edytujesz kolekcję innego użytkownika. Zachowaj ostrożność."
@@ -236,54 +266,62 @@ msgstr "Brak katalogu danych dla tego motywu\n"
msgid "However, old link directory symlink found; removed.\n"
msgstr "Znaleziono stary odnośnik symboliczny do katalogu; usunięto.\n"
-#: mediagoblin/media_types/__init__.py:60
-#: mediagoblin/media_types/__init__.py:101
+#: 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:61
+#: mediagoblin/media_types/__init__.py:102
msgid "Sorry, I don't support that file type :("
msgstr "NIestety, nie obsługujemy tego typu plików :-("
-#: mediagoblin/media_types/video/processing.py:35
+#: mediagoblin/media_types/video/processing.py:36
msgid "Video transcoding failed"
msgstr "Konwersja wideo nie powiodła się"
-#: mediagoblin/plugins/oauth/forms.py:26
-msgid "Client ID"
-msgstr "Client ID"
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
+msgid "Location"
+msgstr "Położenie"
-#: mediagoblin/plugins/oauth/forms.py:28
-msgid "Next URL"
-msgstr "Następny adres URL"
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:52
+#, python-format
+msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
+msgstr "Zobacz na <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-#: mediagoblin/plugins/oauth/forms.py:30
+#: mediagoblin/plugins/oauth/forms.py:29
msgid "Allow"
msgstr "Zezwól"
-#: mediagoblin/plugins/oauth/forms.py:31
+#: mediagoblin/plugins/oauth/forms.py:30
msgid "Deny"
msgstr "Odrzuć"
-#: mediagoblin/plugins/oauth/forms.py:35
+#: mediagoblin/plugins/oauth/forms.py:34
msgid "Name"
msgstr "Nazwa"
-#: mediagoblin/plugins/oauth/forms.py:36
+#: mediagoblin/plugins/oauth/forms.py:35
msgid "The name of the OAuth client"
msgstr "Nazwa klienta OAuth"
-#: mediagoblin/plugins/oauth/forms.py:37
+#: mediagoblin/plugins/oauth/forms.py:36
msgid "Description"
msgstr "Opis"
-#: mediagoblin/plugins/oauth/forms.py:39
+#: 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:41
+#: mediagoblin/plugins/oauth/forms.py:40
msgid "Type"
msgstr "Typ"
-#: mediagoblin/plugins/oauth/forms.py:46
+#: 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"
@@ -293,25 +331,40 @@ msgid ""
" 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)."
-#: mediagoblin/plugins/oauth/forms.py:53
+#: mediagoblin/plugins/oauth/forms.py:52
msgid "Redirect URI"
msgstr "Przekierowanie URI"
-#: mediagoblin/plugins/oauth/forms.py:55
+#: mediagoblin/plugins/oauth/forms.py:54
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."
-#: mediagoblin/plugins/oauth/forms.py:67
+#: 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:60
+#: mediagoblin/plugins/oauth/views.py:59
msgid "The client {0} has been registered!"
msgstr "Klient {0} został zarejestrowany!"
-#: mediagoblin/processing/__init__.py:138
+#: 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/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr "Dodaj"
+
+#: mediagoblin/processing/__init__.py:172
msgid "Invalid file given for media type."
msgstr "Niewłaściwy plik dla tego rodzaju mediów."
@@ -319,56 +372,74 @@ msgstr "Niewłaściwy plik dla tego rodzaju mediów."
msgid "File"
msgstr "Plik"
-#: mediagoblin/submit/views.py:57
+#: mediagoblin/submit/views.py:51
msgid "You must provide a file."
msgstr "Musisz podać plik."
-#: mediagoblin/submit/views.py:164
+#: mediagoblin/submit/views.py:97
msgid "Woohoo! Submitted!"
msgstr "Hura! Wysłano!"
-#: mediagoblin/submit/views.py:215
+#: mediagoblin/submit/views.py:146
#, python-format
msgid "Collection \"%s\" added!"
msgstr "Kolekcja \"%s\" została dodana!"
-#: mediagoblin/templates/mediagoblin/base.html:48
-msgid "MediaGoblin logo"
-msgstr "Logo MediaGoblin"
+#: mediagoblin/templates/mediagoblin/base.html:64
+msgid "Verify your email!"
+msgstr "Zweryfikuj swój adres e-mail!"
+
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "log out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:70
+#: mediagoblin/templates/mediagoblin/auth/login.html:28
+#: mediagoblin/templates/mediagoblin/auth/login.html:36
+#: mediagoblin/templates/mediagoblin/auth/login.html:54
+msgid "Log in"
+msgstr "Zaloguj siÄ™"
-#: mediagoblin/templates/mediagoblin/base.html:54
+#: mediagoblin/templates/mediagoblin/base.html:79
#, python-format
msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:60
-msgid "log out"
+#: mediagoblin/templates/mediagoblin/base.html:86
+msgid "Change account settings"
+msgstr "Zmień ustawienia konta"
+
+#: mediagoblin/templates/mediagoblin/base.html:90
+#: mediagoblin/templates/mediagoblin/base.html:105
+#: mediagoblin/templates/mediagoblin/admin/panel.html:21
+#: mediagoblin/templates/mediagoblin/admin/panel.html:26
+#: 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:93
+msgid "Log out"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:62
-#: mediagoblin/templates/mediagoblin/root.html:28
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:151
+#: mediagoblin/templates/mediagoblin/base.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:156
msgid "Add media"
msgstr "Dodaj media"
-#: mediagoblin/templates/mediagoblin/base.html:68
-msgid "Verify your email!"
-msgstr "Zweryfikuj swój adres e-mail!"
-
-#: mediagoblin/templates/mediagoblin/base.html:73
-#: mediagoblin/templates/mediagoblin/auth/login.html:28
-#: mediagoblin/templates/mediagoblin/auth/login.html:36
-#: mediagoblin/templates/mediagoblin/auth/login.html:54
-msgid "Log in"
-msgstr "Zaloguj siÄ™"
+#: mediagoblin/templates/mediagoblin/base.html:99
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
+msgid "Create new collection"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:87
+#: mediagoblin/templates/mediagoblin/base.html:122
+#, python-format
msgid ""
-"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
-"href=\"http://gnu.org/\">GNU</a> project."
-msgstr "Obsługiwane przez <a href=\"http://mediagoblin.org\">MediaGoblin</a>, projekt <a href=\"http://gnu.org/\">GNU</a>."
+"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/base.html:90
+#: mediagoblin/templates/mediagoblin/base.html:125
#, python-format
msgid ""
"Released under the <a "
@@ -380,52 +451,31 @@ msgstr "Opublikowane na licencji <a href=\"http://www.fsf.org/licensing/licenses
msgid "Image of goblin stressing out"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:25
-msgid "Actions"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/root.html:31
-msgid "Create new collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:34
-msgid "Change account settings"
-msgstr "Zmień ustawienia konta"
-
-#: mediagoblin/templates/mediagoblin/root.html:38
-#: mediagoblin/templates/mediagoblin/root.html:44
-#: mediagoblin/templates/mediagoblin/admin/panel.html:21
-#: mediagoblin/templates/mediagoblin/admin/panel.html:26
-#: 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/root.html:51
msgid "Explore"
msgstr "Odkrywaj"
-#: mediagoblin/templates/mediagoblin/root.html:53
+#: mediagoblin/templates/mediagoblin/root.html:33
msgid "Hi there, welcome to this MediaGoblin site!"
msgstr "Cześć, witaj na stronie MediaGoblin!"
-#: mediagoblin/templates/mediagoblin/root.html:55
+#: mediagoblin/templates/mediagoblin/root.html:35
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."
-#: mediagoblin/templates/mediagoblin/root.html:56
+#: mediagoblin/templates/mediagoblin/root.html:36
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/root.html:58
+#: mediagoblin/templates/mediagoblin/root.html:38
msgid "Don't have one yet? It's easy!"
msgstr "Jeszcze go nie masz? To proste!"
-#: mediagoblin/templates/mediagoblin/root.html:59
+#: mediagoblin/templates/mediagoblin/root.html:39
#, python-format
msgid ""
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Create an account at this site</a>\n"
@@ -433,7 +483,7 @@ msgid ""
" <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
msgstr "<a class=\"button_action_highlight\" href=\"%(register_url)s\">Utwórz konto w tym serwisie</a>\n lub\n <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">załóż własny serwis MediaGoblin</a>"
-#: mediagoblin/templates/mediagoblin/root.html:67
+#: mediagoblin/templates/mediagoblin/root.html:47
msgid "Most recent media"
msgstr "Najnowsze media"
@@ -539,41 +589,62 @@ msgid ""
"%(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"
+#: 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 "Edycja załączników do %(media_title)s"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:43
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:159
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:175
msgid "Attachments"
msgstr "Załączniki"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
msgid "Add attachment"
msgstr "Dodaj załącznik"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:60
+#: 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:81
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
msgid "Cancel"
msgstr "Anuluj"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:62
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:51
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
msgid "Save changes"
msgstr "Zapisz zmiany"
+#: 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:47
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
+msgid "Delete permanently"
+msgstr "Usuń na stałe"
+
#: mediagoblin/templates/mediagoblin/edit/edit.html:23
#: mediagoblin/templates/mediagoblin/edit/edit.html:35
#, python-format
@@ -586,13 +657,17 @@ msgstr "Edytowanie %(media_title)s"
msgid "Changing %(username)s's account settings"
msgstr "Zmiana ustawień konta %(username)s"
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
+msgid "Delete my account"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:29
#, python-format
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:35
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
#, python-format
msgid "Editing %(username)s's profile"
msgstr "Edycja profilu %(username)s"
@@ -608,7 +683,7 @@ 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/stl.html:136
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
msgstr "Pobierz"
@@ -631,7 +706,7 @@ msgid ""
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>!"
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:56
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:61
msgid "Original file"
msgstr "Oryginalny plik"
@@ -643,8 +718,8 @@ msgstr "plik WebM (kodek Vorbis)"
#: 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:67
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
+#: 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 "Grafika dla %(media_title)s"
@@ -689,21 +764,21 @@ msgstr ""
msgid "Object Height"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
msgid ""
-"Sorry, this video will not work because \n"
-"\t your web browser does not support HTML5 \n"
-"\t video."
-msgstr "Niestety nie można wyświetlić tego filmu, ponieważ\n\t twoja przeglądarka nie obsługuje filmów \n\t HTML5."
+"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:43
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:47
msgid ""
"You can get a modern web browser that \n"
-"\t can play this video at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
-msgstr "Możesz pobrać współczesną przeglądarkę, która obsługuje \n\t takie filmy, pod adresem <a href=\"http://getfirefox.com\">\n\t http://getfirefox.com</a>!"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:69
msgid "WebM file (640p; VP8/Vorbis)"
msgstr "plik WebM (640p; VP8/Vorbis)"
@@ -711,12 +786,6 @@ msgstr "plik WebM (640p; VP8/Vorbis)"
msgid "Add a collection"
msgstr "Dodaj kolekcjÄ™"
-#: mediagoblin/templates/mediagoblin/submit/collection.html:30
-#: mediagoblin/templates/mediagoblin/submit/start.html:34
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-msgid "Add"
-msgstr "Dodaj"
-
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
msgid "Add your media"
@@ -733,12 +802,12 @@ msgid "%(collection_title)s by <a href=\"%(user_url)s\">%(username)s</a>"
msgstr "%(collection_title)s użytkownika <a href=\"%(user_url)s\">%(username)s</a>"
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:87
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
msgid "Edit"
msgstr "Edytuj"
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:91
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
msgid "Delete"
msgstr "Usuń"
@@ -748,11 +817,6 @@ msgstr "Usuń"
msgid "Really delete %(title)s?"
msgstr "Na pewno usunąć %(title)s?"
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:47
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Delete permanently"
-msgstr "Usuń na stałe"
-
#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:31
#, python-format
msgid "Really remove %(media_title)s from %(collection_title)s?"
@@ -762,6 +826,16 @@ msgstr "Na pewno usunąć %(media_title)s z %(collection_title)s?"
msgid "Remove"
msgstr "Usuń"
+#: 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 ""
@@ -774,56 +848,53 @@ msgstr "Witaj %(username)s,\n%(comment_author)s skomentował twój wpis (%(comme
msgid "%(username)s's media"
msgstr "Media użytkownika %(username)s"
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:37
+#: 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 "media użytkownika <a href=\"%(user_url)s\">%(username)s</a>"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
#, 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:102
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:94
msgid "Add a comment"
msgstr "Dodaj komentarz"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:109
-msgid ""
-"You can use <a "
-"href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> for"
-" formatting."
-msgstr "Możesz formatować przy pomocy składni <a href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a>."
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:113
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:102
msgid "Add this comment"
msgstr "Dodaj komentarz"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:123
msgid "at"
msgstr "na"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:152
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:144
#, python-format
msgid ""
"<h3>Added on</h3>\n"
" <p>%(date)s</p>"
msgstr "<h3>Dodane</h3>\n <p>%(date)s</p>"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:202
-msgid "Add media to collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
#, python-format
-msgid "Add %(title)s to collection"
-msgstr "Dodaj %(title)s do kolekcji"
+msgid "Add “%(media_title)s†to a collection"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:51
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
msgstr "+"
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
msgstr "Dodaj nowÄ… kolekcjÄ™"
@@ -885,27 +956,31 @@ msgstr "Jeśli jesteś tą osobą, ale zgubiłeś swój e-mail weryfikujący, to
msgid "Here's a spot to tell others about yourself."
msgstr "W tym miejscu można się przedstawić innym."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:101
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:100
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:117
msgid "Edit profile"
msgstr "Edytuj profil"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:105
msgid "This user hasn't filled in their profile (yet)."
msgstr "Ten użytkownik nie wypełnił (jeszcze) opisu swojego profilu."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:124
+msgid "Browse collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:137
#, python-format
msgid "View all of %(username)s's media"
msgstr "Zobacz wszystkie media użytkownika %(username)s"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:145
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:150
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:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:162
#: 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..."
@@ -915,28 +990,24 @@ msgstr "Tu nie ma jeszcze żadnych mediów..."
msgid "(remove)"
msgstr ""
-#: mediagoblin/templates/mediagoblin/utils/collections.html:20
-#, python-format
-msgid "In collections (%(collected)s)"
-msgstr "W kolekcjach (%(collected)s)"
+#: 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 "ikona kanału"
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:23
msgid "Atom feed"
msgstr "Kanał Atom"
-#: mediagoblin/templates/mediagoblin/utils/geolocation_map.html:25
-msgid "Location"
-msgstr "Położenie"
-
-#: mediagoblin/templates/mediagoblin/utils/geolocation_map.html:53
-#, python-format
-msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-msgstr "Zobacz na <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
msgstr "Wszystkie prawa zastrzeżone"
@@ -967,49 +1038,64 @@ msgstr "starsze"
msgid "Tagged with"
msgstr "Znaczniki:"
-#: mediagoblin/tools/exif.py:78
+#: mediagoblin/tools/exif.py:80
msgid "Could not read the image file."
msgstr "Nie udało się odczytać pliku grafiki."
-#: mediagoblin/tools/response.py:30
+#: mediagoblin/tools/response.py:35
msgid "Oops!"
msgstr "Ups!"
-#: mediagoblin/tools/response.py:31
+#: mediagoblin/tools/response.py:36
msgid "An error occured"
msgstr ""
-#: mediagoblin/tools/response.py:46
+#: mediagoblin/tools/response.py:51
msgid "Operation not allowed"
msgstr ""
-#: mediagoblin/tools/response.py:47
+#: mediagoblin/tools/response.py:52
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:55
+#: mediagoblin/tools/response.py:60
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/user_pages/forms.py:28
+#: 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\">Markdown</a> for"
+" formatting."
+msgstr "Możesz formatować przy pomocy składni <a href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a>."
+
+#: mediagoblin/user_pages/forms.py:31
msgid "I am sure I want to delete this"
msgstr "Na pewno chcę to usunąć"
-#: mediagoblin/user_pages/forms.py:32
+#: mediagoblin/user_pages/forms.py:35
msgid "I am sure I want to remove this item from the collection"
msgstr "Na pewno chcę usunąć ten element z kolekcji"
-#: mediagoblin/user_pages/forms.py:35
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:40
msgid "-- Select --"
msgstr "-- wybierz --"
-#: mediagoblin/user_pages/forms.py:37
+#: mediagoblin/user_pages/forms.py:42
msgid "Include a note"
msgstr "Dodaj notatkÄ™"
@@ -1017,74 +1103,69 @@ msgstr "Dodaj notatkÄ™"
msgid "commented on your post"
msgstr "komentarze do twojego wpisu"
-#: mediagoblin/user_pages/views.py:156
+#: mediagoblin/user_pages/views.py:166
msgid "Oops, your comment was empty."
msgstr "Ups, twój komentarz nie zawierał treści."
-#: mediagoblin/user_pages/views.py:162
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
msgstr "Twój komentarz został opublikowany!"
-#: mediagoblin/user_pages/views.py:230
+#: mediagoblin/user_pages/views.py:197
+msgid "Please check your entries and try again."
+msgstr "Sprawdź swoje wpisy i spróbuj ponownie."
+
+#: mediagoblin/user_pages/views.py:237
msgid "You have to select or add a collection"
msgstr "Musisz wybrać lub dodać kolekcję"
-#: mediagoblin/user_pages/views.py:238
+#: mediagoblin/user_pages/views.py:248
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr "\"%s\" już obecne w kolekcji \"%s\""
-#: mediagoblin/user_pages/views.py:253
+#: mediagoblin/user_pages/views.py:264
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr "\"%s\" dodano do kolekcji \"%s\""
-#: mediagoblin/user_pages/views.py:261
-msgid "Please check your entries and try again."
-msgstr "Sprawdź swoje wpisy i spróbuj ponownie."
-
-#: mediagoblin/user_pages/views.py:292
-msgid ""
-"Some of the files with this entry seem to be missing. Deleting anyway."
-msgstr "Część plików z tego wpisu wygląda na nieistniejące. Trwa usuwanie."
-
-#: mediagoblin/user_pages/views.py:297
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
msgstr "Media zostały usunięte."
-#: mediagoblin/user_pages/views.py:304
+#: mediagoblin/user_pages/views.py:293
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/user_pages/views.py:312
+#: mediagoblin/user_pages/views.py:301
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:370
+#: mediagoblin/user_pages/views.py:375
msgid "You deleted the item from the collection."
msgstr "Element został usunięty z kolekcji."
-#: mediagoblin/user_pages/views.py:374
+#: mediagoblin/user_pages/views.py:379
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:384
+#: mediagoblin/user_pages/views.py:389
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:417
+#: mediagoblin/user_pages/views.py:422
#, python-format
msgid "You deleted the collection \"%s\""
msgstr "Usunięto kolekcję \"%s\""
-#: mediagoblin/user_pages/views.py:424
+#: mediagoblin/user_pages/views.py:429
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:434
+#: mediagoblin/user_pages/views.py:439
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
index 2cad018a..af50e027 100644
--- a/mediagoblin/i18n/pt_BR/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/pt_BR/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/pt_BR/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/pt_BR/LC_MESSAGES/mediagoblin.po
index 66a28516..3b2ed203 100644
--- a/mediagoblin/i18n/pt_BR/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/pt_BR/LC_MESSAGES/mediagoblin.po
@@ -1,16 +1,18 @@
# Translations template for PROJECT.
-# Copyright (C) 2012 ORGANIZATION
+# Copyright (C) 2013 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
+# Rafael Ferreira <rafael.f.f1@gmail.com>, 2013.
# <snd.noise@gmail.com>, 2011.
# ufa <ufa@technotroll.org>, 2011.
+# Vinicius SM <viniciussm@rocketmail.com>, 2013.
msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://issues.mediagoblin.org/\n"
-"POT-Creation-Date: 2012-12-20 09:18-0600\n"
-"PO-Revision-Date: 2012-12-20 15:14+0000\n"
+"POT-Creation-Date: 2013-03-04 18:04-0600\n"
+"PO-Revision-Date: 2013-03-05 00:04+0000\n"
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/mediagoblin/language/pt_BR/)\n"
"MIME-Version: 1.0\n"
@@ -20,82 +22,96 @@ msgstr ""
"Language: pt_BR\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:41
+#: mediagoblin/auth/forms.py:28
+msgid "Invalid User name or email address."
+msgstr "Nome de usuário ou email inválido."
+
+#: mediagoblin/auth/forms.py:29
+msgid "This field does not take email addresses."
+msgstr "Este campo não aceita endereços de email."
+
+#: mediagoblin/auth/forms.py:30
+msgid "This field requires an email address."
+msgstr "Este campo requer um endereço de email."
+
+#: mediagoblin/auth/forms.py:52 mediagoblin/auth/forms.py:67
msgid "Username"
msgstr "Nome de Usuário"
-#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:45
+#: mediagoblin/auth/forms.py:56 mediagoblin/auth/forms.py:71
msgid "Password"
msgstr "Senha"
-#: mediagoblin/auth/forms.py:34
+#: mediagoblin/auth/forms.py:60
msgid "Email address"
msgstr "Endereço de email"
-#: mediagoblin/auth/forms.py:51
+#: mediagoblin/auth/forms.py:78
msgid "Username or email"
-msgstr ""
+msgstr "Nome de usuário ou email"
-#: mediagoblin/auth/forms.py:58
-msgid "Incorrect input"
-msgstr ""
-
-#: mediagoblin/auth/views.py:55
+#: mediagoblin/auth/views.py:54
msgid "Sorry, registration is disabled on this instance."
msgstr "Desculpa, o registro está desativado neste momento."
-#: mediagoblin/auth/views.py:75
+#: mediagoblin/auth/views.py:68
msgid "Sorry, a user with that name already exists."
msgstr "Desculpe, um usuário com este nome já existe."
-#: mediagoblin/auth/views.py:79
+#: mediagoblin/auth/views.py:72
msgid "Sorry, a user with that email address already exists."
-msgstr "Desculpe, um usuário com esse email já esta cadastrado"
+msgstr "Desculpe, um usuário com esse email já está cadastrado"
-#: mediagoblin/auth/views.py:182
+#: mediagoblin/auth/views.py:174
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
msgstr "O seu endereço de e-mail foi verificado. Você pode agora fazer login, editar seu perfil, e enviar imagens!"
-#: mediagoblin/auth/views.py:188
+#: mediagoblin/auth/views.py:180
msgid "The verification key or user id is incorrect"
msgstr "A chave de verificação ou nome usuário estão incorretos."
-#: mediagoblin/auth/views.py:206
+#: mediagoblin/auth/views.py:198
msgid "You must be logged in so we know who to send the email to!"
-msgstr " "
+msgstr "Você precisa entrar primeiro para sabermos para quem mandar o email!"
-#: mediagoblin/auth/views.py:214
+#: mediagoblin/auth/views.py:206
msgid "You've already verified your email address!"
-msgstr "Você já verifico seu email!"
+msgstr "Você já verificou seu email!"
-#: mediagoblin/auth/views.py:227
+#: mediagoblin/auth/views.py:219
msgid "Resent your verification email."
-msgstr "O email de verificação foi reenviado."
+msgstr "O email de verificação foi enviado novamente."
-#: mediagoblin/auth/views.py:263
+#: mediagoblin/auth/views.py:250
msgid ""
-"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/auth/views.py:273
+#: mediagoblin/auth/views.py:261
+msgid "Couldn't find someone with that username."
+msgstr "Não foi possível encontrar alguém com esse nome de usuário."
+
+#: mediagoblin/auth/views.py:264
+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/auth/views.py:271
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 o email da sua conta não foi confirmado."
-#: mediagoblin/auth/views.py:285
-msgid "Couldn't find someone with that username or email."
-msgstr ""
-
-#: mediagoblin/auth/views.py:333
+#: mediagoblin/auth/views.py:328
msgid "You can now log in using your new password."
-msgstr ""
+msgstr "Agora você pode entrar usando sua nova senha."
-#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:82
+#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:93
#: mediagoblin/submit/forms.py:28 mediagoblin/submit/forms.py:47
-#: mediagoblin/user_pages/forms.py:40
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr "Título"
@@ -104,13 +120,13 @@ msgid "Description of this work"
msgstr "Descrição desse trabalho"
#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:52
-#: mediagoblin/edit/forms.py:86 mediagoblin/submit/forms.py:32
-#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:44
+#: mediagoblin/edit/forms.py:97 mediagoblin/submit/forms.py:32
+#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:49
msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
" Markdown</a> for formatting."
-msgstr ""
+msgstr "Você pode usar\n<a href=\"http://daringfireball.net/projects/markdown/basics\">\nMarkdown</a> para formatação."
#: mediagoblin/edit/forms.py:33 mediagoblin/submit/forms.py:36
msgid "Tags"
@@ -118,13 +134,13 @@ msgstr "Etiquetas"
#: mediagoblin/edit/forms.py:35 mediagoblin/submit/forms.py:38
msgid "Separate tags by commas."
-msgstr ""
+msgstr "Separe as etiquetas com vírgulas."
-#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:90
+#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:101
msgid "Slug"
msgstr "Arquivo"
-#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:91
+#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:102
msgid "The slug can't be empty"
msgstr "O arquivo não pode estar vazio"
@@ -132,12 +148,12 @@ msgstr "O arquivo não pode estar vazio"
msgid ""
"The title part of this media's address. You usually don't need to change "
"this."
-msgstr ""
+msgstr "A parte do título do endereço dessa mídia. Geralmente você não precisa mudar isso."
#: mediagoblin/edit/forms.py:44 mediagoblin/submit/forms.py:41
#: mediagoblin/templates/mediagoblin/utils/license.html:20
msgid "License"
-msgstr ""
+msgstr "Licença"
#: mediagoblin/edit/forms.py:50
msgid "Bio"
@@ -149,7 +165,7 @@ msgstr "Website"
#: mediagoblin/edit/forms.py:58
msgid "This address contains errors"
-msgstr ""
+msgstr "Este endereço contém erros"
#: mediagoblin/edit/forms.py:63
msgid "Old password"
@@ -157,77 +173,93 @@ msgstr "Senha antiga"
#: mediagoblin/edit/forms.py:64
msgid "Enter your old password to prove you own this account."
-msgstr ""
+msgstr "Digite sua senha antiga para provar que esta conta é sua."
#: mediagoblin/edit/forms.py:67
msgid "New password"
-msgstr ""
+msgstr "Nova senha"
+
+#: mediagoblin/edit/forms.py:74
+msgid "License preference"
+msgstr "Licença preferida"
+
+#: mediagoblin/edit/forms.py:80
+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:71
+#: mediagoblin/edit/forms.py:82
msgid "Email me when others comment on my media"
-msgstr ""
+msgstr "Me enviar um email quando outras pessoas comentarem em minhas mídias"
-#: mediagoblin/edit/forms.py:83
+#: mediagoblin/edit/forms.py:94
msgid "The title can't be empty"
-msgstr ""
+msgstr "O título não pode ficar vazio"
-#: mediagoblin/edit/forms.py:85 mediagoblin/submit/forms.py:50
-#: mediagoblin/user_pages/forms.py:43
+#: mediagoblin/edit/forms.py:96 mediagoblin/submit/forms.py:50
+#: mediagoblin/user_pages/forms.py:48
msgid "Description of this collection"
-msgstr ""
+msgstr "Descrição desta coleção"
-#: mediagoblin/edit/forms.py:92
+#: mediagoblin/edit/forms.py:103
msgid ""
"The title part of this collection's address. You usually don't need to "
"change this."
-msgstr ""
+msgstr "A parte do título do endereço dessa coleção. Geralmente você não precisa mudar isso."
-#: mediagoblin/edit/views.py:65
+#: mediagoblin/edit/views.py:66
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:86
+#: mediagoblin/edit/views.py:85
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:156
+#: mediagoblin/edit/views.py:155
#, python-format
msgid "You added the attachment %s!"
-msgstr ""
+msgstr "Você adicionou o anexo %s!"
+
+#: mediagoblin/edit/views.py:182
+msgid "You can only edit your own profile."
+msgstr "Você só pode editar o seu próprio perfil."
-#: mediagoblin/edit/views.py:181
+#: mediagoblin/edit/views.py:188
msgid "You are editing a user's profile. Proceed with caution."
msgstr "Você está editando um perfil de usuário. Tenha cuidado."
-#: mediagoblin/edit/views.py:197
+#: mediagoblin/edit/views.py:204
msgid "Profile changes saved"
-msgstr ""
+msgstr "As mudanças no perfil foram salvas"
-#: mediagoblin/edit/views.py:226 mediagoblin/edit/views.py:246
-msgid "Account settings saved"
-msgstr ""
-
-#: mediagoblin/edit/views.py:251
+#: mediagoblin/edit/views.py:241
msgid "Wrong password"
msgstr "Senha errada"
-#: mediagoblin/edit/views.py:287 mediagoblin/submit/views.py:211
-#: mediagoblin/user_pages/views.py:210
+#: mediagoblin/edit/views.py:252
+msgid "Account settings saved"
+msgstr "As mudanças na conta foram salvas"
+
+#: mediagoblin/edit/views.py:286
+msgid "You need to confirm the deletion of your account."
+msgstr "Você precisa confirmar a exclusão da sua conta."
+
+#: mediagoblin/edit/views.py:322 mediagoblin/submit/views.py:142
+#: mediagoblin/user_pages/views.py:214
#, python-format
msgid "You already have a collection called \"%s\"!"
-msgstr ""
+msgstr "Você já tem uma coleção chamada \"%s\"!"
-#: mediagoblin/edit/views.py:291
+#: mediagoblin/edit/views.py:326
msgid "A collection with that slug already exists for this user."
-msgstr ""
+msgstr "Já existe uma coleção com este arquivo para este usuário."
-#: mediagoblin/edit/views.py:308
+#: mediagoblin/edit/views.py:343
msgid "You are editing another user's collection. Proceed with caution."
-msgstr ""
+msgstr "Você está editando a coleção de um outro usuário. Prossiga com cuidado."
#: mediagoblin/gmg_commands/theme.py:58
msgid "Cannot link theme... no theme set\n"
-msgstr ""
+msgstr "Não é possível fazer link de tema... nenhum tema definido\n"
#: mediagoblin/gmg_commands/theme.py:71
msgid "No asset directory for this theme\n"
@@ -237,54 +269,62 @@ msgstr ""
msgid "However, old link directory symlink found; removed.\n"
msgstr ""
-#: mediagoblin/media_types/__init__.py:60
-#: mediagoblin/media_types/__init__.py:101
+#: 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:61
+#: mediagoblin/media_types/__init__.py:102
msgid "Sorry, I don't support that file type :("
-msgstr ""
+msgstr "Desculpe, não tenho suporte a este tipo de arquivo :("
-#: mediagoblin/media_types/video/processing.py:35
+#: mediagoblin/media_types/video/processing.py:36
msgid "Video transcoding failed"
-msgstr ""
+msgstr "Conversão do vídeo falhou"
-#: mediagoblin/plugins/oauth/forms.py:26
-msgid "Client ID"
-msgstr ""
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
+msgid "Location"
+msgstr "Localização"
-#: mediagoblin/plugins/oauth/forms.py:28
-msgid "Next URL"
-msgstr ""
+#: 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/oauth/forms.py:30
+#: mediagoblin/plugins/oauth/forms.py:29
msgid "Allow"
-msgstr ""
+msgstr "Permitir"
-#: mediagoblin/plugins/oauth/forms.py:31
+#: mediagoblin/plugins/oauth/forms.py:30
msgid "Deny"
-msgstr ""
+msgstr "Negar"
-#: mediagoblin/plugins/oauth/forms.py:35
+#: mediagoblin/plugins/oauth/forms.py:34
msgid "Name"
-msgstr ""
+msgstr "Nome"
-#: mediagoblin/plugins/oauth/forms.py:36
+#: mediagoblin/plugins/oauth/forms.py:35
msgid "The name of the OAuth client"
-msgstr ""
+msgstr "O nome do cliente OAuth"
-#: mediagoblin/plugins/oauth/forms.py:37
+#: mediagoblin/plugins/oauth/forms.py:36
msgid "Description"
-msgstr ""
+msgstr "Descrição"
-#: mediagoblin/plugins/oauth/forms.py:39
+#: 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:41
+#: mediagoblin/plugins/oauth/forms.py:40
msgid "Type"
-msgstr ""
+msgstr "Tipo"
-#: mediagoblin/plugins/oauth/forms.py:46
+#: 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"
@@ -294,25 +334,40 @@ msgid ""
" JavaScript client)."
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:53
+#: mediagoblin/plugins/oauth/forms.py:52
msgid "Redirect URI"
-msgstr ""
+msgstr "Redirecionar URI"
-#: mediagoblin/plugins/oauth/forms.py:55
+#: 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:67
+#: mediagoblin/plugins/oauth/forms.py:66
msgid "This field is required for public clients"
-msgstr ""
+msgstr "Este campo é necessário para clientes públicos"
-#: mediagoblin/plugins/oauth/views.py:60
+#: mediagoblin/plugins/oauth/views.py:59
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 ""
-#: mediagoblin/processing/__init__.py:138
+#: 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/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr "Adicionar"
+
+#: mediagoblin/processing/__init__.py:172
msgid "Invalid file given for media type."
msgstr "Arquivo inválido para esse tipo de mídia"
@@ -320,121 +375,118 @@ msgstr "Arquivo inválido para esse tipo de mídia"
msgid "File"
msgstr "Arquivo"
-#: mediagoblin/submit/views.py:57
+#: mediagoblin/submit/views.py:51
msgid "You must provide a file."
msgstr "Você deve fornecer um arquivo."
-#: mediagoblin/submit/views.py:164
+#: mediagoblin/submit/views.py:97
msgid "Woohoo! Submitted!"
msgstr "Eba! Enviado!"
-#: mediagoblin/submit/views.py:215
+#: mediagoblin/submit/views.py:146
#, python-format
msgid "Collection \"%s\" added!"
-msgstr ""
+msgstr "Coleção \"%s\" adicionada!"
-#: mediagoblin/templates/mediagoblin/base.html:48
-msgid "MediaGoblin logo"
-msgstr "Logo MediaGoblin"
+#: mediagoblin/templates/mediagoblin/base.html:64
+msgid "Verify your email!"
+msgstr "Verifique seu email!"
+
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "log out"
+msgstr "sair"
+
+#: mediagoblin/templates/mediagoblin/base.html:70
+#: mediagoblin/templates/mediagoblin/auth/login.html:28
+#: mediagoblin/templates/mediagoblin/auth/login.html:36
+#: mediagoblin/templates/mediagoblin/auth/login.html:54
+msgid "Log in"
+msgstr "Entrar"
-#: mediagoblin/templates/mediagoblin/base.html:54
+#: mediagoblin/templates/mediagoblin/base.html:79
#, python-format
msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
-msgstr ""
+msgstr "Conta de <a href=\"%(user_url)s\">%(user_name)s</a>"
-#: mediagoblin/templates/mediagoblin/base.html:60
-msgid "log out"
+#: mediagoblin/templates/mediagoblin/base.html:86
+msgid "Change account settings"
+msgstr "Mudar configurações da conta"
+
+#: mediagoblin/templates/mediagoblin/base.html:90
+#: mediagoblin/templates/mediagoblin/base.html:105
+#: mediagoblin/templates/mediagoblin/admin/panel.html:21
+#: mediagoblin/templates/mediagoblin/admin/panel.html:26
+#: 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:93
+msgid "Log out"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:62
-#: mediagoblin/templates/mediagoblin/root.html:28
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:151
+#: mediagoblin/templates/mediagoblin/base.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:156
msgid "Add media"
msgstr "Adicionar mídia"
-#: mediagoblin/templates/mediagoblin/base.html:68
-msgid "Verify your email!"
-msgstr "Verifique seu email!"
-
-#: mediagoblin/templates/mediagoblin/base.html:73
-#: mediagoblin/templates/mediagoblin/auth/login.html:28
-#: mediagoblin/templates/mediagoblin/auth/login.html:36
-#: mediagoblin/templates/mediagoblin/auth/login.html:54
-msgid "Log in"
-msgstr "Entrar"
+#: mediagoblin/templates/mediagoblin/base.html:99
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
+msgid "Create new collection"
+msgstr "Criar nova coleção"
-#: mediagoblin/templates/mediagoblin/base.html:87
+#: mediagoblin/templates/mediagoblin/base.html:122
+#, python-format
msgid ""
-"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
-"href=\"http://gnu.org/\">GNU</a> project."
+"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/base.html:90
+#: mediagoblin/templates/mediagoblin/base.html:125
#, 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 ""
+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/error.html:24
msgid "Image of goblin stressing out"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:25
-msgid "Actions"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/root.html:31
-msgid "Create new collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:34
-msgid "Change account settings"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:38
-#: mediagoblin/templates/mediagoblin/root.html:44
-#: mediagoblin/templates/mediagoblin/admin/panel.html:21
-#: mediagoblin/templates/mediagoblin/admin/panel.html:26
-#: 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/root.html:51
msgid "Explore"
msgstr "Explorar"
-#: mediagoblin/templates/mediagoblin/root.html:53
+#: mediagoblin/templates/mediagoblin/root.html:33
msgid "Hi there, welcome to this MediaGoblin site!"
-msgstr "Olá, bemvindo ao site de MediaGoblin."
+msgstr "Olá, bem-vindo a este site MediaGoblin."
-#: mediagoblin/templates/mediagoblin/root.html:55
+#: mediagoblin/templates/mediagoblin/root.html:35
msgid ""
"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
"extraordinarily great piece of media hosting software."
-msgstr ""
+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/root.html:56
+#: mediagoblin/templates/mediagoblin/root.html:36
msgid ""
"To add your own media, place comments, and more, you can log in with your "
"MediaGoblin account."
-msgstr ""
+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/root.html:58
+#: mediagoblin/templates/mediagoblin/root.html:38
msgid "Don't have one yet? It's easy!"
-msgstr " "
+msgstr " Ainda não tem uma conta? É facil!"
-#: mediagoblin/templates/mediagoblin/root.html:59
+#: mediagoblin/templates/mediagoblin/root.html:39
#, python-format
msgid ""
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Create an account at this site</a>\n"
" or\n"
" <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
-msgstr ""
+msgstr "<a class=\"button_action_highlight\" href=\"%(register_url)s\">Criar uma conta neste site</a>\nou\n<a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Configurar MediaGoblin em seu próprio servidor</a>"
-#: mediagoblin/templates/mediagoblin/root.html:67
+#: mediagoblin/templates/mediagoblin/root.html:47
msgid "Most recent media"
msgstr "Mídia mais recente"
@@ -461,25 +513,25 @@ msgstr "Esses envios não foram processados:"
#: mediagoblin/templates/mediagoblin/admin/panel.html:90
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
msgid "No failed entries!"
-msgstr ""
+msgstr "Nenhuma entrada falhou!"
#: mediagoblin/templates/mediagoblin/admin/panel.html:92
msgid "Last 10 successful uploads"
-msgstr ""
+msgstr "Últimos 10 envios bem sucedidos"
#: mediagoblin/templates/mediagoblin/admin/panel.html:112
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
msgid "No processed entries, yet!"
-msgstr ""
+msgstr "Ainda não há entradas processadas!"
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:28
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:36
msgid "Set your new password"
-msgstr ""
+msgstr "Defina a sua nova senha"
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:39
msgid "Set password"
-msgstr ""
+msgstr "Definir senha"
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:23
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:31
@@ -540,41 +592,62 @@ msgid ""
"%(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/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 ""
+msgstr "Editando os anexos de %(media_title)s"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:43
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:159
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:175
msgid "Attachments"
-msgstr ""
+msgstr "Anexos"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
msgid "Add attachment"
-msgstr ""
+msgstr "Adicionar anexo"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:60
+#: 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:81
+#: 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:62
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:51
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
msgid "Save changes"
msgstr "Salvar mudanças"
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
+#, python-format
+msgid "Really delete user '%(user_name)s' and all related media/comments?"
+msgstr "Realmente deletar 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 deletar minha conta"
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:47
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
+msgid "Delete permanently"
+msgstr "Deletar permanentemente"
+
#: mediagoblin/templates/mediagoblin/edit/edit.html:23
#: mediagoblin/templates/mediagoblin/edit/edit.html:35
#, python-format
@@ -585,15 +658,19 @@ msgstr "Editando %(media_title)s"
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
#, python-format
msgid "Changing %(username)s's account settings"
-msgstr ""
+msgstr "Alterando as configurações da conta de %(username)s"
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
+msgid "Delete my account"
+msgstr "Deletar minha conta"
#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:29
#, python-format
msgid "Editing %(collection_title)s"
-msgstr ""
+msgstr "Editando %(collection_title)s"
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:23
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
#, python-format
msgid "Editing %(username)s's profile"
msgstr "Editando perfil de %(username)s"
@@ -604,14 +681,14 @@ msgstr "Editando perfil de %(username)s"
#: mediagoblin/templates/mediagoblin/listings/tag.html:35
#, python-format
msgid "Media tagged with: %(tag_name)s"
-msgstr ""
+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/stl.html:136
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
-msgstr ""
+msgstr "Baixar"
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
msgid "Original"
@@ -622,124 +699,118 @@ msgid ""
"Sorry, this audio will not work because \n"
"\tyour web browser does not support HTML5 \n"
"\taudio."
-msgstr ""
+msgstr "Desculpe, este áudio não irá reproduzir 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 ""
+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/video.html:56
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:61
msgid "Original file"
-msgstr ""
+msgstr "Arquivo original"
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:63
msgid "WebM file (Vorbis codec)"
-msgstr ""
+msgstr "Arquivo WebM (codec Vorbis)"
#: 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:67
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
+#: 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 ""
+msgstr "Imagem para %(media_title)s"
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:112
msgid "Toggle Rotate"
-msgstr ""
+msgstr "Alternar Rotação"
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:113
msgid "Perspective"
-msgstr ""
+msgstr "Perspectiva"
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:116
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
msgid "Front"
-msgstr ""
+msgstr "Frente"
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:121
msgid "Top"
-msgstr ""
+msgstr "Cima"
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:124
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:125
msgid "Side"
-msgstr ""
+msgstr "Lado"
#: 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:138
msgid "Download model"
-msgstr ""
+msgstr "Baixar o modelo"
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
msgid "File Format"
-msgstr ""
+msgstr "Formato de Arquivo"
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
msgid "Object Height"
-msgstr ""
+msgstr "Altura do Objeto"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
msgid ""
-"Sorry, this video will not work because \n"
-"\t your web browser does not support HTML5 \n"
-"\t video."
-msgstr ""
+"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 suporta vídeo\n HTML5."
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:43
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:47
msgid ""
"You can get a modern web browser that \n"
-"\t can play this video at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
-msgstr ""
+" 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:59
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:69
msgid "WebM file (640p; VP8/Vorbis)"
-msgstr ""
+msgstr "Arquivo WebM (640p, VP8/Vorbis)"
#: mediagoblin/templates/mediagoblin/submit/collection.html:26
msgid "Add a collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/submit/collection.html:30
-#: mediagoblin/templates/mediagoblin/submit/start.html:34
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-msgid "Add"
-msgstr ""
+msgstr "Adicionar uma coleção"
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
msgid "Add your media"
-msgstr ""
+msgstr "Adicionar sua mídia"
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:30
#, python-format
msgid "%(collection_title)s (%(username)s's collection)"
-msgstr ""
+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 ""
+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:87
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
msgid "Edit"
msgstr "Editar"
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:91
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
msgid "Delete"
msgstr "Apagar"
@@ -749,84 +820,86 @@ msgstr "Apagar"
msgid "Really delete %(title)s?"
msgstr "Realmente apagar %(title)s ?"
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:47
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Delete permanently"
-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 ""
+msgstr "Realmente remover %(media_title)s de %(collection_title)s?"
#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:53
msgid "Remove"
-msgstr ""
+msgstr "Apagar"
+
+#: 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 ""
+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 ""
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:37
+#: 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:46
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
#, python-format
msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
-msgstr ""
+msgstr "■Vendo mídia de <a href=\"%(user_url)s\">%(username)s</a>"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:102
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:94
msgid "Add a comment"
-msgstr ""
+msgstr "Adicionar um comentário"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:109
-msgid ""
-"You can use <a "
-"href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> for"
-" formatting."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:113
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:102
msgid "Add this comment"
-msgstr ""
+msgstr "Adicionar este comentário"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:123
msgid "at"
-msgstr ""
+msgstr "em"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:152
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:144
#, python-format
msgid ""
"<h3>Added on</h3>\n"
" <p>%(date)s</p>"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:202
-msgid "Add media to collection"
-msgstr ""
+msgstr "<h3>Adicionado em</h3>\n<p>%(date)s</p>"
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
#, python-format
-msgid "Add %(title)s to collection"
-msgstr ""
+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:51
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
-msgstr ""
+msgstr "+"
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
-msgstr ""
+msgstr "Adicionar uma nova coleção"
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
msgid ""
@@ -835,7 +908,7 @@ msgstr "Você pode verificar como a mídia esta sendo processada para sua galeri
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:89
msgid "Your last 10 successful uploads"
-msgstr ""
+msgstr "Seus últimos 10 envios bem sucedidos"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:31
#: mediagoblin/templates/mediagoblin/user_pages/user.html:89
@@ -854,7 +927,7 @@ msgstr "Verificação de email necessária"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
msgid "Almost done! Your account still needs to be activated."
-msgstr "Quase pronto! Sua conta ainda precisa ser ativada"
+msgstr "Quase pronto! Sua conta ainda precisa ser ativada."
#: mediagoblin/templates/mediagoblin/user_pages/user.html:58
msgid ""
@@ -886,27 +959,31 @@ msgstr "Se você é essa pessoa, mas você perdeu seu e-mail de verificação, v
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:101
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:100
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:117
msgid "Edit profile"
msgstr "Editar perfil"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:105
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:132
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:124
+msgid "Browse collections"
+msgstr "Ver coleções"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:137
#, 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:145
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:150
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:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:162
#: 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..."
@@ -914,41 +991,37 @@ msgstr "Aparentemente não há nenhuma mídia aqui ainda..."
#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
msgid "(remove)"
+msgstr "(apagar)"
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:21
+msgid "Collected in"
msgstr ""
-#: mediagoblin/templates/mediagoblin/utils/collections.html:20
-#, python-format
-msgid "In collections (%(collected)s)"
+#: 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 "í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/geolocation_map.html:25
-msgid "Location"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/utils/geolocation_map.html:53
-#, python-format
-msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
-msgstr ""
+msgstr "Todos os direitos reservados"
#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
msgid "↠Newer"
-msgstr ""
+msgstr "↠Novos"
#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
msgid "Older →"
-msgstr ""
+msgstr "Antigos →"
#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
msgid "Go to page:"
@@ -957,135 +1030,145 @@ msgstr "Ir a página:"
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:28
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:33
msgid "newer"
-msgstr ""
+msgstr "mais nova"
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:39
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:44
msgid "older"
-msgstr ""
+msgstr "mais antiga"
#: mediagoblin/templates/mediagoblin/utils/tags.html:20
msgid "Tagged with"
-msgstr ""
+msgstr "Etiquetas"
-#: mediagoblin/tools/exif.py:78
+#: mediagoblin/tools/exif.py:80
msgid "Could not read the image file."
-msgstr ""
+msgstr "Não foi possível ler o arquivo de imagem."
-#: mediagoblin/tools/response.py:30
+#: mediagoblin/tools/response.py:35
msgid "Oops!"
msgstr "Oops"
-#: mediagoblin/tools/response.py:31
+#: mediagoblin/tools/response.py:36
msgid "An error occured"
-msgstr ""
+msgstr "Um erro ocorreu"
-#: mediagoblin/tools/response.py:46
+#: mediagoblin/tools/response.py:51
msgid "Operation not allowed"
-msgstr ""
+msgstr "Operação não permitida"
-#: mediagoblin/tools/response.py:47
+#: mediagoblin/tools/response.py:52
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 "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 deletar todas as contas de usuários?"
-#: mediagoblin/tools/response.py:55
+#: mediagoblin/tools/response.py:60
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 "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 deletada."
+
+#: mediagoblin/user_pages/forms.py:23
+msgid "Comment"
+msgstr "Comentário"
-#: mediagoblin/user_pages/forms.py:28
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use <a "
+"href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> for"
+" formatting."
+msgstr "Você pode usar <a href=\"http://daringfireball.net/projects/markdown/basics\">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 pagar isso"
+msgstr "Eu tenho certeza de que quero apagar isso"
-#: mediagoblin/user_pages/forms.py:32
+#: mediagoblin/user_pages/forms.py:35
msgid "I am sure I want to remove this item from the collection"
-msgstr ""
+msgstr "Tenho certeza que quero remover este item da coleção"
-#: mediagoblin/user_pages/forms.py:35
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr "Coleção"
+
+#: mediagoblin/user_pages/forms.py:40
msgid "-- Select --"
msgstr ""
-#: mediagoblin/user_pages/forms.py:37
+#: mediagoblin/user_pages/forms.py:42
msgid "Include a note"
-msgstr ""
+msgstr "Incluir uma nota"
#: mediagoblin/user_pages/lib.py:56
msgid "commented on your post"
-msgstr ""
+msgstr "comentou na sua publicação"
-#: mediagoblin/user_pages/views.py:156
+#: mediagoblin/user_pages/views.py:166
msgid "Oops, your comment was empty."
-msgstr "Opa, seu comentáio estava vazio."
+msgstr "Ops, seu comentário estava vazio."
-#: mediagoblin/user_pages/views.py:162
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
msgstr "Seu comentário foi postado!"
-#: mediagoblin/user_pages/views.py:230
-msgid "You have to select or add a collection"
+#: mediagoblin/user_pages/views.py:197
+msgid "Please check your entries and try again."
msgstr ""
-#: mediagoblin/user_pages/views.py:238
+#: mediagoblin/user_pages/views.py:237
+msgid "You have to select or add a collection"
+msgstr "Você deve selecionar ou adicionar uma coleção"
+
+#: mediagoblin/user_pages/views.py:248
#, python-format
msgid "\"%s\" already in collection \"%s\""
-msgstr ""
+msgstr "\"%s\" já está na coleção \"%s\""
-#: mediagoblin/user_pages/views.py:253
+#: mediagoblin/user_pages/views.py:264
#, python-format
msgid "\"%s\" added to collection \"%s\""
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:261
-msgid "Please check your entries and try again."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:292
-msgid ""
-"Some of the files with this entry seem to be missing. Deleting anyway."
-msgstr ""
+msgstr "\"%s\" adicionado à coleção \"%s\""
-#: mediagoblin/user_pages/views.py:297
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
msgstr "Você deletou a mídia."
-#: mediagoblin/user_pages/views.py:304
+#: mediagoblin/user_pages/views.py:293
msgid "The media was not deleted because you didn't check that you were sure."
-msgstr ""
+msgstr "A mídia não foi apagada porque você não marcou que tinha certeza."
-#: mediagoblin/user_pages/views.py:312
+#: mediagoblin/user_pages/views.py:301
msgid "You are about to delete another user's media. Proceed with caution."
msgstr "Você vai apagar uma mídia de outro usuário. Tenha cuidado."
-#: mediagoblin/user_pages/views.py:370
+#: mediagoblin/user_pages/views.py:375
msgid "You deleted the item from the collection."
-msgstr ""
+msgstr "Você deletou o item da coleção."
-#: mediagoblin/user_pages/views.py:374
+#: mediagoblin/user_pages/views.py:379
msgid "The item was not removed because you didn't check that you were sure."
-msgstr ""
+msgstr "O item não foi apagado porque você não marcou que tinha certeza."
-#: mediagoblin/user_pages/views.py:384
+#: mediagoblin/user_pages/views.py:389
msgid ""
"You are about to delete an item from another user's collection. Proceed with"
" caution."
-msgstr ""
+msgstr "Você está prestes a remover um item da coleção de um outro usuário. Prossiga com cuidado."
-#: mediagoblin/user_pages/views.py:417
+#: mediagoblin/user_pages/views.py:422
#, python-format
msgid "You deleted the collection \"%s\""
-msgstr ""
+msgstr "Você deletou a coleção \"%s\""
-#: mediagoblin/user_pages/views.py:424
+#: mediagoblin/user_pages/views.py:429
msgid ""
"The collection was not deleted because you didn't check that you were sure."
-msgstr ""
+msgstr "A coleção não foi apagada porque você não marcou que tinha certeza."
-#: mediagoblin/user_pages/views.py:434
+#: mediagoblin/user_pages/views.py:439
msgid ""
"You are about to delete another user's collection. Proceed with caution."
-msgstr ""
+msgstr "Você está prestes a deletar a coleção de um outro usuário. Prossiga com cuidado."
diff --git a/mediagoblin/i18n/ro/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/ro/LC_MESSAGES/mediagoblin.mo
index dc64a04b..62cbf028 100644
--- a/mediagoblin/i18n/ro/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/ro/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/ro/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/ro/LC_MESSAGES/mediagoblin.po
index 4929de7a..da585d5c 100644
--- a/mediagoblin/i18n/ro/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/ro/LC_MESSAGES/mediagoblin.po
@@ -1,17 +1,17 @@
# Translations template for PROJECT.
-# Copyright (C) 2012 ORGANIZATION
+# Copyright (C) 2013 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
# <gapop@hotmail.com>, 2011.
-# George Pop <gapop@hotmail.com>, 2011-2012.
+# George Pop <gapop@hotmail.com>, 2011-2013.
msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://issues.mediagoblin.org/\n"
-"POT-Creation-Date: 2012-12-20 09:18-0600\n"
-"PO-Revision-Date: 2012-12-20 15:14+0000\n"
-"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
+"POT-Creation-Date: 2013-03-04 18:04-0600\n"
+"PO-Revision-Date: 2013-03-10 04:13+0000\n"
+"Last-Translator: George Pop <gapop@hotmail.com>\n"
"Language-Team: Romanian (http://www.transifex.com/projects/p/mediagoblin/language/ro/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -20,82 +20,96 @@ msgstr ""
"Language: ro\n"
"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n"
-#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:41
+#: mediagoblin/auth/forms.py:28
+msgid "Invalid User name or email address."
+msgstr "Nume de utilizator sau adresă de e-mail nevalidă."
+
+#: mediagoblin/auth/forms.py:29
+msgid "This field does not take email addresses."
+msgstr "Această rubrică nu este pentru adrese de e-mail."
+
+#: mediagoblin/auth/forms.py:30
+msgid "This field requires an email address."
+msgstr "Această rubrică trebuie completată cu o adresă de e-mail."
+
+#: mediagoblin/auth/forms.py:52 mediagoblin/auth/forms.py:67
msgid "Username"
msgstr "Nume de utilizator"
-#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:45
+#: mediagoblin/auth/forms.py:56 mediagoblin/auth/forms.py:71
msgid "Password"
msgstr "Parolă"
-#: mediagoblin/auth/forms.py:34
+#: mediagoblin/auth/forms.py:60
msgid "Email address"
msgstr "Adresa de e-mail"
-#: mediagoblin/auth/forms.py:51
+#: mediagoblin/auth/forms.py:78
msgid "Username or email"
msgstr "Numele de utilizator sau adresa de e-mail"
-#: mediagoblin/auth/forms.py:58
-msgid "Incorrect input"
-msgstr "Input incorect"
-
-#: mediagoblin/auth/views.py:55
+#: mediagoblin/auth/views.py:54
msgid "Sorry, registration is disabled on this instance."
msgstr "Ne pare rău, dar înscrierile sunt dezactivate pe acest server."
-#: mediagoblin/auth/views.py:75
+#: mediagoblin/auth/views.py:68
msgid "Sorry, a user with that name already exists."
msgstr "Ne pare rău, există deja un utilizator cu același nume."
-#: mediagoblin/auth/views.py:79
+#: mediagoblin/auth/views.py:72
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:182
+#: mediagoblin/auth/views.py:174
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:188
+#: mediagoblin/auth/views.py:180
msgid "The verification key or user id is incorrect"
msgstr "Cheie de verificare sau user ID incorect."
-#: mediagoblin/auth/views.py:206
+#: mediagoblin/auth/views.py:198
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:214
+#: mediagoblin/auth/views.py:206
msgid "You've already verified your email address!"
msgstr "Adresa ta de e-mail a fost deja verificată!"
-#: mediagoblin/auth/views.py:227
+#: mediagoblin/auth/views.py:219
msgid "Resent your verification email."
msgstr "E-mail-ul de verificare a fost retrimis."
-#: mediagoblin/auth/views.py:263
+#: mediagoblin/auth/views.py:250
+msgid ""
+"If that email address (case sensitive!) is registered an email has been sent"
+" with instructions on how to change your password."
+msgstr "Dacă adresa de e-mail este în baza noastră de date, atunci se va trimite imediat un mesaj cu instrucțiuni pentru schimbarea parolei. Țineți cont de litere mari / litere mici la introducerea adresei!"
+
+#: mediagoblin/auth/views.py:261
+msgid "Couldn't find someone with that username."
+msgstr "Nu există nimeni cu acest nume de utilizator."
+
+#: mediagoblin/auth/views.py:264
msgid ""
"An email has been sent with instructions on how to change your password."
msgstr "S-a trimis un e-mail cu instrucțiuni pentru schimbarea parolei."
-#: mediagoblin/auth/views.py:273
+#: mediagoblin/auth/views.py:271
msgid ""
"Could not send password recovery email as your username is inactive or your "
"account's email address has not been verified."
msgstr "E-mailul pentru recuperarea parolei nu a putut fi trimis deoarece contul tău e inactiv sau adresa ta de e-mail nu a fost verificată."
-#: mediagoblin/auth/views.py:285
-msgid "Couldn't find someone with that username or email."
-msgstr "Nu s-a găsit nicio persoană cu acel nume de utilizator sau adresă de e-mail."
-
-#: mediagoblin/auth/views.py:333
+#: mediagoblin/auth/views.py:328
msgid "You can now log in using your new password."
msgstr "Acum te poți autentifica cu noua parolă."
-#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:82
+#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:93
#: mediagoblin/submit/forms.py:28 mediagoblin/submit/forms.py:47
-#: mediagoblin/user_pages/forms.py:40
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr "Titlu"
@@ -104,8 +118,8 @@ msgid "Description of this work"
msgstr "Descrierea acestui fișier"
#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:52
-#: mediagoblin/edit/forms.py:86 mediagoblin/submit/forms.py:32
-#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:44
+#: mediagoblin/edit/forms.py:97 mediagoblin/submit/forms.py:32
+#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:49
msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
@@ -114,17 +128,17 @@ msgstr "Poți folosi\n <a href=\"http://daringfireball.net/
#: mediagoblin/edit/forms.py:33 mediagoblin/submit/forms.py:36
msgid "Tags"
-msgstr "Tag-uri"
+msgstr "Cuvinte-cheie"
#: mediagoblin/edit/forms.py:35 mediagoblin/submit/forms.py:38
msgid "Separate tags by commas."
-msgstr "Desparte tag-urile prin virgulă."
+msgstr "Desparte cuvintele-cheie prin virgulă."
-#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:90
+#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:101
msgid "Slug"
msgstr "Identificator"
-#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:91
+#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:102
msgid "The slug can't be empty"
msgstr "Identificatorul nu poate să lipsească"
@@ -163,65 +177,81 @@ msgstr "Introdu vechea parolă pentru a demonstra că ești titularul acestui co
msgid "New password"
msgstr "Noua parolă"
-#: mediagoblin/edit/forms.py:71
+#: mediagoblin/edit/forms.py:74
+msgid "License preference"
+msgstr "Licența preferată"
+
+#: mediagoblin/edit/forms.py:80
+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:82
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:83
+#: mediagoblin/edit/forms.py:94
msgid "The title can't be empty"
msgstr "Titlul nu poate să fie gol"
-#: mediagoblin/edit/forms.py:85 mediagoblin/submit/forms.py:50
-#: mediagoblin/user_pages/forms.py:43
+#: mediagoblin/edit/forms.py:96 mediagoblin/submit/forms.py:50
+#: mediagoblin/user_pages/forms.py:48
msgid "Description of this collection"
msgstr "Descriere pentru această colecție"
-#: mediagoblin/edit/forms.py:92
+#: mediagoblin/edit/forms.py:103
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/views.py:65
+#: mediagoblin/edit/views.py:66
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:86
+#: mediagoblin/edit/views.py:85
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:156
+#: mediagoblin/edit/views.py:155
#, python-format
msgid "You added the attachment %s!"
msgstr "Ai anexat %s!"
-#: mediagoblin/edit/views.py:181
+#: mediagoblin/edit/views.py:182
+msgid "You can only edit your own profile."
+msgstr "Nu poți modifica decât propriul tău profil."
+
+#: mediagoblin/edit/views.py:188
msgid "You are editing a user's profile. Proceed with caution."
msgstr "Editezi profilul unui utilizator. Se recomandă prudență."
-#: mediagoblin/edit/views.py:197
+#: mediagoblin/edit/views.py:204
msgid "Profile changes saved"
msgstr "Modificările profilului au fost salvate"
-#: mediagoblin/edit/views.py:226 mediagoblin/edit/views.py:246
+#: mediagoblin/edit/views.py:241
+msgid "Wrong password"
+msgstr "Parolă incorectă"
+
+#: mediagoblin/edit/views.py:252
msgid "Account settings saved"
msgstr "Setările pentru acest cont au fost salvate"
-#: mediagoblin/edit/views.py:251
-msgid "Wrong password"
-msgstr "Parolă incorectă"
+#: mediagoblin/edit/views.py:286
+msgid "You need to confirm the deletion of your account."
+msgstr "Trebuie să confirmi ștergerea contului tău."
-#: mediagoblin/edit/views.py:287 mediagoblin/submit/views.py:211
-#: mediagoblin/user_pages/views.py:210
+#: mediagoblin/edit/views.py:322 mediagoblin/submit/views.py:142
+#: mediagoblin/user_pages/views.py:214
#, python-format
msgid "You already have a collection called \"%s\"!"
msgstr "Ai deja o colecție numită \"%s\"!"
-#: mediagoblin/edit/views.py:291
+#: mediagoblin/edit/views.py:326
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:308
+#: mediagoblin/edit/views.py:343
msgid "You are editing another user's collection. Proceed with caution."
msgstr "Lucrezi pe colecția unui alt utilizator. Se recomandă prudență."
@@ -237,54 +267,62 @@ msgstr "Nu există un folder de elemente pentru această temă\n"
msgid "However, old link directory symlink found; removed.\n"
msgstr "A fost însă găsit un symlink către vechiul folder; s-a șters.\n"
-#: mediagoblin/media_types/__init__.py:60
-#: mediagoblin/media_types/__init__.py:101
+#: 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 "Lipsește cookie-ul CSRF. Probabil că blocați cookie-urile.<br/>Asigurați-vă că există permisiunea setării cookie-urilor pentru acest domeniu."
+
+#: mediagoblin/media_types/__init__.py:61
+#: mediagoblin/media_types/__init__.py:102
msgid "Sorry, I don't support that file type :("
msgstr "Scuze, nu recunosc acest tip de fișier :("
-#: mediagoblin/media_types/video/processing.py:35
+#: mediagoblin/media_types/video/processing.py:36
msgid "Video transcoding failed"
msgstr "Transcodarea video a eșuat"
-#: mediagoblin/plugins/oauth/forms.py:26
-msgid "Client ID"
-msgstr "ID client"
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
+msgid "Location"
+msgstr "Locul"
-#: mediagoblin/plugins/oauth/forms.py:28
-msgid "Next URL"
-msgstr "Următorul URL"
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:52
+#, python-format
+msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
+msgstr "Vezi pe <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-#: mediagoblin/plugins/oauth/forms.py:30
+#: mediagoblin/plugins/oauth/forms.py:29
msgid "Allow"
msgstr "Permite"
-#: mediagoblin/plugins/oauth/forms.py:31
+#: mediagoblin/plugins/oauth/forms.py:30
msgid "Deny"
msgstr "Refuză"
-#: mediagoblin/plugins/oauth/forms.py:35
+#: mediagoblin/plugins/oauth/forms.py:34
msgid "Name"
msgstr "Nume"
-#: mediagoblin/plugins/oauth/forms.py:36
+#: mediagoblin/plugins/oauth/forms.py:35
msgid "The name of the OAuth client"
msgstr "Numele clientului OAuth"
-#: mediagoblin/plugins/oauth/forms.py:37
+#: mediagoblin/plugins/oauth/forms.py:36
msgid "Description"
msgstr "Descriere"
-#: mediagoblin/plugins/oauth/forms.py:39
+#: mediagoblin/plugins/oauth/forms.py:38
msgid ""
"This will be visible to users allowing your\n"
" application to authenticate as them."
msgstr "Aceste informații vor fi vizibile pentru utilizatorii\n care permit aplicației tale să se autentifice în numele lor."
-#: mediagoblin/plugins/oauth/forms.py:41
+#: mediagoblin/plugins/oauth/forms.py:40
msgid "Type"
msgstr "Tip"
-#: mediagoblin/plugins/oauth/forms.py:46
+#: 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"
@@ -294,25 +332,40 @@ msgid ""
" JavaScript client)."
msgstr "<strong>Confidențial</strong> - Client poate\n trimite cereri către instanța GNU MediaGoblin care nu pot fi\n interceptate de către user agent (de ex., clientul de pe server).<br />\n <strong>Public</strong> - Clientul nu poate trimite cereri confidențiale\n către instanța GNU MediaGoblin (de ex., un client\n JavaScript)."
-#: mediagoblin/plugins/oauth/forms.py:53
+#: mediagoblin/plugins/oauth/forms.py:52
msgid "Redirect URI"
msgstr "URI redirectare"
-#: mediagoblin/plugins/oauth/forms.py:55
+#: 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-ul de redirectare pentru aplicații, această rubrică\n este <strong>obligatorie</strong> pentru clienții publici."
-#: mediagoblin/plugins/oauth/forms.py:67
+#: mediagoblin/plugins/oauth/forms.py:66
msgid "This field is required for public clients"
msgstr "Această rubrică este obligatorie pentru clienții publici"
-#: mediagoblin/plugins/oauth/views.py:60
+#: mediagoblin/plugins/oauth/views.py:59
msgid "The client {0} has been registered!"
msgstr "Clientul {0} a fost înregistrat!"
-#: mediagoblin/processing/__init__.py:138
+#: mediagoblin/plugins/oauth/templates/oauth/client/connections.html:22
+msgid "OAuth client connections"
+msgstr "Conexiuni client OAuth"
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/list.html:22
+msgid "Your OAuth clients"
+msgstr "Clienții tăi OAuth"
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/register.html:29
+#: mediagoblin/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr "Adaugă"
+
+#: mediagoblin/processing/__init__.py:172
msgid "Invalid file given for media type."
msgstr "Formatul fișierului nu corespunde cu tipul de media selectat."
@@ -320,56 +373,74 @@ msgstr "Formatul fișierului nu corespunde cu tipul de media selectat."
msgid "File"
msgstr "Fișier"
-#: mediagoblin/submit/views.py:57
+#: mediagoblin/submit/views.py:51
msgid "You must provide a file."
msgstr "Trebuie să selectezi un fișier."
-#: mediagoblin/submit/views.py:164
+#: mediagoblin/submit/views.py:97
msgid "Woohoo! Submitted!"
msgstr "Ura! Trimis!"
-#: mediagoblin/submit/views.py:215
+#: mediagoblin/submit/views.py:146
#, python-format
msgid "Collection \"%s\" added!"
msgstr "Colecția \"%s\" a fost creată!"
-#: mediagoblin/templates/mediagoblin/base.html:48
-msgid "MediaGoblin logo"
-msgstr "logo MediaGoblin"
+#: mediagoblin/templates/mediagoblin/base.html:64
+msgid "Verify your email!"
+msgstr "Verifică adresa de e-mail!"
+
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "log out"
+msgstr "Ieșire"
+
+#: mediagoblin/templates/mediagoblin/base.html:70
+#: mediagoblin/templates/mediagoblin/auth/login.html:28
+#: mediagoblin/templates/mediagoblin/auth/login.html:36
+#: mediagoblin/templates/mediagoblin/auth/login.html:54
+msgid "Log in"
+msgstr "Autentificare"
-#: mediagoblin/templates/mediagoblin/base.html:54
+#: mediagoblin/templates/mediagoblin/base.html:79
#, 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:60
-msgid "log out"
+#: mediagoblin/templates/mediagoblin/base.html:86
+msgid "Change account settings"
+msgstr "Modifică setările contului"
+
+#: mediagoblin/templates/mediagoblin/base.html:90
+#: mediagoblin/templates/mediagoblin/base.html:105
+#: mediagoblin/templates/mediagoblin/admin/panel.html:21
+#: mediagoblin/templates/mediagoblin/admin/panel.html:26
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
+msgid "Media processing panel"
+msgstr "Panou de procesare media"
+
+#: mediagoblin/templates/mediagoblin/base.html:93
+msgid "Log out"
msgstr "Ieșire"
-#: mediagoblin/templates/mediagoblin/base.html:62
-#: mediagoblin/templates/mediagoblin/root.html:28
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:151
+#: mediagoblin/templates/mediagoblin/base.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:156
msgid "Add media"
msgstr "Trimite fișier"
-#: mediagoblin/templates/mediagoblin/base.html:68
-msgid "Verify your email!"
-msgstr "Verifică adresa de e-mail!"
-
-#: mediagoblin/templates/mediagoblin/base.html:73
-#: mediagoblin/templates/mediagoblin/auth/login.html:28
-#: mediagoblin/templates/mediagoblin/auth/login.html:36
-#: mediagoblin/templates/mediagoblin/auth/login.html:54
-msgid "Log in"
-msgstr "Autentificare"
+#: mediagoblin/templates/mediagoblin/base.html:99
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
+msgid "Create new collection"
+msgstr "Creează colecție nouă"
-#: mediagoblin/templates/mediagoblin/base.html:87
+#: mediagoblin/templates/mediagoblin/base.html:122
+#, python-format
msgid ""
-"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
-"href=\"http://gnu.org/\">GNU</a> project."
-msgstr "Construit cu <a href=\"http://mediagoblin.org\">MediaGoblin</a>, un proiect <a href=\"http://gnu.org/\">GNU</a>."
+"Powered by <a href=\"http://mediagoblin.org/\" title='Version "
+"%(version)s'>MediaGoblin</a>, a <a href=\"http://gnu.org/\">GNU</a> project."
+msgstr "Construit cu <a href=\"http://mediagoblin.org/\" title='Versiunea %(version)s'>MediaGoblin</a>, un proiect <a href=\"http://gnu.org/\">GNU</a>."
-#: mediagoblin/templates/mediagoblin/base.html:90
+#: mediagoblin/templates/mediagoblin/base.html:125
#, python-format
msgid ""
"Released under the <a "
@@ -381,52 +452,31 @@ msgstr "Publicat sub licența <a href=\"http://www.fsf.org/licensing/licenses/ag
msgid "Image of goblin stressing out"
msgstr "Imagine cu un goblin stresat"
-#: mediagoblin/templates/mediagoblin/root.html:25
-msgid "Actions"
-msgstr "Acțiuni"
-
#: mediagoblin/templates/mediagoblin/root.html:31
-msgid "Create new collection"
-msgstr "Creează colecție nouă"
-
-#: mediagoblin/templates/mediagoblin/root.html:34
-msgid "Change account settings"
-msgstr "Modifică setările contului"
-
-#: mediagoblin/templates/mediagoblin/root.html:38
-#: mediagoblin/templates/mediagoblin/root.html:44
-#: mediagoblin/templates/mediagoblin/admin/panel.html:21
-#: mediagoblin/templates/mediagoblin/admin/panel.html:26
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
-msgid "Media processing panel"
-msgstr "Panou de procesare media"
-
-#: mediagoblin/templates/mediagoblin/root.html:51
msgid "Explore"
msgstr "Explorează"
-#: mediagoblin/templates/mediagoblin/root.html:53
+#: mediagoblin/templates/mediagoblin/root.html:33
msgid "Hi there, welcome to this MediaGoblin site!"
msgstr "Salut, bine ai venit pe acest site MediaGoblin!"
-#: mediagoblin/templates/mediagoblin/root.html:55
+#: mediagoblin/templates/mediagoblin/root.html:35
msgid ""
"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
"extraordinarily great piece of media hosting software."
msgstr "Acest site folosește <a href=\"http://mediagoblin.org\">MediaGoblin</a>, un software excepțional pentru găzduirea fișierelor media."
-#: mediagoblin/templates/mediagoblin/root.html:56
+#: mediagoblin/templates/mediagoblin/root.html:36
msgid ""
"To add your own media, place comments, and more, you can log in with your "
"MediaGoblin account."
msgstr "Pentru a adăuga fișierele tale și pentru a comenta te poți autentifica cu contul tău MediaGoblin."
-#: mediagoblin/templates/mediagoblin/root.html:58
+#: mediagoblin/templates/mediagoblin/root.html:38
msgid "Don't have one yet? It's easy!"
msgstr "Încă nu ai unul? E simplu!"
-#: mediagoblin/templates/mediagoblin/root.html:59
+#: mediagoblin/templates/mediagoblin/root.html:39
#, python-format
msgid ""
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Create an account at this site</a>\n"
@@ -434,7 +484,7 @@ msgid ""
" <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
msgstr "<a class=\"button_action_highlight\" href=\"%(register_url)s\">Creează un cont pe acest site</a>\n sau\n <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Instalează MediaGoblin pe serverul tău</a>"
-#: mediagoblin/templates/mediagoblin/root.html:67
+#: mediagoblin/templates/mediagoblin/root.html:47
msgid "Most recent media"
msgstr "Cele mai recente fișiere"
@@ -540,41 +590,62 @@ msgid ""
"%(verification_url)s"
msgstr "Bună, %(username)s,\n\npentru activarea contului tău la GNU MediaGoblin, accesează adresa următoare:\n\n%(verification_url)s"
+#: 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 "Editare anexe la %(media_title)s"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:43
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:159
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:175
msgid "Attachments"
msgstr "Anexe"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
msgid "Add attachment"
msgstr "Atașează"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:60
+#: 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:81
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
msgid "Cancel"
msgstr "Anulare"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:62
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:51
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
msgid "Save changes"
msgstr "Salvează modificările"
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:28
+#, python-format
+msgid "Really delete user '%(user_name)s' and all related media/comments?"
+msgstr "Sigur dorești ștergerea utilizatorului '%(user_name)s' și a fișierelor/comentariilor acestuia?"
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:35
+msgid "Yes, really delete my account"
+msgstr "Da, doresc ștergerea contului meu"
+
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:47
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
+msgid "Delete permanently"
+msgstr "Șterge definitiv"
+
#: mediagoblin/templates/mediagoblin/edit/edit.html:23
#: mediagoblin/templates/mediagoblin/edit/edit.html:35
#, python-format
@@ -587,13 +658,17 @@ msgstr "Editare %(media_title)s"
msgid "Changing %(username)s's account settings"
msgstr "Se modifică setările contului pentru userul %(username)s"
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
+msgid "Delete my account"
+msgstr "Șterge contul meu"
+
#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:29
#, python-format
msgid "Editing %(collection_title)s"
msgstr "Editare %(collection_title)s"
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:23
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
#, python-format
msgid "Editing %(username)s's profile"
msgstr "Editare profil %(username)s"
@@ -604,12 +679,12 @@ msgstr "Editare profil %(username)s"
#: mediagoblin/templates/mediagoblin/listings/tag.html:35
#, python-format
msgid "Media tagged with: %(tag_name)s"
-msgstr "Fișier etichetat cu tag-urile: %(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/stl.html:136
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
msgstr "Download"
@@ -632,7 +707,7 @@ msgid ""
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>!"
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:56
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:61
msgid "Original file"
msgstr "Fișierul original"
@@ -644,8 +719,8 @@ msgstr "Fișier WebM (codec Vorbis)"
#: 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:67
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
+#: 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 "Imagine pentru %(media_title)s"
@@ -690,21 +765,21 @@ msgstr "Formatul fișierului"
msgid "Object Height"
msgstr "Înălțimea obiectului"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
msgid ""
-"Sorry, this video will not work because \n"
-"\t your web browser does not support HTML5 \n"
-"\t video."
-msgstr "Ne pare rău, această înregistrare video nu poate fi redată deoarece \n<span class=\"whitespace other\" title=\"Tab\">»</span> browserul tău nu este compatibil cu funcția video din HTML5."
+"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:43
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:47
msgid ""
"You can get a modern web browser that \n"
-"\t can play this video at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
-msgstr "Poți lua un browser modern\n<span class=\"whitespace other\" title=\"Tab\">»</span> capabil să redea această înregistrare de la <a href=\"http://getfirefox.com\">\n<span class=\"whitespace other\" title=\"Tab\">»</span> http://getfirefox.com</a>!"
+" 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:59
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:69
msgid "WebM file (640p; VP8/Vorbis)"
msgstr "Fișier WebM (640p; VP8/Vorbis)"
@@ -712,12 +787,6 @@ msgstr "Fișier WebM (640p; VP8/Vorbis)"
msgid "Add a collection"
msgstr "Creează o colecție"
-#: mediagoblin/templates/mediagoblin/submit/collection.html:30
-#: mediagoblin/templates/mediagoblin/submit/start.html:34
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-msgid "Add"
-msgstr "Adaugă"
-
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
msgid "Add your media"
@@ -734,12 +803,12 @@ 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:87
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
msgid "Edit"
msgstr "Editare"
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:91
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
msgid "Delete"
msgstr "Șterge"
@@ -749,11 +818,6 @@ msgstr "Șterge"
msgid "Really delete %(title)s?"
msgstr "Sigur dorești să ștergi %(title)s?"
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:47
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Delete permanently"
-msgstr "Șterge definitiv"
-
#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:31
#, python-format
msgid "Really remove %(media_title)s from %(collection_title)s?"
@@ -763,6 +827,16 @@ msgstr "Sigur dorești să ștergi %(media_title)s din %(collection_title)s?"
msgid "Remove"
msgstr "Șterge"
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:21
+#, python-format
+msgid "%(username)s's collections"
+msgstr "Colecțiile utilizatorului %(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 "Colecțiile utilizatorului <a href=\"%(user_url)s\">%(username)s</a>"
+
#: mediagoblin/templates/mediagoblin/user_pages/comment_email.txt:19
#, python-format
msgid ""
@@ -775,56 +849,53 @@ msgstr "Bună, %(username)s,\n%(comment_author)s a făcut un comentariu la posta
msgid "%(username)s's media"
msgstr "Fișierele lui %(username)s"
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:37
+#: 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 "Fișierele lui <a href=\"%(user_url)s\">%(username)s</a> cu cuvântul-cheie <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 "Fișierele media ale lui <a href=\"%(user_url)s\">%(username)s</a>"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
#, 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:102
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:94
msgid "Add a comment"
msgstr "Adaugă un comentariu"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:109
-msgid ""
-"You can use <a "
-"href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> for"
-" formatting."
-msgstr "Poți folosi <a href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> pentru formatare."
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:113
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:102
msgid "Add this comment"
msgstr "Trimite acest comentariu"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:123
msgid "at"
msgstr "la"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:152
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:144
#, python-format
msgid ""
"<h3>Added on</h3>\n"
" <p>%(date)s</p>"
msgstr "<h3>Adăugat la</h3>\n <p>%(date)s</p>"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:202
-msgid "Add media to collection"
-msgstr "Adaugă un fișier la colecție"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
#, python-format
-msgid "Add %(title)s to collection"
-msgstr "Adaugă %(title)s la colecție"
+msgid "Add “%(media_title)s†to a collection"
+msgstr "Adaugă „%(media_title)s†la o colecție"
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:51
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
msgstr "+"
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
msgstr "Creează o nouă colecție"
@@ -886,27 +957,31 @@ msgstr "Dacă tu ești persoana respectivă și nu mai ai e-mail-ul de verificar
msgid "Here's a spot to tell others about yourself."
msgstr "Aici poți spune altora ceva despre tine."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:101
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:100
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:117
msgid "Edit profile"
msgstr "Editare profil"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:105
msgid "This user hasn't filled in their profile (yet)."
msgstr "Acest utilizator nu și-a completat (încă) profilul."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:124
+msgid "Browse collections"
+msgstr "Vizitează colecțiile"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:137
#, python-format
msgid "View all of %(username)s's media"
msgstr "Vezi toate fișierele media ale lui %(username)s"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:145
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:150
msgid ""
"This is where your media will appear, but you don't seem to have added "
"anything yet."
msgstr "Aici vor apărea fișierele tale media, dar se pare că încă nu ai trimis nimic."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:162
#: 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..."
@@ -916,28 +991,24 @@ msgstr "Nu pare să existe niciun fișier media deocamdată..."
msgid "(remove)"
msgstr "(șterge)"
-#: mediagoblin/templates/mediagoblin/utils/collections.html:20
-#, python-format
-msgid "In collections (%(collected)s)"
-msgstr "În colecțiile (%(collected)s)"
+#: mediagoblin/templates/mediagoblin/utils/collections.html:21
+msgid "Collected in"
+msgstr "Din colecția"
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:40
+msgid "Add to a collection"
+msgstr "Adaugă la o colecție"
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
msgid "feed icon"
msgstr "icon feed"
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:23
msgid "Atom feed"
msgstr "feed Atom"
-#: mediagoblin/templates/mediagoblin/utils/geolocation_map.html:25
-msgid "Location"
-msgstr "Locul"
-
-#: mediagoblin/templates/mediagoblin/utils/geolocation_map.html:53
-#, python-format
-msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-msgstr "Vezi pe <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
msgstr "Toate drepturile rezervate"
@@ -966,51 +1037,66 @@ msgstr "mai vechi"
#: mediagoblin/templates/mediagoblin/utils/tags.html:20
msgid "Tagged with"
-msgstr "Etichete"
+msgstr "Etichetat cu cuvintele-cheie"
-#: mediagoblin/tools/exif.py:78
+#: mediagoblin/tools/exif.py:80
msgid "Could not read the image file."
msgstr "Fișierul cu imaginea nu a putut fi citit."
-#: mediagoblin/tools/response.py:30
+#: mediagoblin/tools/response.py:35
msgid "Oops!"
msgstr "Hopa!"
-#: mediagoblin/tools/response.py:31
+#: mediagoblin/tools/response.py:36
msgid "An error occured"
msgstr "S-a produs o eroare"
-#: mediagoblin/tools/response.py:46
+#: mediagoblin/tools/response.py:51
msgid "Operation not allowed"
msgstr "Operația nu este permisă"
-#: mediagoblin/tools/response.py:47
+#: mediagoblin/tools/response.py:52
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:55
+#: mediagoblin/tools/response.py:60
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 "Nu există nicio pagină la această adresă.</p><p>Dacă sunteți sigur că adresa este corectă, poate că pagina pe care o căutați a fost mutată sau ștearsă."
-#: mediagoblin/user_pages/forms.py:28
+#: mediagoblin/user_pages/forms.py:23
+msgid "Comment"
+msgstr "Comentariu"
+
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use <a "
+"href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> for"
+" formatting."
+msgstr "Poți folosi <a href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> pentru formatare."
+
+#: mediagoblin/user_pages/forms.py:31
msgid "I am sure I want to delete this"
msgstr "Sunt sigur că doresc să șterg"
-#: mediagoblin/user_pages/forms.py:32
+#: mediagoblin/user_pages/forms.py:35
msgid "I am sure I want to remove this item from the collection"
msgstr "Sunt sigur(ă) că vreau să șterg acest articol din colecție"
-#: mediagoblin/user_pages/forms.py:35
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr "Colecție"
+
+#: mediagoblin/user_pages/forms.py:40
msgid "-- Select --"
msgstr "-- Selectează --"
-#: mediagoblin/user_pages/forms.py:37
+#: mediagoblin/user_pages/forms.py:42
msgid "Include a note"
msgstr "Adaugă o notiță"
@@ -1018,74 +1104,69 @@ msgstr "Adaugă o notiță"
msgid "commented on your post"
msgstr "a făcut un comentariu la postarea ta"
-#: mediagoblin/user_pages/views.py:156
+#: mediagoblin/user_pages/views.py:166
msgid "Oops, your comment was empty."
msgstr "Hopa, ai uitat să scrii comentariul."
-#: mediagoblin/user_pages/views.py:162
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
msgstr "Comentariul tău a fost trimis!"
-#: mediagoblin/user_pages/views.py:230
+#: mediagoblin/user_pages/views.py:197
+msgid "Please check your entries and try again."
+msgstr "Verifică datele și încearcă din nou."
+
+#: mediagoblin/user_pages/views.py:237
msgid "You have to select or add a collection"
msgstr "Trebuie să alegi sau să creezi o colecție"
-#: mediagoblin/user_pages/views.py:238
+#: mediagoblin/user_pages/views.py:248
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr "\"%s\" este deja în colecția \"%s\""
-#: mediagoblin/user_pages/views.py:253
+#: mediagoblin/user_pages/views.py:264
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr "\"%s\" a fost adăugat la colecția \"%s\""
-#: mediagoblin/user_pages/views.py:261
-msgid "Please check your entries and try again."
-msgstr "Verifică datele și încearcă din nou."
-
-#: mediagoblin/user_pages/views.py:292
-msgid ""
-"Some of the files with this entry seem to be missing. Deleting anyway."
-msgstr "Unele fișiere din acest entry par să lipsească. Ștergem, totuși."
-
-#: mediagoblin/user_pages/views.py:297
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
msgstr "Ai șters acest fișier"
-#: mediagoblin/user_pages/views.py:304
+#: mediagoblin/user_pages/views.py:293
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/user_pages/views.py:312
+#: mediagoblin/user_pages/views.py:301
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:370
+#: mediagoblin/user_pages/views.py:375
msgid "You deleted the item from the collection."
msgstr "Ai șters acest articol din colecție."
-#: mediagoblin/user_pages/views.py:374
+#: mediagoblin/user_pages/views.py:379
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:384
+#: mediagoblin/user_pages/views.py:389
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:417
+#: mediagoblin/user_pages/views.py:422
#, python-format
msgid "You deleted the collection \"%s\""
msgstr "Ai șters colecția \"%s\""
-#: mediagoblin/user_pages/views.py:424
+#: mediagoblin/user_pages/views.py:429
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:434
+#: mediagoblin/user_pages/views.py:439
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
index 5cb985ec..759f5337 100644
--- a/mediagoblin/i18n/ru/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/ru/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/ru/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/ru/LC_MESSAGES/mediagoblin.po
index f7ae7d29..0dc099ed 100644
--- a/mediagoblin/i18n/ru/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/ru/LC_MESSAGES/mediagoblin.po
@@ -1,16 +1,17 @@
# Translations template for PROJECT.
-# Copyright (C) 2012 ORGANIZATION
+# Copyright (C) 2013 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
+# <deletesoftware@yandex.ru>, 2013.
# <deletesoftware@yandex.ru>, 2011-2012.
msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://issues.mediagoblin.org/\n"
-"POT-Creation-Date: 2012-12-20 09:18-0600\n"
-"PO-Revision-Date: 2012-12-20 15:14+0000\n"
-"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
+"POT-Creation-Date: 2013-03-04 18:04-0600\n"
+"PO-Revision-Date: 2013-03-10 15:35+0000\n"
+"Last-Translator: aleksejrs <deletesoftware@yandex.ru>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -19,82 +20,96 @@ msgstr ""
"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/auth/forms.py:25 mediagoblin/auth/forms.py:41
+#: mediagoblin/auth/forms.py:28
+msgid "Invalid User name or email address."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:29
+msgid "This field does not take email addresses."
+msgstr "Это поле не Ð´Ð»Ñ Ð°Ð´Ñ€ÐµÑа Ñлектронной почты."
+
+#: mediagoblin/auth/forms.py:30
+msgid "This field requires an email address."
+msgstr "Это поле — Ð´Ð»Ñ Ð°Ð´Ñ€ÐµÑа Ñлектронной почты."
+
+#: mediagoblin/auth/forms.py:52 mediagoblin/auth/forms.py:67
msgid "Username"
msgstr "Логин"
-#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:45
+#: mediagoblin/auth/forms.py:56 mediagoblin/auth/forms.py:71
msgid "Password"
msgstr "Пароль"
-#: mediagoblin/auth/forms.py:34
+#: mediagoblin/auth/forms.py:60
msgid "Email address"
msgstr "ÐÐ´Ñ€ÐµÑ Ñлектронной почты"
-#: mediagoblin/auth/forms.py:51
+#: mediagoblin/auth/forms.py:78
msgid "Username or email"
msgstr "Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸Ð»Ð¸ Ð°Ð´Ñ€ÐµÑ Ñлектронной почты"
-#: mediagoblin/auth/forms.py:58
-msgid "Incorrect input"
-msgstr "Введённое не похоже на Ð¸Ð¼Ñ ÑƒÑ‡Ñ‘Ñ‚Ð½Ð¾Ð¹ запиÑи или Ð°Ð´Ñ€ÐµÑ Ñлектронной почты."
-
-#: mediagoblin/auth/views.py:55
+#: mediagoblin/auth/views.py:54
msgid "Sorry, registration is disabled on this instance."
msgstr "Извините, на Ñтом Ñайте региÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ð·Ð°Ð¿Ñ€ÐµÑ‰ÐµÐ½Ð°."
-#: mediagoblin/auth/views.py:75
+#: mediagoblin/auth/views.py:68
msgid "Sorry, a user with that name already exists."
msgstr "Извините, пользователь Ñ Ñтим именем уже зарегиÑтрирован."
-#: mediagoblin/auth/views.py:79
+#: mediagoblin/auth/views.py:72
msgid "Sorry, a user with that email address already exists."
msgstr "Сожалеем, но на Ñтот Ð°Ð´Ñ€ÐµÑ Ñлектронной почты уже зарегиÑтрирована Ð´Ñ€ÑƒÐ³Ð°Ñ ÑƒÑ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ."
-#: mediagoblin/auth/views.py:182
+#: mediagoblin/auth/views.py:174
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
msgstr "Ваш Ð°Ð´Ñ€ÐµÑ Ñлектронной почты потвержден. Ð’Ñ‹ теперь можете войти и начать редактировать Ñвой профиль и загружать новые изображениÑ!"
-#: mediagoblin/auth/views.py:188
+#: mediagoblin/auth/views.py:180
msgid "The verification key or user id is incorrect"
msgstr "Ðеверный ключ проверки или идентификатор пользователÑ"
-#: mediagoblin/auth/views.py:206
+#: mediagoblin/auth/views.py:198
msgid "You must be logged in so we know who to send the email to!"
msgstr "Вам надо предÑтавитьÑÑ, чтобы мы знали, кому отправлÑть Ñообщение!"
-#: mediagoblin/auth/views.py:214
+#: mediagoblin/auth/views.py:206
msgid "You've already verified your email address!"
msgstr "Ð’Ñ‹ уже потвердили Ñвой Ð°Ð´Ñ€ÐµÑ Ñлектронной почты!"
-#: mediagoblin/auth/views.py:227
+#: mediagoblin/auth/views.py:219
msgid "Resent your verification email."
msgstr "ПереÑлать Ñообщение Ñ Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸ÐµÐ¼ аккаунта."
-#: mediagoblin/auth/views.py:263
+#: mediagoblin/auth/views.py:250
+msgid ""
+"If that email address (case sensitive!) is registered an email has been sent"
+" with instructions on how to change your password."
+msgstr "ЕÑли Ñ Ñтим адреÑом Ñлектронной почты (Ñравниваемым чувÑтвительно к региÑтру Ñимволов!) еÑть ÑƒÑ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ, то на него отправлено Ñообщение Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñми о том, как Ñменить пароль."
+
+#: mediagoblin/auth/views.py:261
+msgid "Couldn't find someone with that username."
+msgstr "Ðе найдено никого Ñ Ñ‚Ð°ÐºÐ¸Ð¼ именем пользователÑ."
+
+#: mediagoblin/auth/views.py:264
msgid ""
"An email has been sent with instructions on how to change your password."
msgstr "Вам отправлено Ñлектронное пиÑьмо Ñ Ð¸Ð½ÑтрукциÑми по Ñмене паролÑ."
-#: mediagoblin/auth/views.py:273
+#: mediagoblin/auth/views.py:271
msgid ""
"Could not send password recovery email as your username is inactive or your "
"account's email address has not been verified."
msgstr "Мы не можем отправить Ñообщение Ð´Ð»Ñ Ð²Ð¾ÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ, потому что ваша ÑƒÑ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ неактивна, либо указанный в ней Ð°Ð´Ñ€ÐµÑ Ñлектронной почты не был подтверждён."
-#: mediagoblin/auth/views.py:285
-msgid "Couldn't find someone with that username or email."
-msgstr "Ðе найдено никого Ñ Ñ‚Ð°ÐºÐ¸Ð¼ именем Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸Ð»Ð¸ адреÑом Ñлектронной почты."
-
-#: mediagoblin/auth/views.py:333
+#: mediagoblin/auth/views.py:328
msgid "You can now log in using your new password."
msgstr "Теперь вы можете войти, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ð²Ð°Ñˆ новый пароль."
-#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:82
+#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:93
#: mediagoblin/submit/forms.py:28 mediagoblin/submit/forms.py:47
-#: mediagoblin/user_pages/forms.py:40
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr "Ðазвание"
@@ -103,8 +118,8 @@ msgid "Description of this work"
msgstr "ОпиÑание Ñтого произведениÑ"
#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:52
-#: mediagoblin/edit/forms.py:86 mediagoblin/submit/forms.py:32
-#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:44
+#: mediagoblin/edit/forms.py:97 mediagoblin/submit/forms.py:32
+#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:49
msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
@@ -119,11 +134,11 @@ msgstr "Метки"
msgid "Separate tags by commas."
msgstr "(через запÑтую)"
-#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:90
+#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:101
msgid "Slug"
msgstr "ÐžÑ‚Ð»Ð¸Ñ‡Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ñ‡Ð°Ñть адреÑа"
-#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:91
+#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:102
msgid "The slug can't be empty"
msgstr "ÐžÑ‚Ð»Ð¸Ñ‡Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ñ‡Ð°Ñть адреÑа необходима"
@@ -162,65 +177,81 @@ msgstr "Введите Ñвой Ñтарый пароль в качеÑтве д
msgid "New password"
msgstr "Ðовый пароль"
-#: mediagoblin/edit/forms.py:71
+#: mediagoblin/edit/forms.py:74
+msgid "License preference"
+msgstr "ÐŸÑ€ÐµÐ´Ð¿Ð¾Ñ‡Ð¸Ñ‚Ð°ÐµÐ¼Ð°Ñ Ð»Ð¸Ñ†ÐµÐ½Ð·Ð¸Ñ"
+
+#: mediagoblin/edit/forms.py:80
+msgid "This will be your default license on upload forms."
+msgstr "Она будет лицензией по умолчанию Ð´Ð»Ñ Ð²Ð°ÑˆÐ¸Ñ… загрузок"
+
+#: mediagoblin/edit/forms.py:82
msgid "Email me when others comment on my media"
msgstr "УведомлÑть Ð¼ÐµÐ½Ñ Ð¿Ð¾ e-mail о комментариÑÑ… к моим файлам"
-#: mediagoblin/edit/forms.py:83
+#: mediagoblin/edit/forms.py:94
msgid "The title can't be empty"
msgstr "Ðазвание не может быть пуÑтым"
-#: mediagoblin/edit/forms.py:85 mediagoblin/submit/forms.py:50
-#: mediagoblin/user_pages/forms.py:43
+#: mediagoblin/edit/forms.py:96 mediagoblin/submit/forms.py:50
+#: mediagoblin/user_pages/forms.py:48
msgid "Description of this collection"
msgstr "ОпиÑание Ñтой коллекции"
-#: mediagoblin/edit/forms.py:92
+#: mediagoblin/edit/forms.py:103
msgid ""
"The title part of this collection's address. You usually don't need to "
"change this."
msgstr "ÐžÑ‚Ð»Ð¸Ñ‡Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ñ‡Ð°Ñть адреÑа Ñтой коллекции, оÑÐ½Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ð½Ð° названии. Обычно не нужно её изменÑть."
-#: mediagoblin/edit/views.py:65
+#: mediagoblin/edit/views.py:66
msgid "An entry with that slug already exists for this user."
msgstr "У Ñтого Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ ÑƒÐ¶Ðµ еÑть файл Ñ Ñ‚Ð°ÐºÐ¾Ð¹ отличительной чаÑтью адреÑа."
-#: mediagoblin/edit/views.py:86
+#: mediagoblin/edit/views.py:85
msgid "You are editing another user's media. Proceed with caution."
msgstr "Ð’Ñ‹ редактируете файлы другого пользователÑ. Будьте оÑторожны."
-#: mediagoblin/edit/views.py:156
+#: mediagoblin/edit/views.py:155
#, python-format
msgid "You added the attachment %s!"
msgstr "Ð’Ñ‹ добавили ÑопутÑтвующий файл %s!"
-#: mediagoblin/edit/views.py:181
+#: mediagoblin/edit/views.py:182
+msgid "You can only edit your own profile."
+msgstr "Ð’Ñ‹ можете редактировать только Ñвой ÑобÑтвенный профиль."
+
+#: mediagoblin/edit/views.py:188
msgid "You are editing a user's profile. Proceed with caution."
msgstr "Ð’Ñ‹ редактируете профиль пользователÑ. Будьте оÑторожны."
-#: mediagoblin/edit/views.py:197
+#: mediagoblin/edit/views.py:204
msgid "Profile changes saved"
msgstr "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ Ñохранены"
-#: mediagoblin/edit/views.py:226 mediagoblin/edit/views.py:246
+#: mediagoblin/edit/views.py:241
+msgid "Wrong password"
+msgstr "Ðеправильный пароль"
+
+#: mediagoblin/edit/views.py:252
msgid "Account settings saved"
msgstr "ÐаÑтройки учётной запиÑи запиÑаны"
-#: mediagoblin/edit/views.py:251
-msgid "Wrong password"
-msgstr "Ðеправильный пароль"
+#: mediagoblin/edit/views.py:286
+msgid "You need to confirm the deletion of your account."
+msgstr "Вам нужно подтвердить, что вы хотите удалить Ñвою учётную запиÑÑŒ."
-#: mediagoblin/edit/views.py:287 mediagoblin/submit/views.py:211
-#: mediagoblin/user_pages/views.py:210
+#: mediagoblin/edit/views.py:322 mediagoblin/submit/views.py:142
+#: mediagoblin/user_pages/views.py:214
#, python-format
msgid "You already have a collection called \"%s\"!"
msgstr "У Ð²Ð°Ñ ÑƒÐ¶Ðµ еÑть ÐºÐ¾Ð»Ð»ÐµÐºÑ†Ð¸Ñ Ñ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸ÐµÐ¼ «%s»!"
-#: mediagoblin/edit/views.py:291
+#: mediagoblin/edit/views.py:326
msgid "A collection with that slug already exists for this user."
msgstr "У Ñтого Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ ÑƒÐ¶Ðµ еÑть ÐºÐ¾Ð»Ð»ÐµÐºÑ†Ð¸Ñ Ñ Ñ‚Ð°ÐºÐ¾Ð¹ отличительной чаÑтью адреÑа."
-#: mediagoblin/edit/views.py:308
+#: mediagoblin/edit/views.py:343
msgid "You are editing another user's collection. Proceed with caution."
msgstr "Ð’Ñ‹ редактируете коллекцию другого пользователÑ. Будьте оÑторожны."
@@ -236,54 +267,62 @@ msgstr "У Ñтой темы отÑутÑтвует каталог Ñ Ñлеме
msgid "However, old link directory symlink found; removed.\n"
msgstr "Однако найдена (и удалена) ÑÑ‚Ð°Ñ€Ð°Ñ ÑимволичеÑÐºÐ°Ñ ÑÑылка на каталог.\n"
-#: mediagoblin/media_types/__init__.py:60
-#: mediagoblin/media_types/__init__.py:101
+#: 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:61
+#: mediagoblin/media_types/__init__.py:102
msgid "Sorry, I don't support that file type :("
msgstr "Увы, Ñ Ð½Ðµ поддерживаю Ñтот тип файлов :("
-#: mediagoblin/media_types/video/processing.py:35
+#: mediagoblin/media_types/video/processing.py:36
msgid "Video transcoding failed"
msgstr "Перекодировка видео не удалаÑÑŒ"
-#: mediagoblin/plugins/oauth/forms.py:26
-msgid "Client ID"
-msgstr ""
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
+msgid "Location"
+msgstr "Ðа карте"
-#: mediagoblin/plugins/oauth/forms.py:28
-msgid "Next URL"
-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/oauth/forms.py:30
+#: mediagoblin/plugins/oauth/forms.py:29
msgid "Allow"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:31
+#: mediagoblin/plugins/oauth/forms.py:30
msgid "Deny"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:35
+#: mediagoblin/plugins/oauth/forms.py:34
msgid "Name"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:36
+#: mediagoblin/plugins/oauth/forms.py:35
msgid "The name of the OAuth client"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:37
+#: mediagoblin/plugins/oauth/forms.py:36
msgid "Description"
msgstr "ОпиÑание"
-#: mediagoblin/plugins/oauth/forms.py:39
+#: mediagoblin/plugins/oauth/forms.py:38
msgid ""
"This will be visible to users allowing your\n"
" application to authenticate as them."
-msgstr ""
+msgstr "Его увидÑÑ‚ пользователи, разрешающие вашему приложению дейÑтвовать от их имени."
-#: mediagoblin/plugins/oauth/forms.py:41
+#: mediagoblin/plugins/oauth/forms.py:40
msgid "Type"
-msgstr ""
+msgstr "Тип"
-#: mediagoblin/plugins/oauth/forms.py:46
+#: 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"
@@ -293,25 +332,40 @@ msgid ""
" JavaScript client)."
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:53
+#: mediagoblin/plugins/oauth/forms.py:52
msgid "Redirect URI"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:55
+#: 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:67
+#: mediagoblin/plugins/oauth/forms.py:66
msgid "This field is required for public clients"
msgstr ""
-#: mediagoblin/plugins/oauth/views.py:60
+#: mediagoblin/plugins/oauth/views.py:59
msgid "The client {0} has been registered!"
+msgstr "Клиент {0} зарегиÑтрирован!"
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/connections.html:22
+msgid "OAuth client connections"
msgstr ""
-#: mediagoblin/processing/__init__.py:138
+#: mediagoblin/plugins/oauth/templates/oauth/client/list.html:22
+msgid "Your OAuth clients"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/register.html:29
+#: mediagoblin/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr "Добавить"
+
+#: mediagoblin/processing/__init__.py:172
msgid "Invalid file given for media type."
msgstr "Ðеправильный формат файла."
@@ -319,56 +373,74 @@ msgstr "Ðеправильный формат файла."
msgid "File"
msgstr "Файл"
-#: mediagoblin/submit/views.py:57
+#: mediagoblin/submit/views.py:51
msgid "You must provide a file."
msgstr "Вы должны загрузить файл."
-#: mediagoblin/submit/views.py:164
+#: mediagoblin/submit/views.py:97
msgid "Woohoo! Submitted!"
msgstr "Ура! Файл загружен!"
-#: mediagoblin/submit/views.py:215
+#: mediagoblin/submit/views.py:146
#, python-format
msgid "Collection \"%s\" added!"
msgstr "ÐšÐ¾Ð»Ð»ÐµÐºÑ†Ð¸Ñ Â«%s» добавлена!"
-#: mediagoblin/templates/mediagoblin/base.html:48
-msgid "MediaGoblin logo"
-msgstr "Символ MediaGoblin"
-
-#: mediagoblin/templates/mediagoblin/base.html:54
-#, 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:64
+msgid "Verify your email!"
+msgstr "Подтвердите ваш Ð°Ð´Ñ€ÐµÑ Ñлектронной почты!"
-#: mediagoblin/templates/mediagoblin/base.html:60
+#: mediagoblin/templates/mediagoblin/base.html:65
msgid "log out"
msgstr "завершение ÑеанÑа"
-#: mediagoblin/templates/mediagoblin/base.html:62
-#: mediagoblin/templates/mediagoblin/root.html:28
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:151
-msgid "Add media"
-msgstr "Добавить файлы"
-
-#: mediagoblin/templates/mediagoblin/base.html:68
-msgid "Verify your email!"
-msgstr "Подтвердите ваш Ð°Ð´Ñ€ÐµÑ Ñлектронной почты!"
-
-#: mediagoblin/templates/mediagoblin/base.html:73
+#: mediagoblin/templates/mediagoblin/base.html:70
#: mediagoblin/templates/mediagoblin/auth/login.html:28
#: mediagoblin/templates/mediagoblin/auth/login.html:36
#: mediagoblin/templates/mediagoblin/auth/login.html:54
msgid "Log in"
msgstr "Войти"
-#: mediagoblin/templates/mediagoblin/base.html:87
-msgid ""
-"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
-"href=\"http://gnu.org/\">GNU</a> project."
-msgstr "Работает на <a href=\"http://mediagoblin.org\">MediaGoblin</a>, проекте <a href=\"http://gnu.org/\">GNU</a>."
+#: mediagoblin/templates/mediagoblin/base.html:79
+#, 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:86
+msgid "Change account settings"
+msgstr "Изменить наÑтройки учётной запиÑи"
#: mediagoblin/templates/mediagoblin/base.html:90
+#: mediagoblin/templates/mediagoblin/base.html:105
+#: mediagoblin/templates/mediagoblin/admin/panel.html:21
+#: mediagoblin/templates/mediagoblin/admin/panel.html:26
+#: 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:93
+msgid "Log out"
+msgstr "Завершение ÑеанÑа"
+
+#: mediagoblin/templates/mediagoblin/base.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:156
+msgid "Add media"
+msgstr "Добавить файлы"
+
+#: mediagoblin/templates/mediagoblin/base.html:99
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
+msgid "Create new collection"
+msgstr "Создать новую коллекцию"
+
+#: mediagoblin/templates/mediagoblin/base.html:122
+#, 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/base.html:125
#, python-format
msgid ""
"Released under the <a "
@@ -380,52 +452,31 @@ msgstr "Он опубликован на уÑловиÑÑ… <a href=\"http://www.f
msgid "Image of goblin stressing out"
msgstr "Изображение нервничающего гоблина"
-#: mediagoblin/templates/mediagoblin/root.html:25
-msgid "Actions"
-msgstr "ДейÑтвиÑ"
-
#: mediagoblin/templates/mediagoblin/root.html:31
-msgid "Create new collection"
-msgstr "Создать новую коллекцию"
-
-#: mediagoblin/templates/mediagoblin/root.html:34
-msgid "Change account settings"
-msgstr "Изменить наÑтройки учётной запиÑи"
-
-#: mediagoblin/templates/mediagoblin/root.html:38
-#: mediagoblin/templates/mediagoblin/root.html:44
-#: mediagoblin/templates/mediagoblin/admin/panel.html:21
-#: mediagoblin/templates/mediagoblin/admin/panel.html:26
-#: 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/root.html:51
msgid "Explore"
msgstr "Смотреть"
-#: mediagoblin/templates/mediagoblin/root.html:53
+#: mediagoblin/templates/mediagoblin/root.html:33
msgid "Hi there, welcome to this MediaGoblin site!"
msgstr "Привет! Добро пожаловать на наш MediaGoblin’овый Ñайт!"
-#: mediagoblin/templates/mediagoblin/root.html:55
+#: mediagoblin/templates/mediagoblin/root.html:35
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/root.html:56
+#: mediagoblin/templates/mediagoblin/root.html:36
msgid ""
"To add your own media, place comments, and more, you can log in with your "
"MediaGoblin account."
msgstr "Ð”Ð»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÑобÑтвенных файлов, ÐºÐ¾Ð¼Ð¼ÐµÐ½Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸ Ñ‚. п. вы можете предÑтавитьÑÑ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ вашей MediaGoblin’овой учётной запиÑи."
-#: mediagoblin/templates/mediagoblin/root.html:58
+#: mediagoblin/templates/mediagoblin/root.html:38
msgid "Don't have one yet? It's easy!"
msgstr "У Ð²Ð°Ñ ÐµÑ‘ ещё нет? Ðе проблема!"
-#: mediagoblin/templates/mediagoblin/root.html:59
+#: mediagoblin/templates/mediagoblin/root.html:39
#, python-format
msgid ""
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Create an account at this site</a>\n"
@@ -433,7 +484,7 @@ msgid ""
" <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
msgstr "<a class=\"button_action_highlight\" href=\"%(register_url)s\">Создайте учётную запиÑÑŒ на Ñтом Ñайте</a>\n или\n <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">уÑтановите MediaGoblin на ÑобÑтвенный Ñервер</a>"
-#: mediagoblin/templates/mediagoblin/root.html:67
+#: mediagoblin/templates/mediagoblin/root.html:47
msgid "Most recent media"
msgstr "Самые новые файлы"
@@ -539,41 +590,62 @@ msgid ""
"%(verification_url)s"
msgstr "Привет, %(username)s!\n\nЧтобы активировать Ñвой аккаунт в GNU MediaGoblin, откройте в Ñвоём вебâ€Ð±Ñ€Ð°ÑƒÐ·ÐµÑ€Ðµ Ñледующую ÑÑылку:\n\n%(verification_url)s"
+#: 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:43
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:159
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:175
msgid "Attachments"
msgstr "СопутÑтвующие файлы"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
msgid "Add attachment"
msgstr "Добавить ÑопутÑтвующий файл"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:60
+#: 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:81
+#: 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:62
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:51
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
msgid "Save changes"
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/delete_account.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:47
+#: 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
@@ -586,13 +658,17 @@ msgstr "Редактирование %(media_title)s"
msgid "Changing %(username)s's account settings"
msgstr "ÐаÑтройка учётной запиÑи %(username)s"
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
+msgid "Delete my account"
+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:35
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
#, python-format
msgid "Editing %(username)s's profile"
msgstr "Редактирование Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ %(username)s"
@@ -608,7 +684,7 @@ 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/stl.html:136
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
msgstr "Скачать"
@@ -631,7 +707,7 @@ msgid ""
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/video.html:56
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:61
msgid "Original file"
msgstr "ИÑходный файл"
@@ -643,8 +719,8 @@ msgstr "WebMâ€Ñ„айл (кодек — Vorbis)"
#: 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:67
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
+#: 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»"
@@ -655,55 +731,55 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:113
msgid "Perspective"
-msgstr ""
+msgstr "ПерÑпектива"
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:116
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
msgid "Front"
-msgstr ""
+msgstr "Спереди"
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:121
msgid "Top"
-msgstr ""
+msgstr "Сверху"
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:124
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:125
msgid "Side"
-msgstr ""
+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:138
msgid "Download model"
-msgstr ""
+msgstr "Скачать модель"
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
msgid "File Format"
-msgstr ""
+msgstr "Формат файла"
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
msgid "Object Height"
-msgstr ""
+msgstr "Ð’Ñ‹Ñота объекта"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
msgid ""
-"Sorry, this video will not work because \n"
-"\t your web browser does not support HTML5 \n"
-"\t video."
-msgstr "Сожалеем, Ñтот ролик не проиграетÑÑ, âŽ\n» потому что ваш браузер не поддерживает âŽ\n» видео в ÑоответÑтвии Ñо Ñтандартом HTML5."
+"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:43
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:47
msgid ""
"You can get a modern web browser that \n"
-"\t can play this video at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
-msgstr "Ð’Ñ‹ можете Ñкачать Ñовременный браузер,\n<span class=\"whitespace other\" title=\"Tab\">»</span> ÑпоÑобный воÑпроизводить Ñто видео, Ñ <a href=\"http://getfirefox.com\">\n<span class=\"whitespace other\" title=\"Tab\">»</span> http://getfirefox.com</a>!"
+" 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:59
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:69
msgid "WebM file (640p; VP8/Vorbis)"
msgstr "WebM-файл (640p; VP8/Vorbis)"
@@ -711,12 +787,6 @@ msgstr "WebM-файл (640p; VP8/Vorbis)"
msgid "Add a collection"
msgstr "Добавление коллекции"
-#: mediagoblin/templates/mediagoblin/submit/collection.html:30
-#: mediagoblin/templates/mediagoblin/submit/start.html:34
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-msgid "Add"
-msgstr "Добавить"
-
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
msgid "Add your media"
@@ -733,12 +803,12 @@ 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:87
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
msgid "Edit"
msgstr "Изменить"
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:91
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
msgid "Delete"
msgstr "Удалить"
@@ -748,11 +818,6 @@ msgstr "Удалить"
msgid "Really delete %(title)s?"
msgstr "Удалить %(title)s?"
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:47
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Delete permanently"
-msgstr "Удалить безвозвратно"
-
#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:31
#, python-format
msgid "Really remove %(media_title)s from %(collection_title)s?"
@@ -762,6 +827,16 @@ msgstr "Ð’ Ñамом деле иÑключить %(media_title)s из %(collect
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 ""
@@ -774,56 +849,53 @@ msgstr "Привет, %(username)s.\nПользователь %(comment_author)s
msgid "%(username)s's media"
msgstr "Файлы %(username)s"
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:37
+#: 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:46
+#: 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:102
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:94
msgid "Add a comment"
msgstr "Добавить комментарий"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:109
-msgid ""
-"You can use <a "
-"href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> for"
-" formatting."
-msgstr "Ð”Ð»Ñ Ñ€Ð°Ð·Ð¼ÐµÑ‚ÐºÐ¸ можете иÑпользовать Ñзык <a href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a>."
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:113
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:102
msgid "Add this comment"
msgstr "Добавить Ñтот комментарий"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:123
msgid "at"
msgstr "в"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:152
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:144
#, python-format
msgid ""
"<h3>Added on</h3>\n"
" <p>%(date)s</p>"
msgstr "<h3>Добавлено</h3>\n <p>%(date)s</p>"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:202
-msgid "Add media to collection"
-msgstr "Добавить файл к коллекции"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
#, python-format
-msgid "Add %(title)s to collection"
-msgstr "Добавить %(title)s в коллекцию"
+msgid "Add “%(media_title)s†to a collection"
+msgstr "Добавление «%(media_title)s» в коллекцию"
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:51
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
msgstr "Добавление новой коллекции"
@@ -885,27 +957,31 @@ msgstr "ЕÑли Ñто были вы, и еÑли вы потерÑли ÑооÐ
msgid "Here's a spot to tell others about yourself."
msgstr "ЗдеÑÑŒ вы можете раÑÑказать о Ñебе."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:101
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:100
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:117
msgid "Edit profile"
msgstr "Редактировать профиль"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:105
msgid "This user hasn't filled in their profile (yet)."
msgstr "Этот пользователь не заполнил Ñвой профайл (пока)."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:124
+msgid "Browse collections"
+msgstr "Смотреть коллекции"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:137
#, python-format
msgid "View all of %(username)s's media"
msgstr "Смотреть вÑе файлы %(username)s"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:145
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:150
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:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:162
#: 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..."
@@ -915,28 +991,24 @@ msgstr "Пока что тут файлов нет…"
msgid "(remove)"
msgstr "(иÑключить)"
-#: mediagoblin/templates/mediagoblin/utils/collections.html:20
-#, python-format
-msgid "In collections (%(collected)s)"
-msgstr "Ð’ %(collected)s коллекциÑÑ…"
+#: 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/geolocation_map.html:25
-msgid "Location"
-msgstr "Ðа карте"
-
-#: mediagoblin/templates/mediagoblin/utils/geolocation_map.html:53
-#, python-format
-msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-msgstr "ПоÑмотреть на <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
msgstr "Ð’Ñе права Ñохранены"
@@ -967,49 +1039,64 @@ msgstr "более Ñтарые"
msgid "Tagged with"
msgstr "Метки"
-#: mediagoblin/tools/exif.py:78
+#: mediagoblin/tools/exif.py:80
msgid "Could not read the image file."
msgstr "Ðе удалоÑÑŒ прочитать файл Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸ÐµÐ¼."
-#: mediagoblin/tools/response.py:30
+#: mediagoblin/tools/response.py:35
msgid "Oops!"
msgstr "Ой!"
-#: mediagoblin/tools/response.py:31
+#: mediagoblin/tools/response.py:36
msgid "An error occured"
msgstr "Произошла ошибка"
-#: mediagoblin/tools/response.py:46
+#: mediagoblin/tools/response.py:51
msgid "Operation not allowed"
msgstr "ÐžÐ¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð½Ðµ позволÑетÑÑ"
-#: mediagoblin/tools/response.py:47
+#: mediagoblin/tools/response.py:52
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:55
+#: mediagoblin/tools/response.py:60
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/user_pages/forms.py:28
+#: 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\">Markdown</a> for"
+" formatting."
+msgstr "Ð”Ð»Ñ Ñ€Ð°Ð·Ð¼ÐµÑ‚ÐºÐ¸ можете иÑпользовать Ñзык <a href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a>."
+
+#: mediagoblin/user_pages/forms.py:31
msgid "I am sure I want to delete this"
msgstr "Я уверен, что хочу удалить Ñто"
-#: mediagoblin/user_pages/forms.py:32
+#: 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:35
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr "КоллекциÑ"
+
+#: mediagoblin/user_pages/forms.py:40
msgid "-- Select --"
msgstr "-- Выберите --"
-#: mediagoblin/user_pages/forms.py:37
+#: mediagoblin/user_pages/forms.py:42
msgid "Include a note"
msgstr "Примечание"
@@ -1017,74 +1104,69 @@ msgstr "Примечание"
msgid "commented on your post"
msgstr "оÑтавил комментарий к вашему файлу"
-#: mediagoblin/user_pages/views.py:156
+#: mediagoblin/user_pages/views.py:166
msgid "Oops, your comment was empty."
msgstr "Ой, ваш комментарий был пуÑÑ‚."
-#: mediagoblin/user_pages/views.py:162
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
msgstr "Ваш комментарий размещён!"
-#: mediagoblin/user_pages/views.py:230
+#: mediagoblin/user_pages/views.py:197
+msgid "Please check your entries and try again."
+msgstr "ПожалуйÑта, проверьте введённое и попробуйте ещё раз."
+
+#: mediagoblin/user_pages/views.py:237
msgid "You have to select or add a collection"
msgstr "Ðеобходимо выбрать или добавить коллекцию"
-#: mediagoblin/user_pages/views.py:238
+#: mediagoblin/user_pages/views.py:248
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr "«%s» — уже в коллекции «%s»"
-#: mediagoblin/user_pages/views.py:253
+#: mediagoblin/user_pages/views.py:264
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr "«%s» добавлено в коллекцию «%s»"
-#: mediagoblin/user_pages/views.py:261
-msgid "Please check your entries and try again."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:292
-msgid ""
-"Some of the files with this entry seem to be missing. Deleting anyway."
-msgstr "Ðекоторые файлы от Ñтой запиÑи не обнаружены. Ð’ÑÑ‘ равно удалÑем."
-
-#: mediagoblin/user_pages/views.py:297
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
msgstr "Вы удалили файл."
-#: mediagoblin/user_pages/views.py:304
+#: mediagoblin/user_pages/views.py:293
msgid "The media was not deleted because you didn't check that you were sure."
msgstr "Файл не удалён, так как вы не подтвердили Ñвою уверенноÑть галочкой."
-#: mediagoblin/user_pages/views.py:312
+#: mediagoblin/user_pages/views.py:301
msgid "You are about to delete another user's media. Proceed with caution."
msgstr "Ð’Ñ‹ на пороге ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° другого пользователÑ. Будьте оÑторожны."
-#: mediagoblin/user_pages/views.py:370
+#: mediagoblin/user_pages/views.py:375
msgid "You deleted the item from the collection."
msgstr "Ð’Ñ‹ иÑключили файл из коллекции."
-#: mediagoblin/user_pages/views.py:374
+#: mediagoblin/user_pages/views.py:379
msgid "The item was not removed because you didn't check that you were sure."
msgstr "Файл не иÑключён из коллекции, так как вы не подтвердили Ñвоё намерение отметкой."
-#: mediagoblin/user_pages/views.py:384
+#: mediagoblin/user_pages/views.py:389
msgid ""
"You are about to delete an item from another user's collection. Proceed with"
" caution."
msgstr "Ð’Ñ‹ на пороге иÑÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° из коллекции другого пользователÑ. Будьте оÑторожны."
-#: mediagoblin/user_pages/views.py:417
+#: mediagoblin/user_pages/views.py:422
#, python-format
msgid "You deleted the collection \"%s\""
msgstr "Вы удалили коллекцию «%s»"
-#: mediagoblin/user_pages/views.py:424
+#: mediagoblin/user_pages/views.py:429
msgid ""
"The collection was not deleted because you didn't check that you were sure."
msgstr "ÐšÐ¾Ð»Ð»ÐµÐºÑ†Ð¸Ñ Ð½Ðµ удалена, так как вы не подтвердили Ñвоё намерение отметкой."
-#: mediagoblin/user_pages/views.py:434
+#: mediagoblin/user_pages/views.py:439
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
index d84b09c4..bc92bb13 100644
--- a/mediagoblin/i18n/sk/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/sk/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/sk/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/sk/LC_MESSAGES/mediagoblin.po
index b866501e..07932b77 100644
--- a/mediagoblin/i18n/sk/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/sk/LC_MESSAGES/mediagoblin.po
@@ -1,8 +1,9 @@
# Translations template for PROJECT.
-# Copyright (C) 2012 ORGANIZATION
+# Copyright (C) 2013 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
+# Martin <zatroch.martin@gmail.com>, 2013.
# Martin Zatroch <zatroch.martin@gmail.com>, 2012.
# Morten Juhl-Johansen Zölde-Fejér <morten@writtenandread.net>, 2012.
# Olle Jonsson <olle.jonsson@gmail.com>, 2012.
@@ -12,8 +13,8 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://issues.mediagoblin.org/\n"
-"POT-Creation-Date: 2012-12-20 09:18-0600\n"
-"PO-Revision-Date: 2012-12-20 15:14+0000\n"
+"POT-Creation-Date: 2013-03-04 18:04-0600\n"
+"PO-Revision-Date: 2013-03-05 00:04+0000\n"
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
@@ -23,111 +24,125 @@ msgstr ""
"Language: sk\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
-#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:41
+#: mediagoblin/auth/forms.py:28
+msgid "Invalid User name or email address."
+msgstr "Nesprávne používateľské meno alebo e-mailová adresa."
+
+#: mediagoblin/auth/forms.py:29
+msgid "This field does not take email addresses."
+msgstr "Toto pole neakceptuje e-mailové adresy."
+
+#: mediagoblin/auth/forms.py:30
+msgid "This field requires an email address."
+msgstr "Toto pole vyžaduje e-mailovú adresu."
+
+#: mediagoblin/auth/forms.py:52 mediagoblin/auth/forms.py:67
msgid "Username"
-msgstr "Brugernavn"
+msgstr "Používateľské meno"
-#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:45
+#: mediagoblin/auth/forms.py:56 mediagoblin/auth/forms.py:71
msgid "Password"
-msgstr "Kodeord"
+msgstr "Heslo"
-#: mediagoblin/auth/forms.py:34
+#: mediagoblin/auth/forms.py:60
msgid "Email address"
msgstr "Email adresse"
-#: mediagoblin/auth/forms.py:51
+#: mediagoblin/auth/forms.py:78
msgid "Username or email"
-msgstr "Brugernavn eller email"
+msgstr "Používateľské meno alebo e-mailová adresa"
-#: mediagoblin/auth/forms.py:58
-msgid "Incorrect input"
-msgstr "Forkert input"
-
-#: mediagoblin/auth/views.py:55
+#: mediagoblin/auth/views.py:54
msgid "Sorry, registration is disabled on this instance."
-msgstr "Desværre, registrering er ikke muligt på denne instans"
+msgstr "PrepáÄ, registrácia na danej inÅ¡tancii nie je povolená."
-#: mediagoblin/auth/views.py:75
+#: mediagoblin/auth/views.py:68
msgid "Sorry, a user with that name already exists."
-msgstr "Desværre, det brugernavn er allerede brugt"
+msgstr "PrepáÄ, rovnaké používateľské meno už existuje."
-#: mediagoblin/auth/views.py:79
+#: mediagoblin/auth/views.py:72
msgid "Sorry, a user with that email address already exists."
-msgstr "Desværre, en bruger er allerede oprettet for den email"
+msgstr "PrepáÄ, rovnaká e-mailová adresa už bola použitá na vytvorenie úÄtu."
-#: mediagoblin/auth/views.py:182
+#: mediagoblin/auth/views.py:174
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!"
+msgstr "Tvoja e-mailová adresa bola overená. Teraz sa môžeš prihlásiť, upravovať profil a vkladať výtvory!"
-#: mediagoblin/auth/views.py:188
+#: mediagoblin/auth/views.py:180
msgid "The verification key or user id is incorrect"
-msgstr "Bekræftelsesnøglen eller brugerid er forkert"
+msgstr "Overovací kľúÄ, prípadne používateľské meno je nesprávne."
-#: mediagoblin/auth/views.py:206
+#: mediagoblin/auth/views.py:198
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!"
+msgstr "Je potrebné prihlásiť sa, aby sme vedeli kam máme e-mail zaslať!"
-#: mediagoblin/auth/views.py:214
+#: mediagoblin/auth/views.py:206
msgid "You've already verified your email address!"
-msgstr "Du har allerede bekræftet din email adresse!"
+msgstr "Už máš overenú e-mailovú adresu!"
-#: mediagoblin/auth/views.py:227
+#: mediagoblin/auth/views.py:219
msgid "Resent your verification email."
-msgstr "Email til godkendelse sendt igen."
+msgstr "Opätovne zaslať overovací e-mail."
-#: mediagoblin/auth/views.py:263
+#: mediagoblin/auth/views.py:250
+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/auth/views.py:261
+msgid "Couldn't find someone with that username."
+msgstr "Nemožno nájsť nikoho z daným používateľským menom."
+
+#: mediagoblin/auth/views.py:264
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."
+msgstr "E-mailová správa z inštrukciami na zmenu tvojho hesla bola zaslaná."
-#: mediagoblin/auth/views.py:273
+#: mediagoblin/auth/views.py:271
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/auth/views.py:285
-msgid "Couldn't find someone with that username or email."
-msgstr "Vi kunne ikke dit brugernavn eller email."
+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/auth/views.py:333
+#: mediagoblin/auth/views.py:328
msgid "You can now log in using your new password."
-msgstr "Du kan nu logge ind med dit nye kodeord."
+msgstr "Už môžeš použiť nové heslo pri prihlasovaní."
-#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:82
+#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:93
#: mediagoblin/submit/forms.py:28 mediagoblin/submit/forms.py:47
-#: mediagoblin/user_pages/forms.py:40
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
-msgstr "Titel"
+msgstr "Titulok"
#: mediagoblin/edit/forms.py:28 mediagoblin/submit/forms.py:31
msgid "Description of this work"
-msgstr "Beskrivelse af arbejdet"
+msgstr "Popis výtvoru"
#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:52
-#: mediagoblin/edit/forms.py:86 mediagoblin/submit/forms.py:32
-#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:44
+#: mediagoblin/edit/forms.py:97 mediagoblin/submit/forms.py:32
+#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:49
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."
+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:33 mediagoblin/submit/forms.py:36
msgid "Tags"
-msgstr "Tags"
+msgstr "Štítky"
#: mediagoblin/edit/forms.py:35 mediagoblin/submit/forms.py:38
msgid "Separate tags by commas."
-msgstr "Separer tags med kommaer."
+msgstr "Oddeľ Å¡títky pomocou Äiarky."
-#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:90
+#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:101
msgid "Slug"
msgstr "Unikátna ÄasÅ¥ adresy"
-#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:91
+#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:102
msgid "The slug can't be empty"
msgstr "Unikátna ÄasÅ¥ adresy nesmie byÅ¥ prázdna"
@@ -135,12 +150,12 @@ msgstr "Unikátna ÄasÅ¥ adresy nesmie byÅ¥ prázdna"
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."
+msgstr "Titulná ÄasÅ¥ adresy daného média. Zmena poľa nepovinná."
#: mediagoblin/edit/forms.py:44 mediagoblin/submit/forms.py:41
#: mediagoblin/templates/mediagoblin/utils/license.html:20
msgid "License"
-msgstr "Licens"
+msgstr "Licencia"
#: mediagoblin/edit/forms.py:50
msgid "Bio"
@@ -148,89 +163,105 @@ msgstr "Bio"
#: mediagoblin/edit/forms.py:56
msgid "Website"
-msgstr "Websted"
+msgstr "Webstránka"
#: mediagoblin/edit/forms.py:58
msgid "This address contains errors"
-msgstr "Denne adresse indeholder fejl"
+msgstr "Daná adresa obsahuje chybu"
#: mediagoblin/edit/forms.py:63
msgid "Old password"
-msgstr "Gammelt kodeord"
+msgstr "Staré heslo"
#: mediagoblin/edit/forms.py:64
msgid "Enter your old password to prove you own this account."
-msgstr "Skriv dit gamle kodeord for at bevise det er din konto."
+msgstr "Vlož svoje staré heslo na dôkaz toho, že vlastníš daný úÄet."
#: mediagoblin/edit/forms.py:67
msgid "New password"
-msgstr "Ny kodeord"
+msgstr "Nové heslo"
+
+#: mediagoblin/edit/forms.py:74
+msgid "License preference"
+msgstr "Preferencia licencie"
+
+#: mediagoblin/edit/forms.py:80
+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:71
+#: mediagoblin/edit/forms.py:82
msgid "Email me when others comment on my media"
-msgstr "Email mig når andre kommenterer på mine medier"
+msgstr "ZaÅ¡li mi e-mail keÄ ostatní okomentujú môj výtvor"
-#: mediagoblin/edit/forms.py:83
+#: mediagoblin/edit/forms.py:94
msgid "The title can't be empty"
-msgstr "Titlen kan ikke være tom"
+msgstr "Titulok nesmie byť prázdny."
-#: mediagoblin/edit/forms.py:85 mediagoblin/submit/forms.py:50
-#: mediagoblin/user_pages/forms.py:43
+#: mediagoblin/edit/forms.py:96 mediagoblin/submit/forms.py:50
+#: mediagoblin/user_pages/forms.py:48
msgid "Description of this collection"
-msgstr "Beskrivelse af denne samling"
+msgstr "Popis danej kolekcie"
-#: mediagoblin/edit/forms.py:92
+#: mediagoblin/edit/forms.py:103
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."
+msgstr "Titulná ÄasÅ¥ adresy danej kolekcie. Zmena poľa nepovinná."
-#: mediagoblin/edit/views.py:65
+#: mediagoblin/edit/views.py:66
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:86
+#: mediagoblin/edit/views.py:85
msgid "You are editing another user's media. Proceed with caution."
-msgstr "Du er ved at ændre en anden brugers' medier. Pas på."
+msgstr "Upravuješ výtvory iného používateľa. Pristupuj zodpovedne. "
-#: mediagoblin/edit/views.py:156
+#: mediagoblin/edit/views.py:155
#, python-format
msgid "You added the attachment %s!"
msgstr "Príloha %s pridaná!"
-#: mediagoblin/edit/views.py:181
+#: mediagoblin/edit/views.py:182
+msgid "You can only edit your own profile."
+msgstr "Môžeš upravovať iba svoj vlastný profil."
+
+#: mediagoblin/edit/views.py:188
msgid "You are editing a user's profile. Proceed with caution."
-msgstr "Du er ved at ændre en bruger's profil. Pas på."
+msgstr "Upravuješ profil iného používateľa. Pristupuj zodpovedne. "
-#: mediagoblin/edit/views.py:197
+#: mediagoblin/edit/views.py:204
msgid "Profile changes saved"
-msgstr "Profilændringer gemt"
+msgstr "Zmeny v profile uložené"
-#: mediagoblin/edit/views.py:226 mediagoblin/edit/views.py:246
+#: mediagoblin/edit/views.py:241
+msgid "Wrong password"
+msgstr "Nesprávne heslo"
+
+#: mediagoblin/edit/views.py:252
msgid "Account settings saved"
-msgstr "Kontoindstillinger gemt"
+msgstr "Nastavenia úÄtu uložené"
-#: mediagoblin/edit/views.py:251
-msgid "Wrong password"
-msgstr "Forkert kodeord"
+#: mediagoblin/edit/views.py:286
+msgid "You need to confirm the deletion of your account."
+msgstr "PotrebujeÅ¡ potvrdiÅ¥ odstránenie svojho úÄtu."
-#: mediagoblin/edit/views.py:287 mediagoblin/submit/views.py:211
-#: mediagoblin/user_pages/views.py:210
+#: mediagoblin/edit/views.py:322 mediagoblin/submit/views.py:142
+#: mediagoblin/user_pages/views.py:214
#, python-format
msgid "You already have a collection called \"%s\"!"
-msgstr "Du har allerede en samling ved navn \"%s\"!"
+msgstr "Už máš kolekciu nazvanú ako \"%s\"!"
-#: mediagoblin/edit/views.py:291
+#: mediagoblin/edit/views.py:326
msgid "A collection with that slug already exists for this user."
-msgstr "Kolekcia s týmto štítkom sa už u teba vyskytuje."
+msgstr "Kolekcia s týmto štítkom už máš."
-#: mediagoblin/edit/views.py:308
+#: mediagoblin/edit/views.py:343
msgid "You are editing another user's collection. Proceed with caution."
-msgstr "Du er ved at ændre en anden bruger's samling. Pas på."
+msgstr "Upravuješ kolekciu iného používateľa. Pristupuj zodpovedne. "
#: mediagoblin/gmg_commands/theme.py:58
msgid "Cannot link theme... no theme set\n"
-msgstr "Kan ikke linke til tema... intet tema sat\n"
+msgstr "Nemožno pripojiť tému... téma nenastavená\n"
#: mediagoblin/gmg_commands/theme.py:71
msgid "No asset directory for this theme\n"
@@ -238,56 +269,64 @@ msgstr "Žiadny prieÄinok položiek pre túto tému\n"
#: mediagoblin/gmg_commands/theme.py:74
msgid "However, old link directory symlink found; removed.\n"
-msgstr "Hoci, starý symbolický odkaz na prieÄinok nájdený; odstránený.\n"
+msgstr "Odstránené; hoci bol pôvodný symbolický odkaz adresára nájdený.\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:60
-#: mediagoblin/media_types/__init__.py:101
+#: mediagoblin/media_types/__init__.py:61
+#: mediagoblin/media_types/__init__.py:102
msgid "Sorry, I don't support that file type :("
-msgstr "Desværre, jeg understøtter ikke den filtype :("
+msgstr "PrepáÄ, nepodporujem tento typ súborov =("
-#: mediagoblin/media_types/video/processing.py:35
+#: mediagoblin/media_types/video/processing.py:36
msgid "Video transcoding failed"
msgstr "Konvertovanie videa zlyhalo"
-#: mediagoblin/plugins/oauth/forms.py:26
-msgid "Client ID"
-msgstr "Klientské ID"
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
+msgid "Location"
+msgstr "Poloha"
-#: mediagoblin/plugins/oauth/forms.py:28
-msgid "Next URL"
-msgstr "Næste URL"
+#: 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/oauth/forms.py:30
+#: mediagoblin/plugins/oauth/forms.py:29
msgid "Allow"
-msgstr "Tillad"
+msgstr "Povoliť"
-#: mediagoblin/plugins/oauth/forms.py:31
+#: mediagoblin/plugins/oauth/forms.py:30
msgid "Deny"
-msgstr "Forbyd"
+msgstr "Zakázať"
-#: mediagoblin/plugins/oauth/forms.py:35
+#: mediagoblin/plugins/oauth/forms.py:34
msgid "Name"
-msgstr "Navn"
+msgstr "Meno"
-#: mediagoblin/plugins/oauth/forms.py:36
+#: mediagoblin/plugins/oauth/forms.py:35
msgid "The name of the OAuth client"
-msgstr "Navnet af OAuth klienten"
+msgstr "Meno v rámci OAuth klienta"
-#: mediagoblin/plugins/oauth/forms.py:37
+#: mediagoblin/plugins/oauth/forms.py:36
msgid "Description"
-msgstr "Beskrivelse"
+msgstr "Popis"
-#: mediagoblin/plugins/oauth/forms.py:39
+#: 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 identifikujú sami cez tvoju aplikáciu."
+msgstr "Toto bude viditeľné pre používateľov,\n ktorí sa môžu identifikovať cez tvoju aplikáciu."
-#: mediagoblin/plugins/oauth/forms.py:41
+#: mediagoblin/plugins/oauth/forms.py:40
msgid "Type"
-msgstr "Type"
+msgstr "Typ"
-#: mediagoblin/plugins/oauth/forms.py:46
+#: 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"
@@ -297,139 +336,151 @@ msgid ""
" 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:53
+#: mediagoblin/plugins/oauth/forms.py:52
msgid "Redirect URI"
msgstr "Presmerovacie URI"
-#: mediagoblin/plugins/oauth/forms.py:55
+#: 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\nj <strong>požadované</strong> pre verejných klientov."
+msgstr "Presmerovacie URI pre aplikácie, toto pole\nje <strong>požadované</strong> pre verejných klientov."
-#: mediagoblin/plugins/oauth/forms.py:67
+#: mediagoblin/plugins/oauth/forms.py:66
msgid "This field is required for public clients"
-msgstr "Dette felt er nødvendigt for offentlige klienter"
+msgstr "Dané pole je požadované pre verejných klientov."
-#: mediagoblin/plugins/oauth/views.py:60
+#: mediagoblin/plugins/oauth/views.py:59
msgid "The client {0} has been registered!"
-msgstr "Klienten {0} er blevet registreret!"
+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/processing/__init__.py:138
+#: mediagoblin/plugins/oauth/templates/oauth/client/register.html:29
+#: mediagoblin/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr "Pridať"
+
+#: mediagoblin/processing/__init__.py:172
msgid "Invalid file given for media type."
-msgstr "Forkert fil for medietypen."
+msgstr "Nesprávny typ súboru pre dané médium."
#: mediagoblin/submit/forms.py:26
msgid "File"
-msgstr "Fil"
+msgstr "Súbor"
-#: mediagoblin/submit/views.py:57
+#: mediagoblin/submit/views.py:51
msgid "You must provide a file."
-msgstr "Du må give mig en fil"
+msgstr "Musíš poskytnúť súbor."
-#: mediagoblin/submit/views.py:164
+#: mediagoblin/submit/views.py:97
msgid "Woohoo! Submitted!"
-msgstr "Juhuu! Delt!"
+msgstr "Skvelé! Pridané!"
-#: mediagoblin/submit/views.py:215
+#: mediagoblin/submit/views.py:146
#, python-format
msgid "Collection \"%s\" added!"
msgstr "Kolekcia \"%s\" pridaná!"
-#: mediagoblin/templates/mediagoblin/base.html:48
-msgid "MediaGoblin logo"
-msgstr "MediaGoblin logo"
+#: mediagoblin/templates/mediagoblin/base.html:64
+msgid "Verify your email!"
+msgstr "Over si e-mailovú adresu!"
+
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "log out"
+msgstr "odhlásiť sa"
+
+#: mediagoblin/templates/mediagoblin/base.html:70
+#: mediagoblin/templates/mediagoblin/auth/login.html:28
+#: mediagoblin/templates/mediagoblin/auth/login.html:36
+#: mediagoblin/templates/mediagoblin/auth/login.html:54
+msgid "Log in"
+msgstr "Prihlásiť sa"
-#: mediagoblin/templates/mediagoblin/base.html:54
+#: mediagoblin/templates/mediagoblin/base.html:79
#, 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:60
-msgid "log out"
-msgstr "odhlásiť sa"
+#: mediagoblin/templates/mediagoblin/base.html:86
+msgid "Change account settings"
+msgstr "ZmeniÅ¥ nastavenia úÄtu"
-#: mediagoblin/templates/mediagoblin/base.html:62
-#: mediagoblin/templates/mediagoblin/root.html:28
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:151
+#: mediagoblin/templates/mediagoblin/base.html:90
+#: mediagoblin/templates/mediagoblin/base.html:105
+#: mediagoblin/templates/mediagoblin/admin/panel.html:21
+#: mediagoblin/templates/mediagoblin/admin/panel.html:26
+#: 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:93
+msgid "Log out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:156
msgid "Add media"
msgstr "Pridať výtvor"
-#: mediagoblin/templates/mediagoblin/base.html:68
-msgid "Verify your email!"
-msgstr "Bekræft din email!"
-
-#: mediagoblin/templates/mediagoblin/base.html:73
-#: mediagoblin/templates/mediagoblin/auth/login.html:28
-#: mediagoblin/templates/mediagoblin/auth/login.html:36
-#: mediagoblin/templates/mediagoblin/auth/login.html:54
-msgid "Log in"
-msgstr "Log ind"
+#: mediagoblin/templates/mediagoblin/base.html:99
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
+msgid "Create new collection"
+msgstr "Vytvoriť novú kolekciu"
-#: mediagoblin/templates/mediagoblin/base.html:87
+#: mediagoblin/templates/mediagoblin/base.html:122
+#, python-format
msgid ""
-"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
-"href=\"http://gnu.org/\">GNU</a> project."
-msgstr "Poháňa nás <a href=\"http://mediagoblin.org\">MediaGoblin</a>, súÄasÅ¥ projektu <a href=\"http://gnu.org/\">GNU</a>."
+"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/base.html:90
+#: mediagoblin/templates/mediagoblin/base.html:125
#, 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 "Vydané pod <a href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL</a>. <a href=\"%(source_link)s\">Zdrojový kód</a> dostupný."
+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/error.html:24
msgid "Image of goblin stressing out"
msgstr "Obrázok hysterického goblina"
-#: mediagoblin/templates/mediagoblin/root.html:25
-msgid "Actions"
-msgstr "Úkony"
-
#: mediagoblin/templates/mediagoblin/root.html:31
-msgid "Create new collection"
-msgstr "Vytvoriť novú zbierku"
-
-#: mediagoblin/templates/mediagoblin/root.html:34
-msgid "Change account settings"
-msgstr "ZmeniÅ¥ nastavenia úÄtu"
-
-#: mediagoblin/templates/mediagoblin/root.html:38
-#: mediagoblin/templates/mediagoblin/root.html:44
-#: mediagoblin/templates/mediagoblin/admin/panel.html:21
-#: mediagoblin/templates/mediagoblin/admin/panel.html:26
-#: 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/root.html:51
msgid "Explore"
-msgstr "Udforsk"
+msgstr "Preskúmať"
-#: mediagoblin/templates/mediagoblin/root.html:53
+#: mediagoblin/templates/mediagoblin/root.html:33
msgid "Hi there, welcome to this MediaGoblin site!"
-msgstr "Hey, velkommen til denne MediaGoblin side!"
+msgstr "Ahoj, vitaj na tejto MediaGoblin stránke!"
-#: mediagoblin/templates/mediagoblin/root.html:55
+#: mediagoblin/templates/mediagoblin/root.html:35
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/root.html:56
+#: mediagoblin/templates/mediagoblin/root.html:36
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."
+msgstr "Pre pridanie vlastných výtvorov, komentárov a viac.. sa prihlás zo svojim MediaGoblin úÄtom."
-#: mediagoblin/templates/mediagoblin/root.html:58
+#: mediagoblin/templates/mediagoblin/root.html:38
msgid "Don't have one yet? It's easy!"
msgstr "Har du ikke en endnu? Det er let!"
-#: mediagoblin/templates/mediagoblin/root.html:59
+#: mediagoblin/templates/mediagoblin/root.html:39
#, python-format
msgid ""
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Create an account at this site</a>\n"
@@ -437,14 +488,14 @@ msgid ""
" <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
msgstr "<a class=\"button_action_highlight\" href=\"%(register_url)s\">VytvoriÅ¥ úÄet na tejto stránke</a>\n alebo\n <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">ZaložiÅ¥ MediaGoblin na vlastnom serveri</a>"
-#: mediagoblin/templates/mediagoblin/root.html:67
+#: mediagoblin/templates/mediagoblin/root.html:47
msgid "Most recent media"
-msgstr "NajÄerstvejÅ¡ie výtvory"
+msgstr "Aktuálne výtvory"
#: mediagoblin/templates/mediagoblin/admin/panel.html:29
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 tejto inštancii."
+msgstr "Tu môžeš sledovať stav médií spracovávaných na danej inštancii."
#: mediagoblin/templates/mediagoblin/admin/panel.html:32
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:32
@@ -454,7 +505,7 @@ msgstr "Výtvory sa spracúvajú"
#: mediagoblin/templates/mediagoblin/admin/panel.html:58
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
msgid "No media in-processing"
-msgstr "Žiadne výtvory sa nespracúvajú"
+msgstr "Žiadne výtvory v procese spracovania"
#: mediagoblin/templates/mediagoblin/admin/panel.html:61
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:59
@@ -464,7 +515,7 @@ msgstr "Nasledovné nahratia neprešli spracovaním:"
#: mediagoblin/templates/mediagoblin/admin/panel.html:90
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
msgid "No failed entries!"
-msgstr "Žiadne zlé položky!"
+msgstr "Žiadne zlyhané položky!"
#: mediagoblin/templates/mediagoblin/admin/panel.html:92
msgid "Last 10 successful uploads"
@@ -478,11 +529,11 @@ msgstr "Zatiaľ žiadne spracované položky!"
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:28
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:36
msgid "Set your new password"
-msgstr "Vlož svoje nové heslo"
+msgstr "Nastav svoje nové heslo"
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:39
msgid "Set password"
-msgstr "Vlož heslo"
+msgstr "Nastav heslo"
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:23
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:31
@@ -491,7 +542,7 @@ msgstr "Obnoviť heslo"
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:34
msgid "Send instructions"
-msgstr "Zaslať postup"
+msgstr "Zaslať inštrukcie"
#: mediagoblin/templates/mediagoblin/auth/fp_verification_email.txt:19
#, python-format
@@ -513,11 +564,11 @@ msgstr "Prihlásenie zlyhalo!"
#: mediagoblin/templates/mediagoblin/auth/login.html:44
msgid "Don't have an account yet?"
-msgstr "Har du endnu ikke en konto?"
+msgstr "EÅ¡te stále nemáš úÄet?"
#: mediagoblin/templates/mediagoblin/auth/login.html:45
msgid "Create one here!"
-msgstr "Opret en her!"
+msgstr "Vytvor si jeden tu!"
#: mediagoblin/templates/mediagoblin/auth/login.html:51
msgid "Forgot your password?"
@@ -543,40 +594,61 @@ msgid ""
"%(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/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:43
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:159
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:175
msgid "Attachments"
msgstr "Prílohy"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
msgid "Add attachment"
msgstr "Pridať prílohu"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:60
+#: 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:81
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
msgid "Cancel"
-msgstr "Afbryd"
+msgstr "Zrušiť"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:62
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:51
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
msgid "Save changes"
-msgstr "Gem ændringer"
+msgstr "Uložiť zmeny"
+
+#: 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:47
+#: 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
@@ -590,16 +662,20 @@ msgstr "Úprava %(media_title)s"
msgid "Changing %(username)s's account settings"
msgstr "Mením nastavenia úÄtu používateľa %(username)s"
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
+msgid "Delete my account"
+msgstr "OdstrániÅ¥ môj úÄet"
+
#: 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:35
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
#, python-format
msgid "Editing %(username)s's profile"
-msgstr "Redigerer %(username)s profil"
+msgstr "Úprava profilu, ktorý vlastní %(username)s "
#: mediagoblin/templates/mediagoblin/listings/collection.html:30
#: mediagoblin/templates/mediagoblin/listings/collection.html:35
@@ -612,7 +688,7 @@ 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/stl.html:136
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
msgstr "Stiahnuť"
@@ -635,7 +711,7 @@ msgid ""
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/video.html:56
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:61
msgid "Original file"
msgstr "Originálny súbor"
@@ -647,8 +723,8 @@ msgstr "WebM súbor (Vorbis kodek)"
#: 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:67
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
+#: 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"
@@ -693,21 +769,21 @@ msgstr "Súborový formát"
msgid "Object Height"
msgstr "Výška objektu"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
msgid ""
-"Sorry, this video will not work because \n"
-"\t your web browser does not support HTML5 \n"
-"\t video."
-msgstr "PrepáÄ, toto video nepôjde prehraÅ¥ \n<span class=\"whitespace other\" title=\"Tab\">»</span> tvoj webový prehliadaÄ nepodporuje HTML5 \n<span class=\"whitespace other\" title=\"Tab\">»</span> video."
+"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:43
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:47
msgid ""
"You can get a modern web browser that \n"
-"\t can play this video at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
-msgstr "MôžeÅ¡ získaÅ¥ moderný prehliadaÄ, ktorý \n<span class=\"whitespace other\" title=\"Tab\">»</span> vie prehraÅ¥ toto video na <a href=\"http://getfirefox.com\">\n<span class=\"whitespace other\" title=\"Tab\">»</span> http://getfirefox.com</a>!"
+" 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:59
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:69
msgid "WebM file (640p; VP8/Vorbis)"
msgstr "WebM súbor (640p; VP8/Vorbis)"
@@ -715,12 +791,6 @@ msgstr "WebM súbor (640p; VP8/Vorbis)"
msgid "Add a collection"
msgstr "Pridať kolekciu"
-#: mediagoblin/templates/mediagoblin/submit/collection.html:30
-#: mediagoblin/templates/mediagoblin/submit/start.html:34
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-msgid "Add"
-msgstr "Pridať"
-
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
msgid "Add your media"
@@ -737,12 +807,12 @@ 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:87
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
msgid "Edit"
msgstr "Upraviť"
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:91
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
msgid "Delete"
msgstr "Odstrániť"
@@ -752,82 +822,84 @@ msgstr "Odstrániť"
msgid "Really delete %(title)s?"
msgstr "SkutoÄne odstrániÅ¥ %(title)s?"
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:47
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Delete permanently"
-msgstr "Odstráň permanentne"
-
#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:31
#, python-format
msgid "Really remove %(media_title)s from %(collection_title)s?"
-msgstr "UrÄite odstrániÅ¥ %(media_title)s z %(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:53
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 skomentoval tvoj príspevok (%(comment_url)s) na %(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:37
+#: 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:46
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
#, python-format
msgid "â– Browsing media by <a href=\"%(user_url)s\">%(username)s</a>"
-msgstr "■Prezeranie výtvorov podľa <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:102
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:94
msgid "Add a comment"
-msgstr "Pridaj komentár"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:109
-msgid ""
-"You can use <a "
-"href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> for"
-" formatting."
-msgstr "Môžeš využiť <a href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> pre formátovanie."
+msgstr "Pridať komentár"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:113
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:102
msgid "Add this comment"
msgstr "Pridať tento komentár"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:123
msgid "at"
msgstr "o"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:152
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:144
#, python-format
msgid ""
"<h3>Added on</h3>\n"
" <p>%(date)s</p>"
msgstr "<h3>Pridané</h3>\n <p>%(date)s</p>"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:202
-msgid "Add media to collection"
-msgstr "Pridať výtvory do zbierky"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
#, python-format
-msgid "Add %(title)s to collection"
-msgstr "Pridať %(title)s do kolekcie"
+msgid "Add “%(media_title)s†to a collection"
+msgstr "Pridať “%(media_title)s†do kolekcie"
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:51
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
msgstr "+"
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
msgstr "Pridať novú kolekciu"
@@ -848,98 +920,98 @@ msgstr "Profil, ktorý vlastní %(username)s"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:43
msgid "Sorry, no such user found."
-msgstr "Desværre, fandt ikke den bruger."
+msgstr "PrepáÄ, daný používateľ nenájdený."
#: mediagoblin/templates/mediagoblin/user_pages/user.html:50
#: mediagoblin/templates/mediagoblin/user_pages/user.html:70
msgid "Email verification needed"
-msgstr "Potrebné overenie e-mailovej adresy"
+msgstr "Nutné overenie e-mailovej adresy"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
msgid "Almost done! Your account still needs to be activated."
-msgstr "Næsten færdig! Din konto skal stadig aktiveres."
+msgstr "Takmer hotovo! EÅ¡te je potrebné aktivovaÅ¥ tvoj úÄet."
#: mediagoblin/templates/mediagoblin/user_pages/user.html:58
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."
+msgstr "E-mail z inštrukciami ako na to by ti mal doraziť každú chvíľu."
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
msgid "In case it doesn't:"
-msgstr "Hvis det ikke gør:"
+msgstr "V prípade, že nie:"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:65
msgid "Resend verification email"
-msgstr "Gensend verificeringsemail"
+msgstr "Opätovne zaslať overovací e-mail."
#: mediagoblin/templates/mediagoblin/user_pages/user.html:73
msgid ""
"Someone has registered an account with this username, but it still has to be"
" activated."
-msgstr "ÚÄet s týmto prihlasovacím menom je už registrovaný, avÅ¡ak eÅ¡te stále neaktívny."
+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.html:79
#, 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áš overovaciu e-mailovú správu, tak sa môžeš <a href=\"%(login_url)s\">prihlásiť</a> a preposlať si ju."
+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/user_pages/user.html:96
msgid "Here's a spot to tell others about yourself."
-msgstr "Her kan du fortælle andre om dig selv."
+msgstr "Na tomto mieste môžeš povedať o sebe ostatným."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:101
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:100
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:117
msgid "Edit profile"
-msgstr "Ret profil"
+msgstr "Upraviť profil"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:105
msgid "This user hasn't filled in their profile (yet)."
-msgstr "DotyÄný používateľ eÅ¡te nevyplnil svoj profil (zatiaľ)."
+msgstr "DotyÄný používateľ (zatiaľ) nevyplnil svoj profil."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:124
+msgid "Browse collections"
+msgstr "Prehliadať kolekcie"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:137
#, python-format
msgid "View all of %(username)s's media"
-msgstr "Zhliadnuť všetky výtvory, ktoré vlastní %(username)s"
+msgstr "Zobraziť všetky výtvory, ktoré vlastní %(username)s"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:145
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:150
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, ale zatiaľ nemáš niÄ pridané."
+msgstr "VÅ¡etky tvoje výtvory sa objavia práve tu, zatiaľ vÅ¡ak nemáš niÄ pridané."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:162
#: 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 "Najskôr sa tu ešte nenachádzajú žiadne výtvory..."
+msgstr "Pravdepodobne sa tu nenachádzajú žiadne výtvory..."
#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
msgid "(remove)"
msgstr "(odstrániť)"
-#: mediagoblin/templates/mediagoblin/utils/collections.html:20
-#, python-format
-msgid "In collections (%(collected)s)"
-msgstr "V kolekciách (%(collected)s)"
+#: 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 "ČítaÄka Atom"
-
-#: mediagoblin/templates/mediagoblin/utils/geolocation_map.html:25
-msgid "Location"
-msgstr "Poloha"
-
-#: mediagoblin/templates/mediagoblin/utils/geolocation_map.html:53
-#, python-format
-msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-msgstr "Zobraziť na <a href=\"%(osm_url)s\">OpenStreetMap</a>"
+msgstr "Atom ÄítaÄka"
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
@@ -971,124 +1043,134 @@ msgstr "staršie"
msgid "Tagged with"
msgstr "OznaÄené ako"
-#: mediagoblin/tools/exif.py:78
+#: mediagoblin/tools/exif.py:80
msgid "Could not read the image file."
-msgstr "Nebolo možné preÄítaÅ¥ obrazový súbor."
+msgstr "Nemožno preÄítaÅ¥ súbor obrázka."
-#: mediagoblin/tools/response.py:30
+#: mediagoblin/tools/response.py:35
msgid "Oops!"
-msgstr "Hovsa!"
+msgstr "Hopla!"
-#: mediagoblin/tools/response.py:31
+#: mediagoblin/tools/response.py:36
msgid "An error occured"
-msgstr "Výskyt chyby"
+msgstr "Vyskytla sa chyba"
-#: mediagoblin/tools/response.py:46
+#: mediagoblin/tools/response.py:51
msgid "Operation not allowed"
msgstr "Nepovolená operácia"
-#: mediagoblin/tools/response.py:47
+#: mediagoblin/tools/response.py:52
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Ã¡Ä Hocikto, toto nesmieÅ¡!</p><p>Práve si chcel vykonaÅ¥ funkciu, na ktorú nemáš oprávnenie. Opäť si chcel skúsiÅ¥ odstrániÅ¥ vÅ¡etky používateľské úÄty?"
+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:55
+#: mediagoblin/tools/response.py:60
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 sa hľadaná stránka presunula inam, prípadne zmazala."
+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/user_pages/forms.py:28
+#: 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\">Markdown</a> for"
+" formatting."
+msgstr "Môžeš využiť <a href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> pre formátovanie príspevku."
+
+#: 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:32
+#: mediagoblin/user_pages/forms.py:35
msgid "I am sure I want to remove this item from the collection"
-msgstr "Rozhodne chcem odstrániť danú položku z kolekcie"
+msgstr "SkutoÄne chcem odstrániÅ¥ danú položku z kolekcie"
-#: mediagoblin/user_pages/forms.py:35
+#: 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:37
+#: mediagoblin/user_pages/forms.py:42
msgid "Include a note"
msgstr "Pridať poznámku"
#: mediagoblin/user_pages/lib.py:56
msgid "commented on your post"
-msgstr "skomentoval tvoj príspevok"
+msgstr "okmentoval tvoj príspevok"
-#: mediagoblin/user_pages/views.py:156
+#: mediagoblin/user_pages/views.py:166
msgid "Oops, your comment was empty."
-msgstr "Ajaj, tvoj komentár bol prázdny."
+msgstr "Hopla, tvoj komentár bol prázdny."
-#: mediagoblin/user_pages/views.py:162
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
-msgstr "Tvoj komentár bol zaslaný!"
+msgstr "Tvoj komentár bol pridaný!"
-#: mediagoblin/user_pages/views.py:230
+#: mediagoblin/user_pages/views.py:197
+msgid "Please check your entries and try again."
+msgstr "Prosím skontroluj svoje položky a skús znova."
+
+#: mediagoblin/user_pages/views.py:237
msgid "You have to select or add a collection"
-msgstr "Musíš vybrať alebo pridať kolekciu"
+msgstr "Musíš vybrať, prípadne pridať kolekciu"
-#: mediagoblin/user_pages/views.py:238
+#: mediagoblin/user_pages/views.py:248
#, python-format
msgid "\"%s\" already in collection \"%s\""
-msgstr "\"%s\" sa už nachádza v kolekcie \"%s\""
+msgstr "\"%s\" sa už nachádza v kolekcii \"%s\""
-#: mediagoblin/user_pages/views.py:253
+#: mediagoblin/user_pages/views.py:264
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr "\"%s pridané do kolekcie \"%s\""
-#: mediagoblin/user_pages/views.py:261
-msgid "Please check your entries and try again."
-msgstr "Prosím skontroluj svoje položky a skús znova."
-
-#: mediagoblin/user_pages/views.py:292
-msgid ""
-"Some of the files with this entry seem to be missing. Deleting anyway."
-msgstr "Niektoré súbory s danou položkou zrejme chýbajú.. Odstraňujem napriek tomu."
-
-#: mediagoblin/user_pages/views.py:297
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
msgstr "Výtvor bol tebou odstránený."
-#: mediagoblin/user_pages/views.py:304
+#: mediagoblin/user_pages/views.py:293
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:312
+#: mediagoblin/user_pages/views.py:301
msgid "You are about to delete another user's media. Proceed with caution."
-msgstr "Chystáš sa odstrániť výtvory niekoho iného. Dbaj na to."
+msgstr "Chystáš sa odstrániť výtvory niekoho iného. Pristupuj zodpovedne. "
-#: mediagoblin/user_pages/views.py:370
+#: mediagoblin/user_pages/views.py:375
msgid "You deleted the item from the collection."
msgstr "Položka bola z kolekcie odstránená."
-#: mediagoblin/user_pages/views.py:374
+#: mediagoblin/user_pages/views.py:379
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:384
+#: mediagoblin/user_pages/views.py:389
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 opatrne."
+msgstr "Chystáš sa odstrániť položku z kolekcie iného používateľa. Pristupuj zodpovedne. "
-#: mediagoblin/user_pages/views.py:417
+#: mediagoblin/user_pages/views.py:422
#, python-format
msgid "You deleted the collection \"%s\""
-msgstr "Kolekcia \"%s\" úspešne odstránená."
+msgstr "Kolekcia \"%s\" bola úspešne odstránená."
-#: mediagoblin/user_pages/views.py:424
+#: mediagoblin/user_pages/views.py:429
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:434
+#: mediagoblin/user_pages/views.py:439
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 opatrne."
+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
index 1599b039..dd3de81b 100644
--- a/mediagoblin/i18n/sl/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/sl/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/sl/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/sl/LC_MESSAGES/mediagoblin.po
index aa482e0c..98d62d59 100644
--- a/mediagoblin/i18n/sl/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/sl/LC_MESSAGES/mediagoblin.po
@@ -1,5 +1,5 @@
# Translations template for PROJECT.
-# Copyright (C) 2012 ORGANIZATION
+# Copyright (C) 2013 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: http://issues.mediagoblin.org/\n"
-"POT-Creation-Date: 2012-12-20 09:18-0600\n"
-"PO-Revision-Date: 2012-12-20 15:14+0000\n"
+"POT-Creation-Date: 2013-03-04 18:04-0600\n"
+"PO-Revision-Date: 2013-03-05 00:04+0000\n"
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
@@ -19,82 +19,96 @@ msgstr ""
"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"
-#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:41
+#: mediagoblin/auth/forms.py:28
+msgid "Invalid User name or email address."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:29
+msgid "This field does not take email addresses."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:30
+msgid "This field requires an email address."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:52 mediagoblin/auth/forms.py:67
msgid "Username"
msgstr "Uporabniško ime"
-#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:45
+#: mediagoblin/auth/forms.py:56 mediagoblin/auth/forms.py:71
msgid "Password"
msgstr "Geslo"
-#: mediagoblin/auth/forms.py:34
+#: mediagoblin/auth/forms.py:60
msgid "Email address"
msgstr "E-poštni naslov"
-#: mediagoblin/auth/forms.py:51
+#: mediagoblin/auth/forms.py:78
msgid "Username or email"
msgstr ""
-#: mediagoblin/auth/forms.py:58
-msgid "Incorrect input"
-msgstr ""
-
-#: mediagoblin/auth/views.py:55
+#: mediagoblin/auth/views.py:54
msgid "Sorry, registration is disabled on this instance."
msgstr "Oprostite, prijava za ta izvod ni omogoÄena."
-#: mediagoblin/auth/views.py:75
+#: mediagoblin/auth/views.py:68
msgid "Sorry, a user with that name already exists."
msgstr "Oprostite, uporabnik s tem imenom že obstaja."
-#: mediagoblin/auth/views.py:79
+#: mediagoblin/auth/views.py:72
msgid "Sorry, a user with that email address already exists."
msgstr ""
-#: mediagoblin/auth/views.py:182
+#: mediagoblin/auth/views.py:174
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."
-#: mediagoblin/auth/views.py:188
+#: mediagoblin/auth/views.py:180
msgid "The verification key or user id is incorrect"
msgstr "Potrditveni kljuÄ ali uporabniÅ¡ka identifikacija je napaÄna"
-#: mediagoblin/auth/views.py:206
+#: mediagoblin/auth/views.py:198
msgid "You must be logged in so we know who to send the email to!"
msgstr ""
-#: mediagoblin/auth/views.py:214
+#: mediagoblin/auth/views.py:206
msgid "You've already verified your email address!"
msgstr ""
-#: mediagoblin/auth/views.py:227
+#: mediagoblin/auth/views.py:219
msgid "Resent your verification email."
msgstr "Ponovno pošiljanje potrditvene e-pošte."
-#: mediagoblin/auth/views.py:263
+#: mediagoblin/auth/views.py:250
+msgid ""
+"If that email address (case sensitive!) is registered an email has been sent"
+" with instructions on how to change your password."
+msgstr ""
+
+#: mediagoblin/auth/views.py:261
+msgid "Couldn't find someone with that username."
+msgstr ""
+
+#: mediagoblin/auth/views.py:264
msgid ""
"An email has been sent with instructions on how to change your password."
msgstr ""
-#: mediagoblin/auth/views.py:273
+#: mediagoblin/auth/views.py:271
msgid ""
"Could not send password recovery email as your username is inactive or your "
"account's email address has not been verified."
msgstr ""
-#: mediagoblin/auth/views.py:285
-msgid "Couldn't find someone with that username or email."
-msgstr ""
-
-#: mediagoblin/auth/views.py:333
+#: mediagoblin/auth/views.py:328
msgid "You can now log in using your new password."
msgstr ""
-#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:82
+#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:93
#: mediagoblin/submit/forms.py:28 mediagoblin/submit/forms.py:47
-#: mediagoblin/user_pages/forms.py:40
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr "Naslov"
@@ -103,8 +117,8 @@ msgid "Description of this work"
msgstr ""
#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:52
-#: mediagoblin/edit/forms.py:86 mediagoblin/submit/forms.py:32
-#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:44
+#: mediagoblin/edit/forms.py:97 mediagoblin/submit/forms.py:32
+#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:49
msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
@@ -119,11 +133,11 @@ msgstr "Oznake"
msgid "Separate tags by commas."
msgstr ""
-#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:90
+#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:101
msgid "Slug"
msgstr "Oznaka"
-#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:91
+#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:102
msgid "The slug can't be empty"
msgstr "Oznaka ne sme biti prazna"
@@ -162,65 +176,81 @@ msgstr ""
msgid "New password"
msgstr ""
-#: mediagoblin/edit/forms.py:71
+#: mediagoblin/edit/forms.py:74
+msgid "License preference"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:80
+msgid "This will be your default license on upload forms."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:82
msgid "Email me when others comment on my media"
msgstr ""
-#: mediagoblin/edit/forms.py:83
+#: mediagoblin/edit/forms.py:94
msgid "The title can't be empty"
msgstr ""
-#: mediagoblin/edit/forms.py:85 mediagoblin/submit/forms.py:50
-#: mediagoblin/user_pages/forms.py:43
+#: mediagoblin/edit/forms.py:96 mediagoblin/submit/forms.py:50
+#: mediagoblin/user_pages/forms.py:48
msgid "Description of this collection"
msgstr ""
-#: mediagoblin/edit/forms.py:92
+#: mediagoblin/edit/forms.py:103
msgid ""
"The title part of this collection's address. You usually don't need to "
"change this."
msgstr ""
-#: mediagoblin/edit/views.py:65
+#: mediagoblin/edit/views.py:66
msgid "An entry with that slug already exists for this user."
msgstr "Vnos s to oznako za tega uporabnika že obstaja."
-#: mediagoblin/edit/views.py:86
+#: mediagoblin/edit/views.py:85
msgid "You are editing another user's media. Proceed with caution."
msgstr "Urejate vsebino drugega uporabnika. Nadaljujte pazljivo."
-#: mediagoblin/edit/views.py:156
+#: mediagoblin/edit/views.py:155
#, python-format
msgid "You added the attachment %s!"
msgstr ""
-#: mediagoblin/edit/views.py:181
+#: mediagoblin/edit/views.py:182
+msgid "You can only edit your own profile."
+msgstr ""
+
+#: mediagoblin/edit/views.py:188
msgid "You are editing a user's profile. Proceed with caution."
msgstr "Urejate uporabniški profil. Nadaljujte pazljivo."
-#: mediagoblin/edit/views.py:197
+#: mediagoblin/edit/views.py:204
msgid "Profile changes saved"
msgstr ""
-#: mediagoblin/edit/views.py:226 mediagoblin/edit/views.py:246
+#: mediagoblin/edit/views.py:241
+msgid "Wrong password"
+msgstr ""
+
+#: mediagoblin/edit/views.py:252
msgid "Account settings saved"
msgstr ""
-#: mediagoblin/edit/views.py:251
-msgid "Wrong password"
+#: mediagoblin/edit/views.py:286
+msgid "You need to confirm the deletion of your account."
msgstr ""
-#: mediagoblin/edit/views.py:287 mediagoblin/submit/views.py:211
-#: mediagoblin/user_pages/views.py:210
+#: mediagoblin/edit/views.py:322 mediagoblin/submit/views.py:142
+#: mediagoblin/user_pages/views.py:214
#, python-format
msgid "You already have a collection called \"%s\"!"
msgstr ""
-#: mediagoblin/edit/views.py:291
+#: mediagoblin/edit/views.py:326
msgid "A collection with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:308
+#: mediagoblin/edit/views.py:343
msgid "You are editing another user's collection. Proceed with caution."
msgstr ""
@@ -236,54 +266,62 @@ msgstr ""
msgid "However, old link directory symlink found; removed.\n"
msgstr ""
-#: mediagoblin/media_types/__init__.py:60
-#: mediagoblin/media_types/__init__.py:101
+#: 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:61
+#: mediagoblin/media_types/__init__.py:102
msgid "Sorry, I don't support that file type :("
msgstr ""
-#: mediagoblin/media_types/video/processing.py:35
+#: mediagoblin/media_types/video/processing.py:36
msgid "Video transcoding failed"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:26
-msgid "Client ID"
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
+msgid "Location"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:28
-msgid "Next URL"
+#: 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/oauth/forms.py:30
+#: mediagoblin/plugins/oauth/forms.py:29
msgid "Allow"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:31
+#: mediagoblin/plugins/oauth/forms.py:30
msgid "Deny"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:35
+#: mediagoblin/plugins/oauth/forms.py:34
msgid "Name"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:36
+#: mediagoblin/plugins/oauth/forms.py:35
msgid "The name of the OAuth client"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:37
+#: mediagoblin/plugins/oauth/forms.py:36
msgid "Description"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:39
+#: 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:41
+#: mediagoblin/plugins/oauth/forms.py:40
msgid "Type"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:46
+#: 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"
@@ -293,25 +331,40 @@ msgid ""
" JavaScript client)."
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:53
+#: mediagoblin/plugins/oauth/forms.py:52
msgid "Redirect URI"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:55
+#: 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:67
+#: mediagoblin/plugins/oauth/forms.py:66
msgid "This field is required for public clients"
msgstr ""
-#: mediagoblin/plugins/oauth/views.py:60
+#: mediagoblin/plugins/oauth/views.py:59
msgid "The client {0} has been registered!"
msgstr ""
-#: mediagoblin/processing/__init__.py:138
+#: 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/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:172
msgid "Invalid file given for media type."
msgstr "Za vrsto vsebine je bila podana napaÄna datoteka."
@@ -319,56 +372,74 @@ msgstr "Za vrsto vsebine je bila podana napaÄna datoteka."
msgid "File"
msgstr "Datoteka"
-#: mediagoblin/submit/views.py:57
+#: mediagoblin/submit/views.py:51
msgid "You must provide a file."
msgstr "Podati morate datoteko."
-#: mediagoblin/submit/views.py:164
+#: mediagoblin/submit/views.py:97
msgid "Woohoo! Submitted!"
msgstr "Juhej! Poslano."
-#: mediagoblin/submit/views.py:215
+#: mediagoblin/submit/views.py:146
#, python-format
msgid "Collection \"%s\" added!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:48
-msgid "MediaGoblin logo"
-msgstr "Logotip MediaGoblin"
+#: mediagoblin/templates/mediagoblin/base.html:64
+msgid "Verify your email!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "log out"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:54
+#: mediagoblin/templates/mediagoblin/base.html:70
+#: mediagoblin/templates/mediagoblin/auth/login.html:28
+#: mediagoblin/templates/mediagoblin/auth/login.html:36
+#: mediagoblin/templates/mediagoblin/auth/login.html:54
+msgid "Log in"
+msgstr "Prijava"
+
+#: mediagoblin/templates/mediagoblin/base.html:79
#, python-format
msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:60
-msgid "log out"
+#: mediagoblin/templates/mediagoblin/base.html:86
+msgid "Change account settings"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:62
-#: mediagoblin/templates/mediagoblin/root.html:28
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:151
+#: mediagoblin/templates/mediagoblin/base.html:90
+#: mediagoblin/templates/mediagoblin/base.html:105
+#: mediagoblin/templates/mediagoblin/admin/panel.html:21
+#: mediagoblin/templates/mediagoblin/admin/panel.html:26
+#: 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"
+
+#: mediagoblin/templates/mediagoblin/base.html:93
+msgid "Log out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:156
msgid "Add media"
msgstr "Dodaj vsebino"
-#: mediagoblin/templates/mediagoblin/base.html:68
-msgid "Verify your email!"
+#: mediagoblin/templates/mediagoblin/base.html:99
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
+msgid "Create new collection"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:73
-#: mediagoblin/templates/mediagoblin/auth/login.html:28
-#: mediagoblin/templates/mediagoblin/auth/login.html:36
-#: mediagoblin/templates/mediagoblin/auth/login.html:54
-msgid "Log in"
-msgstr "Prijava"
-
-#: mediagoblin/templates/mediagoblin/base.html:87
+#: mediagoblin/templates/mediagoblin/base.html:122
+#, python-format
msgid ""
-"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
-"href=\"http://gnu.org/\">GNU</a> project."
+"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/base.html:90
+#: mediagoblin/templates/mediagoblin/base.html:125
#, python-format
msgid ""
"Released under the <a "
@@ -380,52 +451,31 @@ msgstr ""
msgid "Image of goblin stressing out"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:25
-msgid "Actions"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/root.html:31
-msgid "Create new collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:34
-msgid "Change account settings"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:38
-#: mediagoblin/templates/mediagoblin/root.html:44
-#: mediagoblin/templates/mediagoblin/admin/panel.html:21
-#: mediagoblin/templates/mediagoblin/admin/panel.html:26
-#: 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"
-
-#: mediagoblin/templates/mediagoblin/root.html:51
msgid "Explore"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:53
+#: mediagoblin/templates/mediagoblin/root.html:33
msgid "Hi there, welcome to this MediaGoblin site!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:55
+#: mediagoblin/templates/mediagoblin/root.html:35
msgid ""
"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
"extraordinarily great piece of media hosting software."
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:56
+#: mediagoblin/templates/mediagoblin/root.html:36
msgid ""
"To add your own media, place comments, and more, you can log in with your "
"MediaGoblin account."
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:58
+#: mediagoblin/templates/mediagoblin/root.html:38
msgid "Don't have one yet? It's easy!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:59
+#: mediagoblin/templates/mediagoblin/root.html:39
#, python-format
msgid ""
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Create an account at this site</a>\n"
@@ -433,7 +483,7 @@ msgid ""
" <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:67
+#: mediagoblin/templates/mediagoblin/root.html:47
msgid "Most recent media"
msgstr ""
@@ -539,41 +589,62 @@ msgid ""
"%(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"
+#: mediagoblin/templates/mediagoblin/bits/logo.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/bits/logo.html:23
+msgid "MediaGoblin logo"
+msgstr "Logotip 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:43
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:159
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:175
msgid "Attachments"
msgstr ""
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
msgid "Add attachment"
msgstr ""
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:60
+#: 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:81
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
msgid "Cancel"
msgstr "PrekliÄi"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:62
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:51
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
msgid "Save changes"
msgstr "Shrani spremembe"
+#: 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:47
+#: 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
@@ -586,13 +657,17 @@ msgstr "Urejanje %(media_title)s"
msgid "Changing %(username)s's account settings"
msgstr ""
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
+msgid "Delete my account"
+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:35
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
#, python-format
msgid "Editing %(username)s's profile"
msgstr "Urejanje profila – %(username)s"
@@ -608,7 +683,7 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
msgstr ""
@@ -631,7 +706,7 @@ msgid ""
msgstr ""
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:56
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:61
msgid "Original file"
msgstr ""
@@ -643,8 +718,8 @@ msgstr ""
#: 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:67
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
+#: 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 ""
@@ -689,21 +764,21 @@ msgstr ""
msgid "Object Height"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
msgid ""
-"Sorry, this video will not work because \n"
-"\t your web browser does not support HTML5 \n"
-"\t video."
+"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:43
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:47
msgid ""
"You can get a modern web browser that \n"
-"\t can play this video at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:69
msgid "WebM file (640p; VP8/Vorbis)"
msgstr ""
@@ -711,12 +786,6 @@ msgstr ""
msgid "Add a collection"
msgstr ""
-#: mediagoblin/templates/mediagoblin/submit/collection.html:30
-#: mediagoblin/templates/mediagoblin/submit/start.html:34
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-msgid "Add"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
msgid "Add your media"
@@ -733,12 +802,12 @@ 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:87
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
msgid "Edit"
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:91
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
msgid "Delete"
msgstr ""
@@ -748,11 +817,6 @@ msgstr ""
msgid "Really delete %(title)s?"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:47
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Delete permanently"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:31
#, python-format
msgid "Really remove %(media_title)s from %(collection_title)s?"
@@ -762,6 +826,16 @@ msgstr ""
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 ""
@@ -774,56 +848,53 @@ msgstr ""
msgid "%(username)s's media"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:37
+#: 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 "Vsebina uporabnika <a href=\"%(user_url)s\">%(username)s</a>"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:46
+#: 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:102
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:94
msgid "Add a comment"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:109
-msgid ""
-"You can use <a "
-"href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> for"
-" formatting."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:113
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:102
msgid "Add this comment"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:123
msgid "at"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:152
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:144
#, python-format
msgid ""
"<h3>Added on</h3>\n"
" <p>%(date)s</p>"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:202
-msgid "Add media to collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
#, python-format
-msgid "Add %(title)s to collection"
+msgid "Add “%(media_title)s†to a collection"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:51
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
msgstr ""
@@ -885,27 +956,31 @@ msgstr "Če ste ta oseba vi, a ste izgubili potrditveno e-pošto, se lahko <a hr
msgid "Here's a spot to tell others about yourself."
msgstr "Na tem mestu lahko drugim poveste nekaj o sebi."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:101
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:100
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:117
msgid "Edit profile"
msgstr "Uredi profil"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:105
msgid "This user hasn't filled in their profile (yet)."
msgstr "Ta uporabnik še ni izpolnil svojega profila."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:124
+msgid "Browse collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:137
#, python-format
msgid "View all of %(username)s's media"
msgstr "Prikaži vso vsebino uporabnika %(username)s"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:145
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:150
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Ä."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:162
#: 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..."
@@ -915,28 +990,24 @@ msgstr "Videti je, da tu še ni nobene vsebine ..."
msgid "(remove)"
msgstr ""
-#: mediagoblin/templates/mediagoblin/utils/collections.html:20
-#, python-format
-msgid "In collections (%(collected)s)"
+#: 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 "Ikona vira"
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:23
msgid "Atom feed"
msgstr "Ikona Atom"
-#: mediagoblin/templates/mediagoblin/utils/geolocation_map.html:25
-msgid "Location"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/utils/geolocation_map.html:53
-#, python-format
-msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
msgstr ""
@@ -967,49 +1038,64 @@ msgstr ""
msgid "Tagged with"
msgstr ""
-#: mediagoblin/tools/exif.py:78
+#: mediagoblin/tools/exif.py:80
msgid "Could not read the image file."
msgstr ""
-#: mediagoblin/tools/response.py:30
+#: mediagoblin/tools/response.py:35
msgid "Oops!"
msgstr "Opa!"
-#: mediagoblin/tools/response.py:31
+#: mediagoblin/tools/response.py:36
msgid "An error occured"
msgstr ""
-#: mediagoblin/tools/response.py:46
+#: mediagoblin/tools/response.py:51
msgid "Operation not allowed"
msgstr ""
-#: mediagoblin/tools/response.py:47
+#: mediagoblin/tools/response.py:52
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:55
+#: mediagoblin/tools/response.py:60
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/user_pages/forms.py:28
+#: 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\">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:32
+#: 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:35
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:40
msgid "-- Select --"
msgstr ""
-#: mediagoblin/user_pages/forms.py:37
+#: mediagoblin/user_pages/forms.py:42
msgid "Include a note"
msgstr ""
@@ -1017,74 +1103,69 @@ msgstr ""
msgid "commented on your post"
msgstr ""
-#: mediagoblin/user_pages/views.py:156
+#: mediagoblin/user_pages/views.py:166
msgid "Oops, your comment was empty."
msgstr ""
-#: mediagoblin/user_pages/views.py:162
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
msgstr ""
-#: mediagoblin/user_pages/views.py:230
+#: mediagoblin/user_pages/views.py:197
+msgid "Please check your entries and try again."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:237
msgid "You have to select or add a collection"
msgstr ""
-#: mediagoblin/user_pages/views.py:238
+#: mediagoblin/user_pages/views.py:248
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:253
+#: mediagoblin/user_pages/views.py:264
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:261
-msgid "Please check your entries and try again."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:292
-msgid ""
-"Some of the files with this entry seem to be missing. Deleting anyway."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:297
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
msgstr ""
-#: mediagoblin/user_pages/views.py:304
+#: mediagoblin/user_pages/views.py:293
msgid "The media was not deleted because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/user_pages/views.py:312
+#: mediagoblin/user_pages/views.py:301
msgid "You are about to delete another user's media. Proceed with caution."
msgstr ""
-#: mediagoblin/user_pages/views.py:370
+#: mediagoblin/user_pages/views.py:375
msgid "You deleted the item from the collection."
msgstr ""
-#: mediagoblin/user_pages/views.py:374
+#: mediagoblin/user_pages/views.py:379
msgid "The item was not removed because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/user_pages/views.py:384
+#: mediagoblin/user_pages/views.py:389
msgid ""
"You are about to delete an item from another user's collection. Proceed with"
" caution."
msgstr ""
-#: mediagoblin/user_pages/views.py:417
+#: mediagoblin/user_pages/views.py:422
#, python-format
msgid "You deleted the collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:424
+#: mediagoblin/user_pages/views.py:429
msgid ""
"The collection was not deleted because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/user_pages/views.py:434
+#: mediagoblin/user_pages/views.py:439
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
index 64880aed..276f1273 100644
--- a/mediagoblin/i18n/sq/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/sq/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/sq/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/sq/LC_MESSAGES/mediagoblin.po
index 2911f34e..5c965623 100644
--- a/mediagoblin/i18n/sq/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/sq/LC_MESSAGES/mediagoblin.po
@@ -1,5 +1,5 @@
# Translations template for PROJECT.
-# Copyright (C) 2012 ORGANIZATION
+# Copyright (C) 2013 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: http://issues.mediagoblin.org/\n"
-"POT-Creation-Date: 2012-12-20 09:18-0600\n"
-"PO-Revision-Date: 2012-12-20 15:14+0000\n"
+"POT-Creation-Date: 2013-03-04 18:04-0600\n"
+"PO-Revision-Date: 2013-03-05 00:04+0000\n"
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
"Language-Team: Albanian (http://www.transifex.com/projects/p/mediagoblin/language/sq/)\n"
"MIME-Version: 1.0\n"
@@ -20,82 +20,96 @@ msgstr ""
"Language: sq\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:41
+#: mediagoblin/auth/forms.py:28
+msgid "Invalid User name or email address."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:29
+msgid "This field does not take email addresses."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:30
+msgid "This field requires an email address."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:52 mediagoblin/auth/forms.py:67
msgid "Username"
msgstr "Emër përdoruesi"
-#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:45
+#: mediagoblin/auth/forms.py:56 mediagoblin/auth/forms.py:71
msgid "Password"
msgstr "Fjalëkalim"
-#: mediagoblin/auth/forms.py:34
+#: mediagoblin/auth/forms.py:60
msgid "Email address"
msgstr "Adresë email"
-#: mediagoblin/auth/forms.py:51
+#: mediagoblin/auth/forms.py:78
msgid "Username or email"
msgstr "Emër përdoruesi ose email"
-#: mediagoblin/auth/forms.py:58
-msgid "Incorrect input"
-msgstr "Futje e pasaktë"
-
-#: mediagoblin/auth/views.py:55
+#: mediagoblin/auth/views.py:54
msgid "Sorry, registration is disabled on this instance."
msgstr "Na njdeni, regjistrimi në këtë instancë të shërbimit është i çaktivizuar."
-#: mediagoblin/auth/views.py:75
+#: mediagoblin/auth/views.py:68
msgid "Sorry, a user with that name already exists."
msgstr "Na ndjeni, ka tashmë një përdorues me këtë emër."
-#: mediagoblin/auth/views.py:79
+#: mediagoblin/auth/views.py:72
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:182
+#: mediagoblin/auth/views.py:174
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:188
+#: mediagoblin/auth/views.py:180
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:206
+#: mediagoblin/auth/views.py:198
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!"
-#: mediagoblin/auth/views.py:214
+#: mediagoblin/auth/views.py:206
msgid "You've already verified your email address!"
msgstr "Thuajse e keni verifikuar adresën tuaj email!"
-#: mediagoblin/auth/views.py:227
+#: mediagoblin/auth/views.py:219
msgid "Resent your verification email."
msgstr "Ridërgoni email-in tuaj të verifikimit."
-#: mediagoblin/auth/views.py:263
+#: mediagoblin/auth/views.py:250
+msgid ""
+"If that email address (case sensitive!) is registered an email has been sent"
+" with instructions on how to change your password."
+msgstr ""
+
+#: mediagoblin/auth/views.py:261
+msgid "Couldn't find someone with that username."
+msgstr ""
+
+#: mediagoblin/auth/views.py:264
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/auth/views.py:273
+#: mediagoblin/auth/views.py:271
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/auth/views.py:285
-msgid "Couldn't find someone with that username or email."
-msgstr "Nuk u gjet dot dikush me atë emër përdoruesi ose email."
-
-#: mediagoblin/auth/views.py:333
+#: mediagoblin/auth/views.py:328
msgid "You can now log in using your new password."
msgstr "Tani mun të hyni duke përdorur fjalëkalimin tuaj të ri."
-#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:82
+#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:93
#: mediagoblin/submit/forms.py:28 mediagoblin/submit/forms.py:47
-#: mediagoblin/user_pages/forms.py:40
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr "Titull"
@@ -104,8 +118,8 @@ msgid "Description of this work"
msgstr "Përshkrim i kësaj pune"
#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:52
-#: mediagoblin/edit/forms.py:86 mediagoblin/submit/forms.py:32
-#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:44
+#: mediagoblin/edit/forms.py:97 mediagoblin/submit/forms.py:32
+#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:49
msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
@@ -120,11 +134,11 @@ msgstr "Etiketa"
msgid "Separate tags by commas."
msgstr "Ndajini etiketat me presje."
-#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:90
+#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:101
msgid "Slug"
msgstr "Identifikues"
-#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:91
+#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:102
msgid "The slug can't be empty"
msgstr "Identifikuesi s'mund të jetë i zbrazët"
@@ -163,65 +177,81 @@ msgstr "Jepni fjalëkalimin tuaj të vjetër që të provohet se këtë llogari
msgid "New password"
msgstr "Fjalëkalimi i ri"
-#: mediagoblin/edit/forms.py:71
+#: mediagoblin/edit/forms.py:74
+msgid "License preference"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:80
+msgid "This will be your default license on upload forms."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:82
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:83
+#: mediagoblin/edit/forms.py:94
msgid "The title can't be empty"
msgstr "Titulli s'mund të jetë i zbrazët"
-#: mediagoblin/edit/forms.py:85 mediagoblin/submit/forms.py:50
-#: mediagoblin/user_pages/forms.py:43
+#: mediagoblin/edit/forms.py:96 mediagoblin/submit/forms.py:50
+#: mediagoblin/user_pages/forms.py:48
msgid "Description of this collection"
msgstr "Përshkrim i këtij koleksioni"
-#: mediagoblin/edit/forms.py:92
+#: mediagoblin/edit/forms.py:103
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/views.py:65
+#: mediagoblin/edit/views.py:66
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:86
+#: mediagoblin/edit/views.py:85
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:156
+#: mediagoblin/edit/views.py:155
#, python-format
msgid "You added the attachment %s!"
msgstr "Shtuat bashkangjitjen %s!"
-#: mediagoblin/edit/views.py:181
+#: mediagoblin/edit/views.py:182
+msgid "You can only edit your own profile."
+msgstr ""
+
+#: mediagoblin/edit/views.py:188
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:197
+#: mediagoblin/edit/views.py:204
msgid "Profile changes saved"
msgstr "Ndryshimet e profilit u ruajtën"
-#: mediagoblin/edit/views.py:226 mediagoblin/edit/views.py:246
+#: mediagoblin/edit/views.py:241
+msgid "Wrong password"
+msgstr "Fjalëkalim i gabuar"
+
+#: mediagoblin/edit/views.py:252
msgid "Account settings saved"
msgstr "Rregullimet e llogarisë u ruajtën"
-#: mediagoblin/edit/views.py:251
-msgid "Wrong password"
-msgstr "Fjalëkalim i gabuar"
+#: mediagoblin/edit/views.py:286
+msgid "You need to confirm the deletion of your account."
+msgstr ""
-#: mediagoblin/edit/views.py:287 mediagoblin/submit/views.py:211
-#: mediagoblin/user_pages/views.py:210
+#: mediagoblin/edit/views.py:322 mediagoblin/submit/views.py:142
+#: mediagoblin/user_pages/views.py:214
#, python-format
msgid "You already have a collection called \"%s\"!"
msgstr "Keni tashmë një koleksion të quajtur \"%s\"!"
-#: mediagoblin/edit/views.py:291
+#: mediagoblin/edit/views.py:326
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:308
+#: mediagoblin/edit/views.py:343
msgid "You are editing another user's collection. Proceed with caution."
msgstr "Po përpunoni koleksionin e një tjetër përdoruesi. Hapni sytë."
@@ -237,54 +267,62 @@ msgstr "Nuk ka drejtori asetesh për këtë temë\n"
msgid "However, old link directory symlink found; removed.\n"
msgstr "Sidoqoftë, u gjet simlidhje e vjetër drejtorie lidhjesh; u hoq.\n"
-#: mediagoblin/media_types/__init__.py:60
-#: mediagoblin/media_types/__init__.py:101
+#: 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:61
+#: mediagoblin/media_types/__init__.py:102
msgid "Sorry, I don't support that file type :("
msgstr "Na ndjeni, nuk e mbullojmë këtë lloj kartele :("
-#: mediagoblin/media_types/video/processing.py:35
+#: mediagoblin/media_types/video/processing.py:36
msgid "Video transcoding failed"
msgstr "Ndërkodimi i videos dështoi"
-#: mediagoblin/plugins/oauth/forms.py:26
-msgid "Client ID"
-msgstr "ID klienti"
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
+msgid "Location"
+msgstr "Vend"
-#: mediagoblin/plugins/oauth/forms.py:28
-msgid "Next URL"
-msgstr "URL-ja Pasuese"
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:52
+#, python-format
+msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
+msgstr "Shiheni te <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-#: mediagoblin/plugins/oauth/forms.py:30
+#: mediagoblin/plugins/oauth/forms.py:29
msgid "Allow"
msgstr "Lejoje"
-#: mediagoblin/plugins/oauth/forms.py:31
+#: mediagoblin/plugins/oauth/forms.py:30
msgid "Deny"
msgstr "Mohoje"
-#: mediagoblin/plugins/oauth/forms.py:35
+#: mediagoblin/plugins/oauth/forms.py:34
msgid "Name"
msgstr "Emër"
-#: mediagoblin/plugins/oauth/forms.py:36
+#: mediagoblin/plugins/oauth/forms.py:35
msgid "The name of the OAuth client"
msgstr "Emri i klientit OAuth"
-#: mediagoblin/plugins/oauth/forms.py:37
+#: mediagoblin/plugins/oauth/forms.py:36
msgid "Description"
msgstr "Përshkrim"
-#: mediagoblin/plugins/oauth/forms.py:39
+#: 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:41
+#: mediagoblin/plugins/oauth/forms.py:40
msgid "Type"
msgstr "Lloj"
-#: mediagoblin/plugins/oauth/forms.py:46
+#: 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"
@@ -294,25 +332,40 @@ msgid ""
" 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:53
+#: mediagoblin/plugins/oauth/forms.py:52
msgid "Redirect URI"
msgstr "URI Ridrejtimi"
-#: mediagoblin/plugins/oauth/forms.py:55
+#: 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:67
+#: 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:60
+#: mediagoblin/plugins/oauth/views.py:59
msgid "The client {0} has been registered!"
msgstr "Klienti {0} u regjistrua!"
-#: mediagoblin/processing/__init__.py:138
+#: 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/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr "Shtoni"
+
+#: mediagoblin/processing/__init__.py:172
msgid "Invalid file given for media type."
msgstr "Kartelë e gabuar e dhënë për llojin e medias."
@@ -320,56 +373,74 @@ msgstr "Kartelë e gabuar e dhënë për llojin e medias."
msgid "File"
msgstr "Kartelë"
-#: mediagoblin/submit/views.py:57
+#: mediagoblin/submit/views.py:51
msgid "You must provide a file."
msgstr "Duhet të jepni një kartelë."
-#: mediagoblin/submit/views.py:164
+#: mediagoblin/submit/views.py:97
msgid "Woohoo! Submitted!"
msgstr "Yhaaaaaa! U parashtrua!"
-#: mediagoblin/submit/views.py:215
+#: mediagoblin/submit/views.py:146
#, python-format
msgid "Collection \"%s\" added!"
msgstr "U shtua koleksioni \"%s\"!"
-#: mediagoblin/templates/mediagoblin/base.html:48
-msgid "MediaGoblin logo"
-msgstr "Logoja e MediaGoblin-it"
-
-#: mediagoblin/templates/mediagoblin/base.html:54
-#, 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:64
+msgid "Verify your email!"
+msgstr "Verifikoni email-in tuaj!"
-#: mediagoblin/templates/mediagoblin/base.html:60
+#: mediagoblin/templates/mediagoblin/base.html:65
msgid "log out"
msgstr "dilni"
-#: mediagoblin/templates/mediagoblin/base.html:62
-#: mediagoblin/templates/mediagoblin/root.html:28
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:151
-msgid "Add media"
-msgstr "Shtoni media"
-
-#: mediagoblin/templates/mediagoblin/base.html:68
-msgid "Verify your email!"
-msgstr "Verifikoni email-in tuaj!"
-
-#: mediagoblin/templates/mediagoblin/base.html:73
+#: mediagoblin/templates/mediagoblin/base.html:70
#: mediagoblin/templates/mediagoblin/auth/login.html:28
#: mediagoblin/templates/mediagoblin/auth/login.html:36
#: mediagoblin/templates/mediagoblin/auth/login.html:54
msgid "Log in"
msgstr "Hyni"
-#: mediagoblin/templates/mediagoblin/base.html:87
-msgid ""
-"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
-"href=\"http://gnu.org/\">GNU</a> project."
-msgstr "Bazuar në <a href=\"http://mediagoblin.org\">MediaGoblin</a>, një projekt <a href=\"http://gnu.org/\">GNU</a>."
+#: mediagoblin/templates/mediagoblin/base.html:79
+#, 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:86
+msgid "Change account settings"
+msgstr "Ndryshoni rregullime llogarie"
#: mediagoblin/templates/mediagoblin/base.html:90
+#: mediagoblin/templates/mediagoblin/base.html:105
+#: mediagoblin/templates/mediagoblin/admin/panel.html:21
+#: mediagoblin/templates/mediagoblin/admin/panel.html:26
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
+msgid "Media processing panel"
+msgstr "Paneli i Përpunimit të Medias"
+
+#: mediagoblin/templates/mediagoblin/base.html:93
+msgid "Log out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:156
+msgid "Add media"
+msgstr "Shtoni media"
+
+#: mediagoblin/templates/mediagoblin/base.html:99
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
+msgid "Create new collection"
+msgstr "Krijoni koleksion të ri"
+
+#: mediagoblin/templates/mediagoblin/base.html:122
+#, 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/base.html:125
#, python-format
msgid ""
"Released under the <a "
@@ -381,52 +452,31 @@ msgstr "Hedhur në qarkullim sipas <a href=\"http://www.fsf.org/licensing/licens
msgid "Image of goblin stressing out"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:25
-msgid "Actions"
-msgstr "Veprime"
-
#: mediagoblin/templates/mediagoblin/root.html:31
-msgid "Create new collection"
-msgstr "Krijoni koleksion të ri"
-
-#: mediagoblin/templates/mediagoblin/root.html:34
-msgid "Change account settings"
-msgstr "Ndryshoni rregullime llogarie"
-
-#: mediagoblin/templates/mediagoblin/root.html:38
-#: mediagoblin/templates/mediagoblin/root.html:44
-#: mediagoblin/templates/mediagoblin/admin/panel.html:21
-#: mediagoblin/templates/mediagoblin/admin/panel.html:26
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
-msgid "Media processing panel"
-msgstr "Paneli i Përpunimit të Medias"
-
-#: mediagoblin/templates/mediagoblin/root.html:51
msgid "Explore"
msgstr "Eksploroni"
-#: mediagoblin/templates/mediagoblin/root.html:53
+#: mediagoblin/templates/mediagoblin/root.html:33
msgid "Hi there, welcome to this MediaGoblin site!"
msgstr "Tungjatjeta juaj, mirë se vini te ky site MediaGoblin!"
-#: mediagoblin/templates/mediagoblin/root.html:55
+#: mediagoblin/templates/mediagoblin/root.html:35
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."
-#: mediagoblin/templates/mediagoblin/root.html:56
+#: mediagoblin/templates/mediagoblin/root.html:36
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/root.html:58
+#: mediagoblin/templates/mediagoblin/root.html:38
msgid "Don't have one yet? It's easy!"
msgstr "Nuk keni ende një të tillë? Është e lehtë!"
-#: mediagoblin/templates/mediagoblin/root.html:59
+#: mediagoblin/templates/mediagoblin/root.html:39
#, python-format
msgid ""
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Create an account at this site</a>\n"
@@ -434,7 +484,7 @@ msgid ""
" <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
msgstr "<a class=\"button_action_highlight\" href=\"%(register_url)s\">Krijoni një llogarin te ky site</a>\n ose\n <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Instaloni dhe rregulloni MediaGoblin-in te shërbyesi juaj</a>"
-#: mediagoblin/templates/mediagoblin/root.html:67
+#: mediagoblin/templates/mediagoblin/root.html:47
msgid "Most recent media"
msgstr "Mediat më të reja"
@@ -540,41 +590,62 @@ msgid ""
"%(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"
+#: mediagoblin/templates/mediagoblin/bits/logo.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/bits/logo.html:23
+msgid "MediaGoblin logo"
+msgstr "Logoja e MediaGoblin-it"
+
#: mediagoblin/templates/mediagoblin/edit/attachments.html:23
#: mediagoblin/templates/mediagoblin/edit/attachments.html:35
#, python-format
msgid "Editing attachments for %(media_title)s"
msgstr "Po përpunohen bashkangjitjet për %(media_title)s"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:43
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:159
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:175
msgid "Attachments"
msgstr "Bashkangjitje"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
msgid "Add attachment"
msgstr "Shtoni bashkangjitje"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:60
+#: 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:81
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
msgid "Cancel"
msgstr "Anuloje"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:62
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:51
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
msgid "Save changes"
msgstr "Ruaji ndryshimet"
+#: 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:47
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
+msgid "Delete permanently"
+msgstr "Fshije përgjithmonë"
+
#: mediagoblin/templates/mediagoblin/edit/edit.html:23
#: mediagoblin/templates/mediagoblin/edit/edit.html:35
#, python-format
@@ -587,13 +658,17 @@ msgstr "Po përpunohet %(media_title)s"
msgid "Changing %(username)s's account settings"
msgstr "Po ndryshohen rregullimet e llogarisë %(username)s"
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
+msgid "Delete my account"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:29
#, python-format
msgid "Editing %(collection_title)s"
msgstr "Po përpunohet %(collection_title)s"
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:23
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
#, python-format
msgid "Editing %(username)s's profile"
msgstr "Po përpunohet profili i %(username)s"
@@ -609,7 +684,7 @@ msgstr "Media e etiketuar 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/stl.html:136
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
msgstr "Shkarkojeni"
@@ -632,7 +707,7 @@ msgid ""
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>!"
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:56
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:61
msgid "Original file"
msgstr "Kartela origjinale"
@@ -644,8 +719,8 @@ msgstr "Kartelë WebM (kodek Vorbis)"
#: 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:67
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
+#: 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 "Figurë për %(media_title)s"
@@ -690,21 +765,21 @@ msgstr "Format Kartele"
msgid "Object Height"
msgstr "Lartësi Objekti"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
msgid ""
-"Sorry, this video will not work because \n"
-"\t your web browser does not support HTML5 \n"
-"\t video."
-msgstr "Na ndjeni, kjo video s'do të funksionojë, ngaqë \n\t shfletuesi juaj web s'mbulon video HTML5."
+"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:43
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:47
msgid ""
"You can get a modern web browser that \n"
-"\t can play this video at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
-msgstr "Një shfletues web modern që \n\t mund ta luajë këtë video mund ta merrni te <a href=\"http://getfirefox.com\">\n\t http://getfirefox.com</a>!"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:69
msgid "WebM file (640p; VP8/Vorbis)"
msgstr "Kartelë WebM (640p; VP8/Vorbis)"
@@ -712,12 +787,6 @@ msgstr "Kartelë WebM (640p; VP8/Vorbis)"
msgid "Add a collection"
msgstr "Shtoni një koleksion"
-#: mediagoblin/templates/mediagoblin/submit/collection.html:30
-#: mediagoblin/templates/mediagoblin/submit/start.html:34
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-msgid "Add"
-msgstr "Shtoni"
-
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
msgid "Add your media"
@@ -734,12 +803,12 @@ msgid "%(collection_title)s by <a href=\"%(user_url)s\">%(username)s</a>"
msgstr "%(collection_title)s nga <a href=\"%(user_url)s\">%(username)s</a>"
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:87
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
msgid "Edit"
msgstr "Përpunoni"
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:91
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
msgid "Delete"
msgstr "Fshije"
@@ -749,11 +818,6 @@ msgstr "Fshije"
msgid "Really delete %(title)s?"
msgstr "Të fshihet vërtet %(title)s?"
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:47
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Delete permanently"
-msgstr "Fshije përgjithmonë"
-
#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:31
#, python-format
msgid "Really remove %(media_title)s from %(collection_title)s?"
@@ -763,6 +827,16 @@ msgstr "Të hiqet vërtet %(media_title)s nga %(collection_title)s?"
msgid "Remove"
msgstr "Hiqe"
+#: 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 ""
@@ -775,56 +849,53 @@ msgstr "Tungjatjeta %(username)s,\n%(comment_author)s ka komentuar te postimi ju
msgid "%(username)s's media"
msgstr "Media nga %(username)s"
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:37
+#: 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 "Media nga <a href=\"%(user_url)s\">%(username)s</a>"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
#, 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:102
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:94
msgid "Add a comment"
msgstr "Shtoni një koment"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:109
-msgid ""
-"You can use <a "
-"href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> for"
-" formatting."
-msgstr "Për formatime mund të përdorni <a href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a>."
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:113
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:102
msgid "Add this comment"
msgstr "Shtoje këtë koment"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:123
msgid "at"
msgstr "te"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:152
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:144
#, python-format
msgid ""
"<h3>Added on</h3>\n"
" <p>%(date)s</p>"
msgstr "<h3>Shtuar më</h3>\n <p>%(date)s</p>"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:202
-msgid "Add media to collection"
-msgstr "Shtoni koleksion media"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
#, python-format
-msgid "Add %(title)s to collection"
-msgstr "Shtoni %(title)s te koleksioni juaj"
+msgid "Add “%(media_title)s†to a collection"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:51
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
msgstr "+"
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
msgstr "Shtoni një koleksion të ri"
@@ -886,27 +957,31 @@ msgstr "Nëse jeni ju ai person, por keni humbur email-in tuaj të verifikimit,
msgid "Here's a spot to tell others about yourself."
msgstr "Ja një vend t'i tregoni botës mbi veten."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:101
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:100
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:117
msgid "Edit profile"
msgstr "Përpunoni profil"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:105
msgid "This user hasn't filled in their profile (yet)."
msgstr "Ky përdorues nuk e ka plotësuar (ende) profilin e vet."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:124
+msgid "Browse collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:137
#, python-format
msgid "View all of %(username)s's media"
msgstr "Shihni krejt mediat nga %(username)s"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:145
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:150
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:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:162
#: 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..."
@@ -916,28 +991,24 @@ msgstr "Nuk duket ende të ketë ndonjë media këtu..."
msgid "(remove)"
msgstr "(hiqe)"
-#: mediagoblin/templates/mediagoblin/utils/collections.html:20
-#, python-format
-msgid "In collections (%(collected)s)"
-msgstr "Te koleksionet (%(collected)s)"
+#: 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 "ikonë prurjesh"
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:23
msgid "Atom feed"
msgstr "Prurje Atom"
-#: mediagoblin/templates/mediagoblin/utils/geolocation_map.html:25
-msgid "Location"
-msgstr "Vend"
-
-#: mediagoblin/templates/mediagoblin/utils/geolocation_map.html:53
-#, python-format
-msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-msgstr "Shiheni te <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
msgstr "Tërë të drejtat të rezervuara"
@@ -968,49 +1039,64 @@ msgstr "më të vjetra"
msgid "Tagged with"
msgstr "Etiketuar me"
-#: mediagoblin/tools/exif.py:78
+#: mediagoblin/tools/exif.py:80
msgid "Could not read the image file."
msgstr "Nuk lexoi dot kartelën e figurës."
-#: mediagoblin/tools/response.py:30
+#: mediagoblin/tools/response.py:35
msgid "Oops!"
msgstr "Oooh!"
-#: mediagoblin/tools/response.py:31
+#: mediagoblin/tools/response.py:36
msgid "An error occured"
msgstr "Ndodhi një gabim"
-#: mediagoblin/tools/response.py:46
+#: mediagoblin/tools/response.py:51
msgid "Operation not allowed"
msgstr "Veprim i palejuar"
-#: mediagoblin/tools/response.py:47
+#: mediagoblin/tools/response.py:52
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:55
+#: mediagoblin/tools/response.py:60
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/user_pages/forms.py:28
+#: 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\">Markdown</a> for"
+" formatting."
+msgstr "Për formatime mund të përdorni <a href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a>."
+
+#: 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/user_pages/forms.py:32
+#: mediagoblin/user_pages/forms.py:35
msgid "I am sure I want to remove this item from the collection"
msgstr "Jam i sigurt se dua që të hiqet ky objekt prek koleksioni"
-#: mediagoblin/user_pages/forms.py:35
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:40
msgid "-- Select --"
msgstr "-- Përzgjidhni --"
-#: mediagoblin/user_pages/forms.py:37
+#: mediagoblin/user_pages/forms.py:42
msgid "Include a note"
msgstr "Përfshini një shënim"
@@ -1018,74 +1104,69 @@ msgstr "Përfshini një shënim"
msgid "commented on your post"
msgstr "komentoi te postimi juaj"
-#: mediagoblin/user_pages/views.py:156
+#: mediagoblin/user_pages/views.py:166
msgid "Oops, your comment was empty."
msgstr "Hmmm, komenti juaj qe i zbrazët."
-#: mediagoblin/user_pages/views.py:162
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
msgstr "Komenti juaj u postua!"
-#: mediagoblin/user_pages/views.py:230
+#: mediagoblin/user_pages/views.py:197
+msgid "Please check your entries and try again."
+msgstr "Ju lutemi, kontrolloni zërat tuaj dhe riprovoni."
+
+#: mediagoblin/user_pages/views.py:237
msgid "You have to select or add a collection"
msgstr "Duhet të përzgjidhni ose shtoni një koleksion"
-#: mediagoblin/user_pages/views.py:238
+#: mediagoblin/user_pages/views.py:248
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr "\"%s\" gjendet tashmë te koleksioni \"%s\""
-#: mediagoblin/user_pages/views.py:253
+#: mediagoblin/user_pages/views.py:264
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr "\"%s\" u shtua te koleksioni \"%s\""
-#: mediagoblin/user_pages/views.py:261
-msgid "Please check your entries and try again."
-msgstr "Ju lutemi, kontrolloni zërat tuaj dhe riprovoni."
-
-#: mediagoblin/user_pages/views.py:292
-msgid ""
-"Some of the files with this entry seem to be missing. Deleting anyway."
-msgstr "Duket se mungojnë disa nga kartelat në këtë zë. Po fshihet, sido qoftë."
-
-#: mediagoblin/user_pages/views.py:297
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
msgstr "E fshitë median."
-#: mediagoblin/user_pages/views.py:304
+#: mediagoblin/user_pages/views.py:293
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/user_pages/views.py:312
+#: mediagoblin/user_pages/views.py:301
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:370
+#: mediagoblin/user_pages/views.py:375
msgid "You deleted the item from the collection."
msgstr "E fshitë objektin prej koleksionit."
-#: mediagoblin/user_pages/views.py:374
+#: mediagoblin/user_pages/views.py:379
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:384
+#: mediagoblin/user_pages/views.py:389
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:417
+#: mediagoblin/user_pages/views.py:422
#, python-format
msgid "You deleted the collection \"%s\""
msgstr "E fshitë koleksionin \"%s\""
-#: mediagoblin/user_pages/views.py:424
+#: mediagoblin/user_pages/views.py:429
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:434
+#: mediagoblin/user_pages/views.py:439
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ë."
diff --git a/mediagoblin/i18n/sr/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/sr/LC_MESSAGES/mediagoblin.mo
index dd67d341..f6918f71 100644
--- a/mediagoblin/i18n/sr/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/sr/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/sr/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/sr/LC_MESSAGES/mediagoblin.po
index 32e7d3d9..d482151d 100644
--- a/mediagoblin/i18n/sr/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/sr/LC_MESSAGES/mediagoblin.po
@@ -1,5 +1,5 @@
# Translations template for PROJECT.
-# Copyright (C) 2012 ORGANIZATION
+# Copyright (C) 2013 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: http://issues.mediagoblin.org/\n"
-"POT-Creation-Date: 2012-12-20 09:18-0600\n"
-"PO-Revision-Date: 2012-12-20 15:14+0000\n"
+"POT-Creation-Date: 2013-03-04 18:04-0600\n"
+"PO-Revision-Date: 2013-03-05 00:04+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,82 +18,96 @@ 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/auth/forms.py:25 mediagoblin/auth/forms.py:41
+#: mediagoblin/auth/forms.py:28
+msgid "Invalid User name or email address."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:29
+msgid "This field does not take email addresses."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:30
+msgid "This field requires an email address."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:52 mediagoblin/auth/forms.py:67
msgid "Username"
msgstr ""
-#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:45
+#: mediagoblin/auth/forms.py:56 mediagoblin/auth/forms.py:71
msgid "Password"
msgstr ""
-#: mediagoblin/auth/forms.py:34
+#: mediagoblin/auth/forms.py:60
msgid "Email address"
msgstr ""
-#: mediagoblin/auth/forms.py:51
+#: mediagoblin/auth/forms.py:78
msgid "Username or email"
msgstr ""
-#: mediagoblin/auth/forms.py:58
-msgid "Incorrect input"
-msgstr ""
-
-#: mediagoblin/auth/views.py:55
+#: mediagoblin/auth/views.py:54
msgid "Sorry, registration is disabled on this instance."
msgstr ""
-#: mediagoblin/auth/views.py:75
+#: mediagoblin/auth/views.py:68
msgid "Sorry, a user with that name already exists."
msgstr ""
-#: mediagoblin/auth/views.py:79
+#: mediagoblin/auth/views.py:72
msgid "Sorry, a user with that email address already exists."
msgstr ""
-#: mediagoblin/auth/views.py:182
+#: mediagoblin/auth/views.py:174
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
msgstr ""
-#: mediagoblin/auth/views.py:188
+#: mediagoblin/auth/views.py:180
msgid "The verification key or user id is incorrect"
msgstr ""
-#: mediagoblin/auth/views.py:206
+#: mediagoblin/auth/views.py:198
msgid "You must be logged in so we know who to send the email to!"
msgstr ""
-#: mediagoblin/auth/views.py:214
+#: mediagoblin/auth/views.py:206
msgid "You've already verified your email address!"
msgstr ""
-#: mediagoblin/auth/views.py:227
+#: mediagoblin/auth/views.py:219
msgid "Resent your verification email."
msgstr ""
-#: mediagoblin/auth/views.py:263
+#: mediagoblin/auth/views.py:250
+msgid ""
+"If that email address (case sensitive!) is registered an email has been sent"
+" with instructions on how to change your password."
+msgstr ""
+
+#: mediagoblin/auth/views.py:261
+msgid "Couldn't find someone with that username."
+msgstr ""
+
+#: mediagoblin/auth/views.py:264
msgid ""
"An email has been sent with instructions on how to change your password."
msgstr ""
-#: mediagoblin/auth/views.py:273
+#: mediagoblin/auth/views.py:271
msgid ""
"Could not send password recovery email as your username is inactive or your "
"account's email address has not been verified."
msgstr ""
-#: mediagoblin/auth/views.py:285
-msgid "Couldn't find someone with that username or email."
-msgstr ""
-
-#: mediagoblin/auth/views.py:333
+#: mediagoblin/auth/views.py:328
msgid "You can now log in using your new password."
msgstr ""
-#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:82
+#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:93
#: mediagoblin/submit/forms.py:28 mediagoblin/submit/forms.py:47
-#: mediagoblin/user_pages/forms.py:40
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr ""
@@ -102,8 +116,8 @@ msgid "Description of this work"
msgstr ""
#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:52
-#: mediagoblin/edit/forms.py:86 mediagoblin/submit/forms.py:32
-#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:44
+#: mediagoblin/edit/forms.py:97 mediagoblin/submit/forms.py:32
+#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:49
msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
@@ -118,11 +132,11 @@ msgstr ""
msgid "Separate tags by commas."
msgstr ""
-#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:90
+#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:101
msgid "Slug"
msgstr ""
-#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:91
+#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:102
msgid "The slug can't be empty"
msgstr ""
@@ -161,65 +175,81 @@ msgstr ""
msgid "New password"
msgstr ""
-#: mediagoblin/edit/forms.py:71
+#: mediagoblin/edit/forms.py:74
+msgid "License preference"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:80
+msgid "This will be your default license on upload forms."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:82
msgid "Email me when others comment on my media"
msgstr ""
-#: mediagoblin/edit/forms.py:83
+#: mediagoblin/edit/forms.py:94
msgid "The title can't be empty"
msgstr ""
-#: mediagoblin/edit/forms.py:85 mediagoblin/submit/forms.py:50
-#: mediagoblin/user_pages/forms.py:43
+#: mediagoblin/edit/forms.py:96 mediagoblin/submit/forms.py:50
+#: mediagoblin/user_pages/forms.py:48
msgid "Description of this collection"
msgstr ""
-#: mediagoblin/edit/forms.py:92
+#: mediagoblin/edit/forms.py:103
msgid ""
"The title part of this collection's address. You usually don't need to "
"change this."
msgstr ""
-#: mediagoblin/edit/views.py:65
+#: mediagoblin/edit/views.py:66
msgid "An entry with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:86
+#: mediagoblin/edit/views.py:85
msgid "You are editing another user's media. Proceed with caution."
msgstr ""
-#: mediagoblin/edit/views.py:156
+#: mediagoblin/edit/views.py:155
#, python-format
msgid "You added the attachment %s!"
msgstr ""
-#: mediagoblin/edit/views.py:181
+#: mediagoblin/edit/views.py:182
+msgid "You can only edit your own profile."
+msgstr ""
+
+#: mediagoblin/edit/views.py:188
msgid "You are editing a user's profile. Proceed with caution."
msgstr ""
-#: mediagoblin/edit/views.py:197
+#: mediagoblin/edit/views.py:204
msgid "Profile changes saved"
msgstr ""
-#: mediagoblin/edit/views.py:226 mediagoblin/edit/views.py:246
+#: mediagoblin/edit/views.py:241
+msgid "Wrong password"
+msgstr ""
+
+#: mediagoblin/edit/views.py:252
msgid "Account settings saved"
msgstr ""
-#: mediagoblin/edit/views.py:251
-msgid "Wrong password"
+#: mediagoblin/edit/views.py:286
+msgid "You need to confirm the deletion of your account."
msgstr ""
-#: mediagoblin/edit/views.py:287 mediagoblin/submit/views.py:211
-#: mediagoblin/user_pages/views.py:210
+#: mediagoblin/edit/views.py:322 mediagoblin/submit/views.py:142
+#: mediagoblin/user_pages/views.py:214
#, python-format
msgid "You already have a collection called \"%s\"!"
msgstr ""
-#: mediagoblin/edit/views.py:291
+#: mediagoblin/edit/views.py:326
msgid "A collection with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:308
+#: mediagoblin/edit/views.py:343
msgid "You are editing another user's collection. Proceed with caution."
msgstr ""
@@ -235,54 +265,62 @@ msgstr ""
msgid "However, old link directory symlink found; removed.\n"
msgstr ""
-#: mediagoblin/media_types/__init__.py:60
-#: mediagoblin/media_types/__init__.py:101
+#: 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:61
+#: mediagoblin/media_types/__init__.py:102
msgid "Sorry, I don't support that file type :("
msgstr ""
-#: mediagoblin/media_types/video/processing.py:35
+#: mediagoblin/media_types/video/processing.py:36
msgid "Video transcoding failed"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:26
-msgid "Client ID"
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
+msgid "Location"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:28
-msgid "Next URL"
+#: 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/oauth/forms.py:30
+#: mediagoblin/plugins/oauth/forms.py:29
msgid "Allow"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:31
+#: mediagoblin/plugins/oauth/forms.py:30
msgid "Deny"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:35
+#: mediagoblin/plugins/oauth/forms.py:34
msgid "Name"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:36
+#: mediagoblin/plugins/oauth/forms.py:35
msgid "The name of the OAuth client"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:37
+#: mediagoblin/plugins/oauth/forms.py:36
msgid "Description"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:39
+#: 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:41
+#: mediagoblin/plugins/oauth/forms.py:40
msgid "Type"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:46
+#: 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"
@@ -292,25 +330,40 @@ msgid ""
" JavaScript client)."
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:53
+#: mediagoblin/plugins/oauth/forms.py:52
msgid "Redirect URI"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:55
+#: 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:67
+#: mediagoblin/plugins/oauth/forms.py:66
msgid "This field is required for public clients"
msgstr ""
-#: mediagoblin/plugins/oauth/views.py:60
+#: mediagoblin/plugins/oauth/views.py:59
msgid "The client {0} has been registered!"
msgstr ""
-#: mediagoblin/processing/__init__.py:138
+#: 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/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:172
msgid "Invalid file given for media type."
msgstr ""
@@ -318,56 +371,74 @@ msgstr ""
msgid "File"
msgstr ""
-#: mediagoblin/submit/views.py:57
+#: mediagoblin/submit/views.py:51
msgid "You must provide a file."
msgstr ""
-#: mediagoblin/submit/views.py:164
+#: mediagoblin/submit/views.py:97
msgid "Woohoo! Submitted!"
msgstr ""
-#: mediagoblin/submit/views.py:215
+#: mediagoblin/submit/views.py:146
#, python-format
msgid "Collection \"%s\" added!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:48
-msgid "MediaGoblin logo"
+#: mediagoblin/templates/mediagoblin/base.html:64
+msgid "Verify your email!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "log out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:70
+#: mediagoblin/templates/mediagoblin/auth/login.html:28
+#: mediagoblin/templates/mediagoblin/auth/login.html:36
+#: mediagoblin/templates/mediagoblin/auth/login.html:54
+msgid "Log in"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:54
+#: mediagoblin/templates/mediagoblin/base.html:79
#, python-format
msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:60
-msgid "log out"
+#: mediagoblin/templates/mediagoblin/base.html:86
+msgid "Change account settings"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:62
-#: mediagoblin/templates/mediagoblin/root.html:28
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:151
-msgid "Add media"
+#: mediagoblin/templates/mediagoblin/base.html:90
+#: mediagoblin/templates/mediagoblin/base.html:105
+#: mediagoblin/templates/mediagoblin/admin/panel.html:21
+#: mediagoblin/templates/mediagoblin/admin/panel.html:26
+#: 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:68
-msgid "Verify your email!"
+#: mediagoblin/templates/mediagoblin/base.html:93
+msgid "Log out"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:73
-#: mediagoblin/templates/mediagoblin/auth/login.html:28
-#: mediagoblin/templates/mediagoblin/auth/login.html:36
-#: mediagoblin/templates/mediagoblin/auth/login.html:54
-msgid "Log in"
+#: mediagoblin/templates/mediagoblin/base.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:156
+msgid "Add media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:99
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
+msgid "Create new collection"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:87
+#: mediagoblin/templates/mediagoblin/base.html:122
+#, python-format
msgid ""
-"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
-"href=\"http://gnu.org/\">GNU</a> project."
+"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/base.html:90
+#: mediagoblin/templates/mediagoblin/base.html:125
#, python-format
msgid ""
"Released under the <a "
@@ -379,52 +450,31 @@ msgstr ""
msgid "Image of goblin stressing out"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:25
-msgid "Actions"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/root.html:31
-msgid "Create new collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:34
-msgid "Change account settings"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:38
-#: mediagoblin/templates/mediagoblin/root.html:44
-#: mediagoblin/templates/mediagoblin/admin/panel.html:21
-#: mediagoblin/templates/mediagoblin/admin/panel.html:26
-#: 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/root.html:51
msgid "Explore"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:53
+#: mediagoblin/templates/mediagoblin/root.html:33
msgid "Hi there, welcome to this MediaGoblin site!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:55
+#: mediagoblin/templates/mediagoblin/root.html:35
msgid ""
"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
"extraordinarily great piece of media hosting software."
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:56
+#: mediagoblin/templates/mediagoblin/root.html:36
msgid ""
"To add your own media, place comments, and more, you can log in with your "
"MediaGoblin account."
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:58
+#: mediagoblin/templates/mediagoblin/root.html:38
msgid "Don't have one yet? It's easy!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:59
+#: mediagoblin/templates/mediagoblin/root.html:39
#, python-format
msgid ""
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Create an account at this site</a>\n"
@@ -432,7 +482,7 @@ msgid ""
" <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:67
+#: mediagoblin/templates/mediagoblin/root.html:47
msgid "Most recent media"
msgstr ""
@@ -538,41 +588,62 @@ msgid ""
"%(verification_url)s"
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:43
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:159
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:175
msgid "Attachments"
msgstr ""
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
msgid "Add attachment"
msgstr ""
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:60
+#: 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:81
+#: 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:62
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:51
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
msgid "Save changes"
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:47
+#: 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
@@ -585,13 +656,17 @@ msgstr ""
msgid "Changing %(username)s's account settings"
msgstr ""
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
+msgid "Delete my account"
+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:35
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
#, python-format
msgid "Editing %(username)s's profile"
msgstr ""
@@ -607,7 +682,7 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
msgstr ""
@@ -630,7 +705,7 @@ msgid ""
msgstr ""
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:56
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:61
msgid "Original file"
msgstr ""
@@ -642,8 +717,8 @@ msgstr ""
#: 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:67
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
+#: 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 ""
@@ -688,21 +763,21 @@ msgstr ""
msgid "Object Height"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
msgid ""
-"Sorry, this video will not work because \n"
-"\t your web browser does not support HTML5 \n"
-"\t video."
+"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:43
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:47
msgid ""
"You can get a modern web browser that \n"
-"\t can play this video at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:69
msgid "WebM file (640p; VP8/Vorbis)"
msgstr ""
@@ -710,12 +785,6 @@ msgstr ""
msgid "Add a collection"
msgstr ""
-#: mediagoblin/templates/mediagoblin/submit/collection.html:30
-#: mediagoblin/templates/mediagoblin/submit/start.html:34
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-msgid "Add"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
msgid "Add your media"
@@ -732,12 +801,12 @@ 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:87
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
msgid "Edit"
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:91
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
msgid "Delete"
msgstr ""
@@ -747,11 +816,6 @@ msgstr ""
msgid "Really delete %(title)s?"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:47
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Delete permanently"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:31
#, python-format
msgid "Really remove %(media_title)s from %(collection_title)s?"
@@ -761,6 +825,16 @@ msgstr ""
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 ""
@@ -773,56 +847,53 @@ msgstr ""
msgid "%(username)s's media"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:37
+#: 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:46
+#: 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:102
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:94
msgid "Add a comment"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:109
-msgid ""
-"You can use <a "
-"href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> for"
-" formatting."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:113
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:102
msgid "Add this comment"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:123
msgid "at"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:152
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:144
#, python-format
msgid ""
"<h3>Added on</h3>\n"
" <p>%(date)s</p>"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:202
-msgid "Add media to collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
#, python-format
-msgid "Add %(title)s to collection"
+msgid "Add “%(media_title)s†to a collection"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:51
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
msgstr ""
@@ -884,27 +955,31 @@ msgstr ""
msgid "Here's a spot to tell others about yourself."
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:101
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:100
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:117
msgid "Edit profile"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:105
msgid "This user hasn't filled in their profile (yet)."
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:124
+msgid "Browse collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:137
#, python-format
msgid "View all of %(username)s's media"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:145
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:150
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:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:162
#: 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..."
@@ -914,28 +989,24 @@ msgstr ""
msgid "(remove)"
msgstr ""
-#: mediagoblin/templates/mediagoblin/utils/collections.html:20
-#, python-format
-msgid "In collections (%(collected)s)"
+#: 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/geolocation_map.html:25
-msgid "Location"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/utils/geolocation_map.html:53
-#, python-format
-msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
msgstr ""
@@ -966,49 +1037,64 @@ msgstr ""
msgid "Tagged with"
msgstr ""
-#: mediagoblin/tools/exif.py:78
+#: mediagoblin/tools/exif.py:80
msgid "Could not read the image file."
msgstr ""
-#: mediagoblin/tools/response.py:30
+#: mediagoblin/tools/response.py:35
msgid "Oops!"
msgstr ""
-#: mediagoblin/tools/response.py:31
+#: mediagoblin/tools/response.py:36
msgid "An error occured"
msgstr ""
-#: mediagoblin/tools/response.py:46
+#: mediagoblin/tools/response.py:51
msgid "Operation not allowed"
msgstr ""
-#: mediagoblin/tools/response.py:47
+#: mediagoblin/tools/response.py:52
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:55
+#: mediagoblin/tools/response.py:60
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/user_pages/forms.py:28
+#: 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\">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:32
+#: 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:35
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:40
msgid "-- Select --"
msgstr ""
-#: mediagoblin/user_pages/forms.py:37
+#: mediagoblin/user_pages/forms.py:42
msgid "Include a note"
msgstr ""
@@ -1016,74 +1102,69 @@ msgstr ""
msgid "commented on your post"
msgstr ""
-#: mediagoblin/user_pages/views.py:156
+#: mediagoblin/user_pages/views.py:166
msgid "Oops, your comment was empty."
msgstr ""
-#: mediagoblin/user_pages/views.py:162
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
msgstr ""
-#: mediagoblin/user_pages/views.py:230
+#: mediagoblin/user_pages/views.py:197
+msgid "Please check your entries and try again."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:237
msgid "You have to select or add a collection"
msgstr ""
-#: mediagoblin/user_pages/views.py:238
+#: mediagoblin/user_pages/views.py:248
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:253
+#: mediagoblin/user_pages/views.py:264
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:261
-msgid "Please check your entries and try again."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:292
-msgid ""
-"Some of the files with this entry seem to be missing. Deleting anyway."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:297
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
msgstr ""
-#: mediagoblin/user_pages/views.py:304
+#: mediagoblin/user_pages/views.py:293
msgid "The media was not deleted because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/user_pages/views.py:312
+#: mediagoblin/user_pages/views.py:301
msgid "You are about to delete another user's media. Proceed with caution."
msgstr ""
-#: mediagoblin/user_pages/views.py:370
+#: mediagoblin/user_pages/views.py:375
msgid "You deleted the item from the collection."
msgstr ""
-#: mediagoblin/user_pages/views.py:374
+#: mediagoblin/user_pages/views.py:379
msgid "The item was not removed because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/user_pages/views.py:384
+#: mediagoblin/user_pages/views.py:389
msgid ""
"You are about to delete an item from another user's collection. Proceed with"
" caution."
msgstr ""
-#: mediagoblin/user_pages/views.py:417
+#: mediagoblin/user_pages/views.py:422
#, python-format
msgid "You deleted the collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:424
+#: mediagoblin/user_pages/views.py:429
msgid ""
"The collection was not deleted because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/user_pages/views.py:434
+#: mediagoblin/user_pages/views.py:439
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
index e4586d50..28ea51f8 100644
--- a/mediagoblin/i18n/sv/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/sv/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/sv/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/sv/LC_MESSAGES/mediagoblin.po
index d288feac..76bda505 100644
--- a/mediagoblin/i18n/sv/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/sv/LC_MESSAGES/mediagoblin.po
@@ -1,5 +1,5 @@
# Translations template for PROJECT.
-# Copyright (C) 2012 ORGANIZATION
+# Copyright (C) 2013 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: http://issues.mediagoblin.org/\n"
-"POT-Creation-Date: 2012-12-20 09:18-0600\n"
-"PO-Revision-Date: 2012-12-20 15:14+0000\n"
+"POT-Creation-Date: 2013-03-04 18:04-0600\n"
+"PO-Revision-Date: 2013-03-05 00:04+0000\n"
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
"Language-Team: Swedish (http://www.transifex.com/projects/p/mediagoblin/language/sv/)\n"
"MIME-Version: 1.0\n"
@@ -20,82 +20,96 @@ msgstr ""
"Language: sv\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:41
+#: mediagoblin/auth/forms.py:28
+msgid "Invalid User name or email address."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:29
+msgid "This field does not take email addresses."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:30
+msgid "This field requires an email address."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:52 mediagoblin/auth/forms.py:67
msgid "Username"
msgstr "Användarnamn"
-#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:45
+#: mediagoblin/auth/forms.py:56 mediagoblin/auth/forms.py:71
msgid "Password"
msgstr "Lösenord"
-#: mediagoblin/auth/forms.py:34
+#: mediagoblin/auth/forms.py:60
msgid "Email address"
msgstr "E-postadress"
-#: mediagoblin/auth/forms.py:51
+#: mediagoblin/auth/forms.py:78
msgid "Username or email"
msgstr ""
-#: mediagoblin/auth/forms.py:58
-msgid "Incorrect input"
-msgstr ""
-
-#: mediagoblin/auth/views.py:55
+#: mediagoblin/auth/views.py:54
msgid "Sorry, registration is disabled on this instance."
msgstr "Vi beklagar, registreringen är avtängd på den här instansen."
-#: mediagoblin/auth/views.py:75
+#: mediagoblin/auth/views.py:68
msgid "Sorry, a user with that name already exists."
msgstr "En användare med det användarnamnet finns redan."
-#: mediagoblin/auth/views.py:79
+#: mediagoblin/auth/views.py:72
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:182
+#: mediagoblin/auth/views.py:174
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:188
+#: mediagoblin/auth/views.py:180
msgid "The verification key or user id is incorrect"
msgstr "Verifieringsnyckeln eller användar-IDt är fel."
-#: mediagoblin/auth/views.py:206
+#: mediagoblin/auth/views.py:198
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."
-#: mediagoblin/auth/views.py:214
+#: mediagoblin/auth/views.py:206
msgid "You've already verified your email address!"
msgstr "Du har redan verifierat din e-postadress!"
-#: mediagoblin/auth/views.py:227
+#: mediagoblin/auth/views.py:219
msgid "Resent your verification email."
msgstr "Skickade ett nytt verifierings-email."
-#: mediagoblin/auth/views.py:263
+#: mediagoblin/auth/views.py:250
+msgid ""
+"If that email address (case sensitive!) is registered an email has been sent"
+" with instructions on how to change your password."
+msgstr ""
+
+#: mediagoblin/auth/views.py:261
+msgid "Couldn't find someone with that username."
+msgstr ""
+
+#: mediagoblin/auth/views.py:264
msgid ""
"An email has been sent with instructions on how to change your password."
msgstr ""
-#: mediagoblin/auth/views.py:273
+#: mediagoblin/auth/views.py:271
msgid ""
"Could not send password recovery email as your username is inactive or your "
"account's email address has not been verified."
msgstr "Kunde inte skicka e-poståterställning av lösenord eftersom ditt användarnamn är inaktivt eller kontots e-postadress har inte verifierats."
-#: mediagoblin/auth/views.py:285
-msgid "Couldn't find someone with that username or email."
-msgstr ""
-
-#: mediagoblin/auth/views.py:333
+#: mediagoblin/auth/views.py:328
msgid "You can now log in using your new password."
msgstr ""
-#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:82
+#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:93
#: mediagoblin/submit/forms.py:28 mediagoblin/submit/forms.py:47
-#: mediagoblin/user_pages/forms.py:40
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr "Titel"
@@ -104,8 +118,8 @@ msgid "Description of this work"
msgstr "Beskrivning av verket"
#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:52
-#: mediagoblin/edit/forms.py:86 mediagoblin/submit/forms.py:32
-#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:44
+#: mediagoblin/edit/forms.py:97 mediagoblin/submit/forms.py:32
+#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:49
msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
@@ -120,11 +134,11 @@ msgstr "Taggar"
msgid "Separate tags by commas."
msgstr ""
-#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:90
+#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:101
msgid "Slug"
msgstr "Sökvägsnamn"
-#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:91
+#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:102
msgid "The slug can't be empty"
msgstr "Sökvägsnamnet kan inte vara tomt"
@@ -163,65 +177,81 @@ msgstr ""
msgid "New password"
msgstr ""
-#: mediagoblin/edit/forms.py:71
+#: mediagoblin/edit/forms.py:74
+msgid "License preference"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:80
+msgid "This will be your default license on upload forms."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:82
msgid "Email me when others comment on my media"
msgstr ""
-#: mediagoblin/edit/forms.py:83
+#: mediagoblin/edit/forms.py:94
msgid "The title can't be empty"
msgstr ""
-#: mediagoblin/edit/forms.py:85 mediagoblin/submit/forms.py:50
-#: mediagoblin/user_pages/forms.py:43
+#: mediagoblin/edit/forms.py:96 mediagoblin/submit/forms.py:50
+#: mediagoblin/user_pages/forms.py:48
msgid "Description of this collection"
msgstr ""
-#: mediagoblin/edit/forms.py:92
+#: mediagoblin/edit/forms.py:103
msgid ""
"The title part of this collection's address. You usually don't need to "
"change this."
msgstr ""
-#: mediagoblin/edit/views.py:65
+#: mediagoblin/edit/views.py:66
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:86
+#: mediagoblin/edit/views.py:85
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:156
+#: mediagoblin/edit/views.py:155
#, python-format
msgid "You added the attachment %s!"
msgstr ""
-#: mediagoblin/edit/views.py:181
+#: mediagoblin/edit/views.py:182
+msgid "You can only edit your own profile."
+msgstr ""
+
+#: mediagoblin/edit/views.py:188
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:197
+#: mediagoblin/edit/views.py:204
msgid "Profile changes saved"
msgstr ""
-#: mediagoblin/edit/views.py:226 mediagoblin/edit/views.py:246
+#: mediagoblin/edit/views.py:241
+msgid "Wrong password"
+msgstr "Fel lösenord"
+
+#: mediagoblin/edit/views.py:252
msgid "Account settings saved"
msgstr ""
-#: mediagoblin/edit/views.py:251
-msgid "Wrong password"
-msgstr "Fel lösenord"
+#: mediagoblin/edit/views.py:286
+msgid "You need to confirm the deletion of your account."
+msgstr ""
-#: mediagoblin/edit/views.py:287 mediagoblin/submit/views.py:211
-#: mediagoblin/user_pages/views.py:210
+#: mediagoblin/edit/views.py:322 mediagoblin/submit/views.py:142
+#: mediagoblin/user_pages/views.py:214
#, python-format
msgid "You already have a collection called \"%s\"!"
msgstr ""
-#: mediagoblin/edit/views.py:291
+#: mediagoblin/edit/views.py:326
msgid "A collection with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:308
+#: mediagoblin/edit/views.py:343
msgid "You are editing another user's collection. Proceed with caution."
msgstr ""
@@ -237,54 +267,62 @@ msgstr ""
msgid "However, old link directory symlink found; removed.\n"
msgstr ""
-#: mediagoblin/media_types/__init__.py:60
-#: mediagoblin/media_types/__init__.py:101
+#: 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:61
+#: mediagoblin/media_types/__init__.py:102
msgid "Sorry, I don't support that file type :("
msgstr ""
-#: mediagoblin/media_types/video/processing.py:35
+#: mediagoblin/media_types/video/processing.py:36
msgid "Video transcoding failed"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:26
-msgid "Client ID"
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
+msgid "Location"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:28
-msgid "Next URL"
+#: 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/oauth/forms.py:30
+#: mediagoblin/plugins/oauth/forms.py:29
msgid "Allow"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:31
+#: mediagoblin/plugins/oauth/forms.py:30
msgid "Deny"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:35
+#: mediagoblin/plugins/oauth/forms.py:34
msgid "Name"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:36
+#: mediagoblin/plugins/oauth/forms.py:35
msgid "The name of the OAuth client"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:37
+#: mediagoblin/plugins/oauth/forms.py:36
msgid "Description"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:39
+#: 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:41
+#: mediagoblin/plugins/oauth/forms.py:40
msgid "Type"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:46
+#: 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"
@@ -294,25 +332,40 @@ msgid ""
" JavaScript client)."
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:53
+#: mediagoblin/plugins/oauth/forms.py:52
msgid "Redirect URI"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:55
+#: 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:67
+#: mediagoblin/plugins/oauth/forms.py:66
msgid "This field is required for public clients"
msgstr ""
-#: mediagoblin/plugins/oauth/views.py:60
+#: mediagoblin/plugins/oauth/views.py:59
msgid "The client {0} has been registered!"
msgstr ""
-#: mediagoblin/processing/__init__.py:138
+#: 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/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:172
msgid "Invalid file given for media type."
msgstr "Ogiltig fil för mediatypen."
@@ -320,56 +373,74 @@ msgstr "Ogiltig fil för mediatypen."
msgid "File"
msgstr "Fil"
-#: mediagoblin/submit/views.py:57
+#: mediagoblin/submit/views.py:51
msgid "You must provide a file."
msgstr "Du måste ange en fil"
-#: mediagoblin/submit/views.py:164
+#: mediagoblin/submit/views.py:97
msgid "Woohoo! Submitted!"
msgstr "Tjohoo! Upladdat!"
-#: mediagoblin/submit/views.py:215
+#: mediagoblin/submit/views.py:146
#, python-format
msgid "Collection \"%s\" added!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:48
-msgid "MediaGoblin logo"
-msgstr "MediaGoblin-logotyp"
+#: mediagoblin/templates/mediagoblin/base.html:64
+msgid "Verify your email!"
+msgstr "Verifiera din e-postadress"
+
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "log out"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:54
+#: mediagoblin/templates/mediagoblin/base.html:70
+#: mediagoblin/templates/mediagoblin/auth/login.html:28
+#: mediagoblin/templates/mediagoblin/auth/login.html:36
+#: mediagoblin/templates/mediagoblin/auth/login.html:54
+msgid "Log in"
+msgstr "Logga in"
+
+#: mediagoblin/templates/mediagoblin/base.html:79
#, python-format
msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:60
-msgid "log out"
+#: mediagoblin/templates/mediagoblin/base.html:86
+msgid "Change account settings"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:90
+#: mediagoblin/templates/mediagoblin/base.html:105
+#: mediagoblin/templates/mediagoblin/admin/panel.html:21
+#: mediagoblin/templates/mediagoblin/admin/panel.html:26
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
+msgid "Media processing panel"
+msgstr "Mediabehandlingspanel"
+
+#: mediagoblin/templates/mediagoblin/base.html:93
+msgid "Log out"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:62
-#: mediagoblin/templates/mediagoblin/root.html:28
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:151
+#: mediagoblin/templates/mediagoblin/base.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:156
msgid "Add media"
msgstr "Lägg till media"
-#: mediagoblin/templates/mediagoblin/base.html:68
-msgid "Verify your email!"
-msgstr "Verifiera din e-postadress"
-
-#: mediagoblin/templates/mediagoblin/base.html:73
-#: mediagoblin/templates/mediagoblin/auth/login.html:28
-#: mediagoblin/templates/mediagoblin/auth/login.html:36
-#: mediagoblin/templates/mediagoblin/auth/login.html:54
-msgid "Log in"
-msgstr "Logga in"
+#: mediagoblin/templates/mediagoblin/base.html:99
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
+msgid "Create new collection"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:87
+#: mediagoblin/templates/mediagoblin/base.html:122
+#, python-format
msgid ""
-"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
-"href=\"http://gnu.org/\">GNU</a> project."
+"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/base.html:90
+#: mediagoblin/templates/mediagoblin/base.html:125
#, python-format
msgid ""
"Released under the <a "
@@ -381,52 +452,31 @@ msgstr ""
msgid "Image of goblin stressing out"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:25
-msgid "Actions"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/root.html:31
-msgid "Create new collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:34
-msgid "Change account settings"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:38
-#: mediagoblin/templates/mediagoblin/root.html:44
-#: mediagoblin/templates/mediagoblin/admin/panel.html:21
-#: mediagoblin/templates/mediagoblin/admin/panel.html:26
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:21
-#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:26
-msgid "Media processing panel"
-msgstr "Mediabehandlingspanel"
-
-#: mediagoblin/templates/mediagoblin/root.html:51
msgid "Explore"
msgstr "Utforska"
-#: mediagoblin/templates/mediagoblin/root.html:53
+#: mediagoblin/templates/mediagoblin/root.html:33
msgid "Hi there, welcome to this MediaGoblin site!"
msgstr "Hej, välkommen till den här MediaGoblin-sidan!"
-#: mediagoblin/templates/mediagoblin/root.html:55
+#: mediagoblin/templates/mediagoblin/root.html:35
msgid ""
"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
"extraordinarily great piece of media hosting software."
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:56
+#: mediagoblin/templates/mediagoblin/root.html:36
msgid ""
"To add your own media, place comments, and more, you can log in with your "
"MediaGoblin account."
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:58
+#: mediagoblin/templates/mediagoblin/root.html:38
msgid "Don't have one yet? It's easy!"
msgstr "Har du inte ett redan?"
-#: mediagoblin/templates/mediagoblin/root.html:59
+#: mediagoblin/templates/mediagoblin/root.html:39
#, python-format
msgid ""
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Create an account at this site</a>\n"
@@ -434,7 +484,7 @@ msgid ""
" <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:67
+#: mediagoblin/templates/mediagoblin/root.html:47
msgid "Most recent media"
msgstr "Senast medier"
@@ -540,41 +590,62 @@ msgid ""
"%(verification_url)s"
msgstr "Hej %(username)s,\n\nöppna den följande webbadressen i din webbläsare för att aktivera ditt konto på GNU MediaGoblin:\n\n%(verification_url)s"
+#: mediagoblin/templates/mediagoblin/bits/logo.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/bits/logo.html:23
+msgid "MediaGoblin logo"
+msgstr "MediaGoblin-logotyp"
+
#: 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:43
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:159
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:175
msgid "Attachments"
msgstr ""
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
msgid "Add attachment"
msgstr ""
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:60
+#: 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:81
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
msgid "Cancel"
msgstr "Avbryt"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:62
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:51
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
msgid "Save changes"
msgstr "Spara ändringar"
+#: 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:47
+#: 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
@@ -587,13 +658,17 @@ msgstr "Redigerar %(media_title)s"
msgid "Changing %(username)s's account settings"
msgstr ""
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
+msgid "Delete my account"
+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:35
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
#, python-format
msgid "Editing %(username)s's profile"
msgstr "Redigerar %(username)ss profil"
@@ -609,7 +684,7 @@ 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/stl.html:136
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
msgstr ""
@@ -632,7 +707,7 @@ msgid ""
msgstr ""
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:56
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:61
msgid "Original file"
msgstr ""
@@ -644,8 +719,8 @@ msgstr ""
#: 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:67
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
+#: 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 ""
@@ -690,21 +765,21 @@ msgstr ""
msgid "Object Height"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
msgid ""
-"Sorry, this video will not work because \n"
-"\t your web browser does not support HTML5 \n"
-"\t video."
+"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:43
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:47
msgid ""
"You can get a modern web browser that \n"
-"\t can play this video at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:69
msgid "WebM file (640p; VP8/Vorbis)"
msgstr ""
@@ -712,12 +787,6 @@ msgstr ""
msgid "Add a collection"
msgstr ""
-#: mediagoblin/templates/mediagoblin/submit/collection.html:30
-#: mediagoblin/templates/mediagoblin/submit/start.html:34
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-msgid "Add"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
msgid "Add your media"
@@ -734,12 +803,12 @@ 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:87
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
msgid "Edit"
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:91
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
msgid "Delete"
msgstr ""
@@ -749,11 +818,6 @@ msgstr ""
msgid "Really delete %(title)s?"
msgstr "Vill du verkligen radera %(title)s?"
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:47
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Delete permanently"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:31
#, python-format
msgid "Really remove %(media_title)s from %(collection_title)s?"
@@ -763,6 +827,16 @@ msgstr ""
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 ""
@@ -775,56 +849,53 @@ msgstr ""
msgid "%(username)s's media"
msgstr "%(username)ss media"
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:37
+#: 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>s media"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:46
+#: 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:102
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:94
msgid "Add a comment"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:109
-msgid ""
-"You can use <a "
-"href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> for"
-" formatting."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:113
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:102
msgid "Add this comment"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:123
msgid "at"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:152
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:144
#, python-format
msgid ""
"<h3>Added on</h3>\n"
" <p>%(date)s</p>"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:202
-msgid "Add media to collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
#, python-format
-msgid "Add %(title)s to collection"
+msgid "Add “%(media_title)s†to a collection"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:51
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
msgstr ""
@@ -886,27 +957,31 @@ msgstr "Om det är du som är den personen och har förlorat ditt e-postmeddelan
msgid "Here's a spot to tell others about yourself."
msgstr "Här kan du berätta för andra om dig själv."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:101
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:100
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:117
msgid "Edit profile"
msgstr "Redigera profil"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:105
msgid "This user hasn't filled in their profile (yet)."
msgstr "Den här användaren har inte fyllt i sin profilsida ännu."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:124
+msgid "Browse collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:137
#, python-format
msgid "View all of %(username)s's media"
msgstr "Se all media från %(username)s"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:145
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:150
msgid ""
"This is where your media will appear, but you don't seem to have added "
"anything yet."
msgstr "Här kommer din media att dyka upp, du verkar inte ha lagt till någonting ännu."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:162
#: 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..."
@@ -916,28 +991,24 @@ msgstr "Det verkar inte finnas någon media här ännu."
msgid "(remove)"
msgstr ""
-#: mediagoblin/templates/mediagoblin/utils/collections.html:20
-#, python-format
-msgid "In collections (%(collected)s)"
+#: 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 "feed-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"
-#: mediagoblin/templates/mediagoblin/utils/geolocation_map.html:25
-msgid "Location"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/utils/geolocation_map.html:53
-#, python-format
-msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
msgstr ""
@@ -968,49 +1039,64 @@ msgstr ""
msgid "Tagged with"
msgstr ""
-#: mediagoblin/tools/exif.py:78
+#: mediagoblin/tools/exif.py:80
msgid "Could not read the image file."
msgstr ""
-#: mediagoblin/tools/response.py:30
+#: mediagoblin/tools/response.py:35
msgid "Oops!"
msgstr "Ojoj!"
-#: mediagoblin/tools/response.py:31
+#: mediagoblin/tools/response.py:36
msgid "An error occured"
msgstr ""
-#: mediagoblin/tools/response.py:46
+#: mediagoblin/tools/response.py:51
msgid "Operation not allowed"
msgstr ""
-#: mediagoblin/tools/response.py:47
+#: mediagoblin/tools/response.py:52
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:55
+#: mediagoblin/tools/response.py:60
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/user_pages/forms.py:28
+#: 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\">Markdown</a> for"
+" formatting."
+msgstr ""
+
+#: 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/user_pages/forms.py:32
+#: 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:35
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:40
msgid "-- Select --"
msgstr ""
-#: mediagoblin/user_pages/forms.py:37
+#: mediagoblin/user_pages/forms.py:42
msgid "Include a note"
msgstr ""
@@ -1018,74 +1104,69 @@ msgstr ""
msgid "commented on your post"
msgstr ""
-#: mediagoblin/user_pages/views.py:156
+#: mediagoblin/user_pages/views.py:166
msgid "Oops, your comment was empty."
msgstr ""
-#: mediagoblin/user_pages/views.py:162
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
msgstr ""
-#: mediagoblin/user_pages/views.py:230
+#: mediagoblin/user_pages/views.py:197
+msgid "Please check your entries and try again."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:237
msgid "You have to select or add a collection"
msgstr ""
-#: mediagoblin/user_pages/views.py:238
+#: mediagoblin/user_pages/views.py:248
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:253
+#: mediagoblin/user_pages/views.py:264
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:261
-msgid "Please check your entries and try again."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:292
-msgid ""
-"Some of the files with this entry seem to be missing. Deleting anyway."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:297
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
msgstr ""
-#: mediagoblin/user_pages/views.py:304
+#: mediagoblin/user_pages/views.py:293
msgid "The media was not deleted because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/user_pages/views.py:312
+#: mediagoblin/user_pages/views.py:301
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:370
+#: mediagoblin/user_pages/views.py:375
msgid "You deleted the item from the collection."
msgstr ""
-#: mediagoblin/user_pages/views.py:374
+#: mediagoblin/user_pages/views.py:379
msgid "The item was not removed because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/user_pages/views.py:384
+#: mediagoblin/user_pages/views.py:389
msgid ""
"You are about to delete an item from another user's collection. Proceed with"
" caution."
msgstr ""
-#: mediagoblin/user_pages/views.py:417
+#: mediagoblin/user_pages/views.py:422
#, python-format
msgid "You deleted the collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:424
+#: mediagoblin/user_pages/views.py:429
msgid ""
"The collection was not deleted because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/user_pages/views.py:434
+#: mediagoblin/user_pages/views.py:439
msgid ""
"You are about to delete another user's collection. Proceed with caution."
msgstr ""
diff --git a/mediagoblin/i18n/te/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/te/LC_MESSAGES/mediagoblin.mo
index 5009e371..8cef4593 100644
--- a/mediagoblin/i18n/te/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/te/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/te/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/te/LC_MESSAGES/mediagoblin.po
index 44a7bf44..3586ee78 100644
--- a/mediagoblin/i18n/te/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/te/LC_MESSAGES/mediagoblin.po
@@ -1,5 +1,5 @@
# Translations template for PROJECT.
-# Copyright (C) 2012 ORGANIZATION
+# Copyright (C) 2013 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: http://issues.mediagoblin.org/\n"
-"POT-Creation-Date: 2012-12-20 09:18-0600\n"
-"PO-Revision-Date: 2012-12-20 15:14+0000\n"
+"POT-Creation-Date: 2013-03-04 18:04-0600\n"
+"PO-Revision-Date: 2013-03-05 00:04+0000\n"
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
@@ -19,82 +19,96 @@ msgstr ""
"Language: te\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:41
+#: mediagoblin/auth/forms.py:28
+msgid "Invalid User name or email address."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:29
+msgid "This field does not take email addresses."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:30
+msgid "This field requires an email address."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:52 mediagoblin/auth/forms.py:67
msgid "Username"
msgstr "వాడà±à°•à°°à°¿ పేరà±"
-#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:45
+#: mediagoblin/auth/forms.py:56 mediagoblin/auth/forms.py:71
msgid "Password"
msgstr "సంకేతపదం"
-#: mediagoblin/auth/forms.py:34
+#: mediagoblin/auth/forms.py:60
msgid "Email address"
msgstr "ఈమెయిలౠచిరà±à°¨à°¾à°®à°¾"
-#: mediagoblin/auth/forms.py:51
+#: mediagoblin/auth/forms.py:78
msgid "Username or email"
msgstr ""
-#: mediagoblin/auth/forms.py:58
-msgid "Incorrect input"
-msgstr ""
-
-#: mediagoblin/auth/views.py:55
+#: mediagoblin/auth/views.py:54
msgid "Sorry, registration is disabled on this instance."
msgstr ""
-#: mediagoblin/auth/views.py:75
+#: mediagoblin/auth/views.py:68
msgid "Sorry, a user with that name already exists."
msgstr ""
-#: mediagoblin/auth/views.py:79
+#: mediagoblin/auth/views.py:72
msgid "Sorry, a user with that email address already exists."
msgstr ""
-#: mediagoblin/auth/views.py:182
+#: mediagoblin/auth/views.py:174
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
msgstr ""
-#: mediagoblin/auth/views.py:188
+#: mediagoblin/auth/views.py:180
msgid "The verification key or user id is incorrect"
msgstr ""
-#: mediagoblin/auth/views.py:206
+#: mediagoblin/auth/views.py:198
msgid "You must be logged in so we know who to send the email to!"
msgstr ""
-#: mediagoblin/auth/views.py:214
+#: mediagoblin/auth/views.py:206
msgid "You've already verified your email address!"
msgstr ""
-#: mediagoblin/auth/views.py:227
+#: mediagoblin/auth/views.py:219
msgid "Resent your verification email."
msgstr ""
-#: mediagoblin/auth/views.py:263
+#: mediagoblin/auth/views.py:250
+msgid ""
+"If that email address (case sensitive!) is registered an email has been sent"
+" with instructions on how to change your password."
+msgstr ""
+
+#: mediagoblin/auth/views.py:261
+msgid "Couldn't find someone with that username."
+msgstr ""
+
+#: mediagoblin/auth/views.py:264
msgid ""
"An email has been sent with instructions on how to change your password."
msgstr ""
-#: mediagoblin/auth/views.py:273
+#: mediagoblin/auth/views.py:271
msgid ""
"Could not send password recovery email as your username is inactive or your "
"account's email address has not been verified."
msgstr ""
-#: mediagoblin/auth/views.py:285
-msgid "Couldn't find someone with that username or email."
-msgstr ""
-
-#: mediagoblin/auth/views.py:333
+#: mediagoblin/auth/views.py:328
msgid "You can now log in using your new password."
msgstr ""
-#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:82
+#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:93
#: mediagoblin/submit/forms.py:28 mediagoblin/submit/forms.py:47
-#: mediagoblin/user_pages/forms.py:40
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr "శీరà±à°·à°¿à°•"
@@ -103,8 +117,8 @@ msgid "Description of this work"
msgstr ""
#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:52
-#: mediagoblin/edit/forms.py:86 mediagoblin/submit/forms.py:32
-#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:44
+#: mediagoblin/edit/forms.py:97 mediagoblin/submit/forms.py:32
+#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:49
msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
@@ -119,11 +133,11 @@ msgstr ""
msgid "Separate tags by commas."
msgstr ""
-#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:90
+#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:101
msgid "Slug"
msgstr ""
-#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:91
+#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:102
msgid "The slug can't be empty"
msgstr ""
@@ -162,65 +176,81 @@ msgstr ""
msgid "New password"
msgstr ""
-#: mediagoblin/edit/forms.py:71
+#: mediagoblin/edit/forms.py:74
+msgid "License preference"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:80
+msgid "This will be your default license on upload forms."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:82
msgid "Email me when others comment on my media"
msgstr ""
-#: mediagoblin/edit/forms.py:83
+#: mediagoblin/edit/forms.py:94
msgid "The title can't be empty"
msgstr ""
-#: mediagoblin/edit/forms.py:85 mediagoblin/submit/forms.py:50
-#: mediagoblin/user_pages/forms.py:43
+#: mediagoblin/edit/forms.py:96 mediagoblin/submit/forms.py:50
+#: mediagoblin/user_pages/forms.py:48
msgid "Description of this collection"
msgstr ""
-#: mediagoblin/edit/forms.py:92
+#: mediagoblin/edit/forms.py:103
msgid ""
"The title part of this collection's address. You usually don't need to "
"change this."
msgstr ""
-#: mediagoblin/edit/views.py:65
+#: mediagoblin/edit/views.py:66
msgid "An entry with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:86
+#: mediagoblin/edit/views.py:85
msgid "You are editing another user's media. Proceed with caution."
msgstr ""
-#: mediagoblin/edit/views.py:156
+#: mediagoblin/edit/views.py:155
#, python-format
msgid "You added the attachment %s!"
msgstr ""
-#: mediagoblin/edit/views.py:181
+#: mediagoblin/edit/views.py:182
+msgid "You can only edit your own profile."
+msgstr ""
+
+#: mediagoblin/edit/views.py:188
msgid "You are editing a user's profile. Proceed with caution."
msgstr ""
-#: mediagoblin/edit/views.py:197
+#: mediagoblin/edit/views.py:204
msgid "Profile changes saved"
msgstr ""
-#: mediagoblin/edit/views.py:226 mediagoblin/edit/views.py:246
+#: mediagoblin/edit/views.py:241
+msgid "Wrong password"
+msgstr ""
+
+#: mediagoblin/edit/views.py:252
msgid "Account settings saved"
msgstr ""
-#: mediagoblin/edit/views.py:251
-msgid "Wrong password"
+#: mediagoblin/edit/views.py:286
+msgid "You need to confirm the deletion of your account."
msgstr ""
-#: mediagoblin/edit/views.py:287 mediagoblin/submit/views.py:211
-#: mediagoblin/user_pages/views.py:210
+#: mediagoblin/edit/views.py:322 mediagoblin/submit/views.py:142
+#: mediagoblin/user_pages/views.py:214
#, python-format
msgid "You already have a collection called \"%s\"!"
msgstr ""
-#: mediagoblin/edit/views.py:291
+#: mediagoblin/edit/views.py:326
msgid "A collection with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:308
+#: mediagoblin/edit/views.py:343
msgid "You are editing another user's collection. Proceed with caution."
msgstr ""
@@ -236,54 +266,62 @@ msgstr ""
msgid "However, old link directory symlink found; removed.\n"
msgstr ""
-#: mediagoblin/media_types/__init__.py:60
-#: mediagoblin/media_types/__init__.py:101
+#: 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:61
+#: mediagoblin/media_types/__init__.py:102
msgid "Sorry, I don't support that file type :("
msgstr ""
-#: mediagoblin/media_types/video/processing.py:35
+#: mediagoblin/media_types/video/processing.py:36
msgid "Video transcoding failed"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:26
-msgid "Client ID"
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
+msgid "Location"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:28
-msgid "Next URL"
+#: 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/oauth/forms.py:30
+#: mediagoblin/plugins/oauth/forms.py:29
msgid "Allow"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:31
+#: mediagoblin/plugins/oauth/forms.py:30
msgid "Deny"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:35
+#: mediagoblin/plugins/oauth/forms.py:34
msgid "Name"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:36
+#: mediagoblin/plugins/oauth/forms.py:35
msgid "The name of the OAuth client"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:37
+#: mediagoblin/plugins/oauth/forms.py:36
msgid "Description"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:39
+#: 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:41
+#: mediagoblin/plugins/oauth/forms.py:40
msgid "Type"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:46
+#: 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"
@@ -293,25 +331,40 @@ msgid ""
" JavaScript client)."
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:53
+#: mediagoblin/plugins/oauth/forms.py:52
msgid "Redirect URI"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:55
+#: 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:67
+#: mediagoblin/plugins/oauth/forms.py:66
msgid "This field is required for public clients"
msgstr ""
-#: mediagoblin/plugins/oauth/views.py:60
+#: mediagoblin/plugins/oauth/views.py:59
msgid "The client {0} has been registered!"
msgstr ""
-#: mediagoblin/processing/__init__.py:138
+#: 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/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:172
msgid "Invalid file given for media type."
msgstr ""
@@ -319,56 +372,74 @@ msgstr ""
msgid "File"
msgstr ""
-#: mediagoblin/submit/views.py:57
+#: mediagoblin/submit/views.py:51
msgid "You must provide a file."
msgstr ""
-#: mediagoblin/submit/views.py:164
+#: mediagoblin/submit/views.py:97
msgid "Woohoo! Submitted!"
msgstr ""
-#: mediagoblin/submit/views.py:215
+#: mediagoblin/submit/views.py:146
#, python-format
msgid "Collection \"%s\" added!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:48
-msgid "MediaGoblin logo"
+#: mediagoblin/templates/mediagoblin/base.html:64
+msgid "Verify your email!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "log out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:70
+#: mediagoblin/templates/mediagoblin/auth/login.html:28
+#: mediagoblin/templates/mediagoblin/auth/login.html:36
+#: mediagoblin/templates/mediagoblin/auth/login.html:54
+msgid "Log in"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:54
+#: mediagoblin/templates/mediagoblin/base.html:79
#, python-format
msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:60
-msgid "log out"
+#: mediagoblin/templates/mediagoblin/base.html:86
+msgid "Change account settings"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:62
-#: mediagoblin/templates/mediagoblin/root.html:28
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:151
-msgid "Add media"
+#: mediagoblin/templates/mediagoblin/base.html:90
+#: mediagoblin/templates/mediagoblin/base.html:105
+#: mediagoblin/templates/mediagoblin/admin/panel.html:21
+#: mediagoblin/templates/mediagoblin/admin/panel.html:26
+#: 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:68
-msgid "Verify your email!"
+#: mediagoblin/templates/mediagoblin/base.html:93
+msgid "Log out"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:73
-#: mediagoblin/templates/mediagoblin/auth/login.html:28
-#: mediagoblin/templates/mediagoblin/auth/login.html:36
-#: mediagoblin/templates/mediagoblin/auth/login.html:54
-msgid "Log in"
+#: mediagoblin/templates/mediagoblin/base.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:156
+msgid "Add media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:99
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
+msgid "Create new collection"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:87
+#: mediagoblin/templates/mediagoblin/base.html:122
+#, python-format
msgid ""
-"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
-"href=\"http://gnu.org/\">GNU</a> project."
+"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/base.html:90
+#: mediagoblin/templates/mediagoblin/base.html:125
#, python-format
msgid ""
"Released under the <a "
@@ -380,52 +451,31 @@ msgstr ""
msgid "Image of goblin stressing out"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:25
-msgid "Actions"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/root.html:31
-msgid "Create new collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:34
-msgid "Change account settings"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:38
-#: mediagoblin/templates/mediagoblin/root.html:44
-#: mediagoblin/templates/mediagoblin/admin/panel.html:21
-#: mediagoblin/templates/mediagoblin/admin/panel.html:26
-#: 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/root.html:51
msgid "Explore"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:53
+#: mediagoblin/templates/mediagoblin/root.html:33
msgid "Hi there, welcome to this MediaGoblin site!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:55
+#: mediagoblin/templates/mediagoblin/root.html:35
msgid ""
"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
"extraordinarily great piece of media hosting software."
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:56
+#: mediagoblin/templates/mediagoblin/root.html:36
msgid ""
"To add your own media, place comments, and more, you can log in with your "
"MediaGoblin account."
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:58
+#: mediagoblin/templates/mediagoblin/root.html:38
msgid "Don't have one yet? It's easy!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:59
+#: mediagoblin/templates/mediagoblin/root.html:39
#, python-format
msgid ""
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Create an account at this site</a>\n"
@@ -433,7 +483,7 @@ msgid ""
" <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:67
+#: mediagoblin/templates/mediagoblin/root.html:47
msgid "Most recent media"
msgstr ""
@@ -539,41 +589,62 @@ msgid ""
"%(verification_url)s"
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:43
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:159
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:175
msgid "Attachments"
msgstr ""
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
msgid "Add attachment"
msgstr ""
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:60
+#: 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:81
+#: 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:62
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:51
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
msgid "Save changes"
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:47
+#: 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
@@ -586,13 +657,17 @@ msgstr ""
msgid "Changing %(username)s's account settings"
msgstr ""
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
+msgid "Delete my account"
+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:35
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
#, python-format
msgid "Editing %(username)s's profile"
msgstr ""
@@ -608,7 +683,7 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
msgstr ""
@@ -631,7 +706,7 @@ msgid ""
msgstr ""
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:56
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:61
msgid "Original file"
msgstr ""
@@ -643,8 +718,8 @@ msgstr ""
#: 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:67
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
+#: 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 ""
@@ -689,21 +764,21 @@ msgstr ""
msgid "Object Height"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
msgid ""
-"Sorry, this video will not work because \n"
-"\t your web browser does not support HTML5 \n"
-"\t video."
+"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:43
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:47
msgid ""
"You can get a modern web browser that \n"
-"\t can play this video at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:69
msgid "WebM file (640p; VP8/Vorbis)"
msgstr ""
@@ -711,12 +786,6 @@ msgstr ""
msgid "Add a collection"
msgstr ""
-#: mediagoblin/templates/mediagoblin/submit/collection.html:30
-#: mediagoblin/templates/mediagoblin/submit/start.html:34
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-msgid "Add"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
msgid "Add your media"
@@ -733,12 +802,12 @@ 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:87
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
msgid "Edit"
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:91
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
msgid "Delete"
msgstr ""
@@ -748,11 +817,6 @@ msgstr ""
msgid "Really delete %(title)s?"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:47
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Delete permanently"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:31
#, python-format
msgid "Really remove %(media_title)s from %(collection_title)s?"
@@ -762,6 +826,16 @@ msgstr ""
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 ""
@@ -774,56 +848,53 @@ msgstr ""
msgid "%(username)s's media"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:37
+#: 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:46
+#: 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:102
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:94
msgid "Add a comment"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:109
-msgid ""
-"You can use <a "
-"href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> for"
-" formatting."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:113
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:102
msgid "Add this comment"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:123
msgid "at"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:152
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:144
#, python-format
msgid ""
"<h3>Added on</h3>\n"
" <p>%(date)s</p>"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:202
-msgid "Add media to collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
#, python-format
-msgid "Add %(title)s to collection"
+msgid "Add “%(media_title)s†to a collection"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:51
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
msgstr ""
@@ -885,27 +956,31 @@ msgstr ""
msgid "Here's a spot to tell others about yourself."
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:101
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:100
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:117
msgid "Edit profile"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:105
msgid "This user hasn't filled in their profile (yet)."
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:124
+msgid "Browse collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:137
#, python-format
msgid "View all of %(username)s's media"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:145
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:150
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:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:162
#: 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..."
@@ -915,28 +990,24 @@ msgstr ""
msgid "(remove)"
msgstr ""
-#: mediagoblin/templates/mediagoblin/utils/collections.html:20
-#, python-format
-msgid "In collections (%(collected)s)"
+#: 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/geolocation_map.html:25
-msgid "Location"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/utils/geolocation_map.html:53
-#, python-format
-msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
msgstr ""
@@ -967,49 +1038,64 @@ msgstr ""
msgid "Tagged with"
msgstr ""
-#: mediagoblin/tools/exif.py:78
+#: mediagoblin/tools/exif.py:80
msgid "Could not read the image file."
msgstr ""
-#: mediagoblin/tools/response.py:30
+#: mediagoblin/tools/response.py:35
msgid "Oops!"
msgstr ""
-#: mediagoblin/tools/response.py:31
+#: mediagoblin/tools/response.py:36
msgid "An error occured"
msgstr ""
-#: mediagoblin/tools/response.py:46
+#: mediagoblin/tools/response.py:51
msgid "Operation not allowed"
msgstr ""
-#: mediagoblin/tools/response.py:47
+#: mediagoblin/tools/response.py:52
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:55
+#: mediagoblin/tools/response.py:60
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/user_pages/forms.py:28
+#: 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\">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:32
+#: 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:35
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:40
msgid "-- Select --"
msgstr ""
-#: mediagoblin/user_pages/forms.py:37
+#: mediagoblin/user_pages/forms.py:42
msgid "Include a note"
msgstr ""
@@ -1017,74 +1103,69 @@ msgstr ""
msgid "commented on your post"
msgstr ""
-#: mediagoblin/user_pages/views.py:156
+#: mediagoblin/user_pages/views.py:166
msgid "Oops, your comment was empty."
msgstr ""
-#: mediagoblin/user_pages/views.py:162
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
msgstr ""
-#: mediagoblin/user_pages/views.py:230
+#: mediagoblin/user_pages/views.py:197
+msgid "Please check your entries and try again."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:237
msgid "You have to select or add a collection"
msgstr ""
-#: mediagoblin/user_pages/views.py:238
+#: mediagoblin/user_pages/views.py:248
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:253
+#: mediagoblin/user_pages/views.py:264
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:261
-msgid "Please check your entries and try again."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:292
-msgid ""
-"Some of the files with this entry seem to be missing. Deleting anyway."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:297
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
msgstr ""
-#: mediagoblin/user_pages/views.py:304
+#: mediagoblin/user_pages/views.py:293
msgid "The media was not deleted because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/user_pages/views.py:312
+#: mediagoblin/user_pages/views.py:301
msgid "You are about to delete another user's media. Proceed with caution."
msgstr ""
-#: mediagoblin/user_pages/views.py:370
+#: mediagoblin/user_pages/views.py:375
msgid "You deleted the item from the collection."
msgstr ""
-#: mediagoblin/user_pages/views.py:374
+#: mediagoblin/user_pages/views.py:379
msgid "The item was not removed because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/user_pages/views.py:384
+#: mediagoblin/user_pages/views.py:389
msgid ""
"You are about to delete an item from another user's collection. Proceed with"
" caution."
msgstr ""
-#: mediagoblin/user_pages/views.py:417
+#: mediagoblin/user_pages/views.py:422
#, python-format
msgid "You deleted the collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:424
+#: mediagoblin/user_pages/views.py:429
msgid ""
"The collection was not deleted because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/user_pages/views.py:434
+#: mediagoblin/user_pages/views.py:439
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
index 7b1c154c..d75d2eb2 100644
--- a/mediagoblin/i18n/zh_TW.Big5/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/zh_TW.Big5/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/zh_TW.Big5/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/zh_TW.Big5/LC_MESSAGES/mediagoblin.po
index 5a47ef7c..a5e95640 100644
--- a/mediagoblin/i18n/zh_TW.Big5/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/zh_TW.Big5/LC_MESSAGES/mediagoblin.po
@@ -1,5 +1,5 @@
# Translations template for PROJECT.
-# Copyright (C) 2012 ORGANIZATION
+# Copyright (C) 2013 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: http://issues.mediagoblin.org/\n"
-"POT-Creation-Date: 2012-12-20 09:18-0600\n"
-"PO-Revision-Date: 2012-12-20 15:14+0000\n"
+"POT-Creation-Date: 2013-03-04 18:04-0600\n"
+"PO-Revision-Date: 2013-03-05 00:04+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,82 +18,96 @@ msgstr ""
"Language: zh_TW.Big5\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:41
+#: mediagoblin/auth/forms.py:28
+msgid "Invalid User name or email address."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:29
+msgid "This field does not take email addresses."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:30
+msgid "This field requires an email address."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:52 mediagoblin/auth/forms.py:67
msgid "Username"
msgstr ""
-#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:45
+#: mediagoblin/auth/forms.py:56 mediagoblin/auth/forms.py:71
msgid "Password"
msgstr ""
-#: mediagoblin/auth/forms.py:34
+#: mediagoblin/auth/forms.py:60
msgid "Email address"
msgstr ""
-#: mediagoblin/auth/forms.py:51
+#: mediagoblin/auth/forms.py:78
msgid "Username or email"
msgstr ""
-#: mediagoblin/auth/forms.py:58
-msgid "Incorrect input"
-msgstr ""
-
-#: mediagoblin/auth/views.py:55
+#: mediagoblin/auth/views.py:54
msgid "Sorry, registration is disabled on this instance."
msgstr ""
-#: mediagoblin/auth/views.py:75
+#: mediagoblin/auth/views.py:68
msgid "Sorry, a user with that name already exists."
msgstr ""
-#: mediagoblin/auth/views.py:79
+#: mediagoblin/auth/views.py:72
msgid "Sorry, a user with that email address already exists."
msgstr ""
-#: mediagoblin/auth/views.py:182
+#: mediagoblin/auth/views.py:174
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
msgstr ""
-#: mediagoblin/auth/views.py:188
+#: mediagoblin/auth/views.py:180
msgid "The verification key or user id is incorrect"
msgstr ""
-#: mediagoblin/auth/views.py:206
+#: mediagoblin/auth/views.py:198
msgid "You must be logged in so we know who to send the email to!"
msgstr ""
-#: mediagoblin/auth/views.py:214
+#: mediagoblin/auth/views.py:206
msgid "You've already verified your email address!"
msgstr ""
-#: mediagoblin/auth/views.py:227
+#: mediagoblin/auth/views.py:219
msgid "Resent your verification email."
msgstr ""
-#: mediagoblin/auth/views.py:263
+#: mediagoblin/auth/views.py:250
+msgid ""
+"If that email address (case sensitive!) is registered an email has been sent"
+" with instructions on how to change your password."
+msgstr ""
+
+#: mediagoblin/auth/views.py:261
+msgid "Couldn't find someone with that username."
+msgstr ""
+
+#: mediagoblin/auth/views.py:264
msgid ""
"An email has been sent with instructions on how to change your password."
msgstr ""
-#: mediagoblin/auth/views.py:273
+#: mediagoblin/auth/views.py:271
msgid ""
"Could not send password recovery email as your username is inactive or your "
"account's email address has not been verified."
msgstr ""
-#: mediagoblin/auth/views.py:285
-msgid "Couldn't find someone with that username or email."
-msgstr ""
-
-#: mediagoblin/auth/views.py:333
+#: mediagoblin/auth/views.py:328
msgid "You can now log in using your new password."
msgstr ""
-#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:82
+#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:93
#: mediagoblin/submit/forms.py:28 mediagoblin/submit/forms.py:47
-#: mediagoblin/user_pages/forms.py:40
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr ""
@@ -102,8 +116,8 @@ msgid "Description of this work"
msgstr ""
#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:52
-#: mediagoblin/edit/forms.py:86 mediagoblin/submit/forms.py:32
-#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:44
+#: mediagoblin/edit/forms.py:97 mediagoblin/submit/forms.py:32
+#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:49
msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
@@ -118,11 +132,11 @@ msgstr ""
msgid "Separate tags by commas."
msgstr ""
-#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:90
+#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:101
msgid "Slug"
msgstr ""
-#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:91
+#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:102
msgid "The slug can't be empty"
msgstr ""
@@ -161,65 +175,81 @@ msgstr ""
msgid "New password"
msgstr ""
-#: mediagoblin/edit/forms.py:71
+#: mediagoblin/edit/forms.py:74
+msgid "License preference"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:80
+msgid "This will be your default license on upload forms."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:82
msgid "Email me when others comment on my media"
msgstr ""
-#: mediagoblin/edit/forms.py:83
+#: mediagoblin/edit/forms.py:94
msgid "The title can't be empty"
msgstr ""
-#: mediagoblin/edit/forms.py:85 mediagoblin/submit/forms.py:50
-#: mediagoblin/user_pages/forms.py:43
+#: mediagoblin/edit/forms.py:96 mediagoblin/submit/forms.py:50
+#: mediagoblin/user_pages/forms.py:48
msgid "Description of this collection"
msgstr ""
-#: mediagoblin/edit/forms.py:92
+#: mediagoblin/edit/forms.py:103
msgid ""
"The title part of this collection's address. You usually don't need to "
"change this."
msgstr ""
-#: mediagoblin/edit/views.py:65
+#: mediagoblin/edit/views.py:66
msgid "An entry with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:86
+#: mediagoblin/edit/views.py:85
msgid "You are editing another user's media. Proceed with caution."
msgstr ""
-#: mediagoblin/edit/views.py:156
+#: mediagoblin/edit/views.py:155
#, python-format
msgid "You added the attachment %s!"
msgstr ""
-#: mediagoblin/edit/views.py:181
+#: mediagoblin/edit/views.py:182
+msgid "You can only edit your own profile."
+msgstr ""
+
+#: mediagoblin/edit/views.py:188
msgid "You are editing a user's profile. Proceed with caution."
msgstr ""
-#: mediagoblin/edit/views.py:197
+#: mediagoblin/edit/views.py:204
msgid "Profile changes saved"
msgstr ""
-#: mediagoblin/edit/views.py:226 mediagoblin/edit/views.py:246
+#: mediagoblin/edit/views.py:241
+msgid "Wrong password"
+msgstr ""
+
+#: mediagoblin/edit/views.py:252
msgid "Account settings saved"
msgstr ""
-#: mediagoblin/edit/views.py:251
-msgid "Wrong password"
+#: mediagoblin/edit/views.py:286
+msgid "You need to confirm the deletion of your account."
msgstr ""
-#: mediagoblin/edit/views.py:287 mediagoblin/submit/views.py:211
-#: mediagoblin/user_pages/views.py:210
+#: mediagoblin/edit/views.py:322 mediagoblin/submit/views.py:142
+#: mediagoblin/user_pages/views.py:214
#, python-format
msgid "You already have a collection called \"%s\"!"
msgstr ""
-#: mediagoblin/edit/views.py:291
+#: mediagoblin/edit/views.py:326
msgid "A collection with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:308
+#: mediagoblin/edit/views.py:343
msgid "You are editing another user's collection. Proceed with caution."
msgstr ""
@@ -235,54 +265,62 @@ msgstr ""
msgid "However, old link directory symlink found; removed.\n"
msgstr ""
-#: mediagoblin/media_types/__init__.py:60
-#: mediagoblin/media_types/__init__.py:101
+#: 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:61
+#: mediagoblin/media_types/__init__.py:102
msgid "Sorry, I don't support that file type :("
msgstr ""
-#: mediagoblin/media_types/video/processing.py:35
+#: mediagoblin/media_types/video/processing.py:36
msgid "Video transcoding failed"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:26
-msgid "Client ID"
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
+msgid "Location"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:28
-msgid "Next URL"
+#: 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/oauth/forms.py:30
+#: mediagoblin/plugins/oauth/forms.py:29
msgid "Allow"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:31
+#: mediagoblin/plugins/oauth/forms.py:30
msgid "Deny"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:35
+#: mediagoblin/plugins/oauth/forms.py:34
msgid "Name"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:36
+#: mediagoblin/plugins/oauth/forms.py:35
msgid "The name of the OAuth client"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:37
+#: mediagoblin/plugins/oauth/forms.py:36
msgid "Description"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:39
+#: 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:41
+#: mediagoblin/plugins/oauth/forms.py:40
msgid "Type"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:46
+#: 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"
@@ -292,25 +330,40 @@ msgid ""
" JavaScript client)."
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:53
+#: mediagoblin/plugins/oauth/forms.py:52
msgid "Redirect URI"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:55
+#: 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:67
+#: mediagoblin/plugins/oauth/forms.py:66
msgid "This field is required for public clients"
msgstr ""
-#: mediagoblin/plugins/oauth/views.py:60
+#: mediagoblin/plugins/oauth/views.py:59
msgid "The client {0} has been registered!"
msgstr ""
-#: mediagoblin/processing/__init__.py:138
+#: 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/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr ""
+
+#: mediagoblin/processing/__init__.py:172
msgid "Invalid file given for media type."
msgstr ""
@@ -318,56 +371,74 @@ msgstr ""
msgid "File"
msgstr ""
-#: mediagoblin/submit/views.py:57
+#: mediagoblin/submit/views.py:51
msgid "You must provide a file."
msgstr ""
-#: mediagoblin/submit/views.py:164
+#: mediagoblin/submit/views.py:97
msgid "Woohoo! Submitted!"
msgstr ""
-#: mediagoblin/submit/views.py:215
+#: mediagoblin/submit/views.py:146
#, python-format
msgid "Collection \"%s\" added!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:48
-msgid "MediaGoblin logo"
+#: mediagoblin/templates/mediagoblin/base.html:64
+msgid "Verify your email!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "log out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:70
+#: mediagoblin/templates/mediagoblin/auth/login.html:28
+#: mediagoblin/templates/mediagoblin/auth/login.html:36
+#: mediagoblin/templates/mediagoblin/auth/login.html:54
+msgid "Log in"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:54
+#: mediagoblin/templates/mediagoblin/base.html:79
#, python-format
msgid "<a href=\"%(user_url)s\">%(user_name)s</a>'s account"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:60
-msgid "log out"
+#: mediagoblin/templates/mediagoblin/base.html:86
+msgid "Change account settings"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:62
-#: mediagoblin/templates/mediagoblin/root.html:28
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:151
-msgid "Add media"
+#: mediagoblin/templates/mediagoblin/base.html:90
+#: mediagoblin/templates/mediagoblin/base.html:105
+#: mediagoblin/templates/mediagoblin/admin/panel.html:21
+#: mediagoblin/templates/mediagoblin/admin/panel.html:26
+#: 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:68
-msgid "Verify your email!"
+#: mediagoblin/templates/mediagoblin/base.html:93
+msgid "Log out"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:73
-#: mediagoblin/templates/mediagoblin/auth/login.html:28
-#: mediagoblin/templates/mediagoblin/auth/login.html:36
-#: mediagoblin/templates/mediagoblin/auth/login.html:54
-msgid "Log in"
+#: mediagoblin/templates/mediagoblin/base.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:156
+msgid "Add media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:99
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
+msgid "Create new collection"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:87
+#: mediagoblin/templates/mediagoblin/base.html:122
+#, python-format
msgid ""
-"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
-"href=\"http://gnu.org/\">GNU</a> project."
+"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/base.html:90
+#: mediagoblin/templates/mediagoblin/base.html:125
#, python-format
msgid ""
"Released under the <a "
@@ -379,52 +450,31 @@ msgstr ""
msgid "Image of goblin stressing out"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:25
-msgid "Actions"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/root.html:31
-msgid "Create new collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:34
-msgid "Change account settings"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:38
-#: mediagoblin/templates/mediagoblin/root.html:44
-#: mediagoblin/templates/mediagoblin/admin/panel.html:21
-#: mediagoblin/templates/mediagoblin/admin/panel.html:26
-#: 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/root.html:51
msgid "Explore"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:53
+#: mediagoblin/templates/mediagoblin/root.html:33
msgid "Hi there, welcome to this MediaGoblin site!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:55
+#: mediagoblin/templates/mediagoblin/root.html:35
msgid ""
"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
"extraordinarily great piece of media hosting software."
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:56
+#: mediagoblin/templates/mediagoblin/root.html:36
msgid ""
"To add your own media, place comments, and more, you can log in with your "
"MediaGoblin account."
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:58
+#: mediagoblin/templates/mediagoblin/root.html:38
msgid "Don't have one yet? It's easy!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:59
+#: mediagoblin/templates/mediagoblin/root.html:39
#, python-format
msgid ""
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Create an account at this site</a>\n"
@@ -432,7 +482,7 @@ msgid ""
" <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:67
+#: mediagoblin/templates/mediagoblin/root.html:47
msgid "Most recent media"
msgstr ""
@@ -538,41 +588,62 @@ msgid ""
"%(verification_url)s"
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:43
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:159
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:175
msgid "Attachments"
msgstr ""
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
msgid "Add attachment"
msgstr ""
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:60
+#: 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:81
+#: 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:62
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:51
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
msgid "Save changes"
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:47
+#: 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
@@ -585,13 +656,17 @@ msgstr ""
msgid "Changing %(username)s's account settings"
msgstr ""
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
+msgid "Delete my account"
+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:35
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
#, python-format
msgid "Editing %(username)s's profile"
msgstr ""
@@ -607,7 +682,7 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
msgstr ""
@@ -630,7 +705,7 @@ msgid ""
msgstr ""
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:56
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:61
msgid "Original file"
msgstr ""
@@ -642,8 +717,8 @@ msgstr ""
#: 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:67
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
+#: 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 ""
@@ -688,21 +763,21 @@ msgstr ""
msgid "Object Height"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
msgid ""
-"Sorry, this video will not work because \n"
-"\t your web browser does not support HTML5 \n"
-"\t video."
+"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:43
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:47
msgid ""
"You can get a modern web browser that \n"
-"\t can play this video at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:69
msgid "WebM file (640p; VP8/Vorbis)"
msgstr ""
@@ -710,12 +785,6 @@ msgstr ""
msgid "Add a collection"
msgstr ""
-#: mediagoblin/templates/mediagoblin/submit/collection.html:30
-#: mediagoblin/templates/mediagoblin/submit/start.html:34
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-msgid "Add"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
msgid "Add your media"
@@ -732,12 +801,12 @@ 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:87
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
msgid "Edit"
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:91
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
msgid "Delete"
msgstr ""
@@ -747,11 +816,6 @@ msgstr ""
msgid "Really delete %(title)s?"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:47
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Delete permanently"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:31
#, python-format
msgid "Really remove %(media_title)s from %(collection_title)s?"
@@ -761,6 +825,16 @@ msgstr ""
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 ""
@@ -773,56 +847,53 @@ msgstr ""
msgid "%(username)s's media"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:37
+#: 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:46
+#: 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:102
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:94
msgid "Add a comment"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:109
-msgid ""
-"You can use <a "
-"href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> for"
-" formatting."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:113
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:102
msgid "Add this comment"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:123
msgid "at"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:152
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:144
#, python-format
msgid ""
"<h3>Added on</h3>\n"
" <p>%(date)s</p>"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:202
-msgid "Add media to collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
#, python-format
-msgid "Add %(title)s to collection"
+msgid "Add “%(media_title)s†to a collection"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:51
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
msgstr ""
@@ -884,27 +955,31 @@ msgstr ""
msgid "Here's a spot to tell others about yourself."
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:101
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:100
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:117
msgid "Edit profile"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:105
msgid "This user hasn't filled in their profile (yet)."
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:124
+msgid "Browse collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:137
#, python-format
msgid "View all of %(username)s's media"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:145
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:150
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:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:162
#: 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..."
@@ -914,28 +989,24 @@ msgstr ""
msgid "(remove)"
msgstr ""
-#: mediagoblin/templates/mediagoblin/utils/collections.html:20
-#, python-format
-msgid "In collections (%(collected)s)"
+#: 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/geolocation_map.html:25
-msgid "Location"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/utils/geolocation_map.html:53
-#, python-format
-msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
msgstr ""
@@ -966,49 +1037,64 @@ msgstr ""
msgid "Tagged with"
msgstr ""
-#: mediagoblin/tools/exif.py:78
+#: mediagoblin/tools/exif.py:80
msgid "Could not read the image file."
msgstr ""
-#: mediagoblin/tools/response.py:30
+#: mediagoblin/tools/response.py:35
msgid "Oops!"
msgstr ""
-#: mediagoblin/tools/response.py:31
+#: mediagoblin/tools/response.py:36
msgid "An error occured"
msgstr ""
-#: mediagoblin/tools/response.py:46
+#: mediagoblin/tools/response.py:51
msgid "Operation not allowed"
msgstr ""
-#: mediagoblin/tools/response.py:47
+#: mediagoblin/tools/response.py:52
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:55
+#: mediagoblin/tools/response.py:60
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/user_pages/forms.py:28
+#: 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\">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:32
+#: 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:35
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:40
msgid "-- Select --"
msgstr ""
-#: mediagoblin/user_pages/forms.py:37
+#: mediagoblin/user_pages/forms.py:42
msgid "Include a note"
msgstr ""
@@ -1016,74 +1102,69 @@ msgstr ""
msgid "commented on your post"
msgstr ""
-#: mediagoblin/user_pages/views.py:156
+#: mediagoblin/user_pages/views.py:166
msgid "Oops, your comment was empty."
msgstr ""
-#: mediagoblin/user_pages/views.py:162
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
msgstr ""
-#: mediagoblin/user_pages/views.py:230
+#: mediagoblin/user_pages/views.py:197
+msgid "Please check your entries and try again."
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:237
msgid "You have to select or add a collection"
msgstr ""
-#: mediagoblin/user_pages/views.py:238
+#: mediagoblin/user_pages/views.py:248
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:253
+#: mediagoblin/user_pages/views.py:264
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:261
-msgid "Please check your entries and try again."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:292
-msgid ""
-"Some of the files with this entry seem to be missing. Deleting anyway."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:297
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
msgstr ""
-#: mediagoblin/user_pages/views.py:304
+#: mediagoblin/user_pages/views.py:293
msgid "The media was not deleted because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/user_pages/views.py:312
+#: mediagoblin/user_pages/views.py:301
msgid "You are about to delete another user's media. Proceed with caution."
msgstr ""
-#: mediagoblin/user_pages/views.py:370
+#: mediagoblin/user_pages/views.py:375
msgid "You deleted the item from the collection."
msgstr ""
-#: mediagoblin/user_pages/views.py:374
+#: mediagoblin/user_pages/views.py:379
msgid "The item was not removed because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/user_pages/views.py:384
+#: mediagoblin/user_pages/views.py:389
msgid ""
"You are about to delete an item from another user's collection. Proceed with"
" caution."
msgstr ""
-#: mediagoblin/user_pages/views.py:417
+#: mediagoblin/user_pages/views.py:422
#, python-format
msgid "You deleted the collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:424
+#: mediagoblin/user_pages/views.py:429
msgid ""
"The collection was not deleted because you didn't check that you were sure."
msgstr ""
-#: mediagoblin/user_pages/views.py:434
+#: mediagoblin/user_pages/views.py:439
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
index 13346b7c..3d267cfc 100644
--- a/mediagoblin/i18n/zh_TW/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/zh_TW/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/zh_TW/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/zh_TW/LC_MESSAGES/mediagoblin.po
index 4a722732..bd50df78 100644
--- a/mediagoblin/i18n/zh_TW/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/zh_TW/LC_MESSAGES/mediagoblin.po
@@ -1,5 +1,5 @@
# Translations template for PROJECT.
-# Copyright (C) 2012 ORGANIZATION
+# Copyright (C) 2013 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
@@ -10,8 +10,8 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://issues.mediagoblin.org/\n"
-"POT-Creation-Date: 2012-12-20 09:18-0600\n"
-"PO-Revision-Date: 2012-12-20 15:14+0000\n"
+"POT-Creation-Date: 2013-03-04 18:04-0600\n"
+"PO-Revision-Date: 2013-03-05 00:04+0000\n"
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
@@ -21,82 +21,96 @@ msgstr ""
"Language: zh_TW\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:41
+#: mediagoblin/auth/forms.py:28
+msgid "Invalid User name or email address."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:29
+msgid "This field does not take email addresses."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:30
+msgid "This field requires an email address."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:52 mediagoblin/auth/forms.py:67
msgid "Username"
msgstr "使用者å稱"
-#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:45
+#: mediagoblin/auth/forms.py:56 mediagoblin/auth/forms.py:71
msgid "Password"
msgstr "密碼"
-#: mediagoblin/auth/forms.py:34
+#: mediagoblin/auth/forms.py:60
msgid "Email address"
msgstr "Email ä½å€"
-#: mediagoblin/auth/forms.py:51
+#: mediagoblin/auth/forms.py:78
msgid "Username or email"
msgstr "使用者å稱或 email"
-#: mediagoblin/auth/forms.py:58
-msgid "Incorrect input"
-msgstr "輸入錯誤"
-
-#: mediagoblin/auth/views.py:55
+#: mediagoblin/auth/views.py:54
msgid "Sorry, registration is disabled on this instance."
msgstr "抱歉,本站已經暫åœè¨»å†Šã€‚"
-#: mediagoblin/auth/views.py:75
+#: mediagoblin/auth/views.py:68
msgid "Sorry, a user with that name already exists."
msgstr "抱歉,這個使用者å稱已經存在。"
-#: mediagoblin/auth/views.py:79
+#: mediagoblin/auth/views.py:72
msgid "Sorry, a user with that email address already exists."
msgstr "抱歉,此 email ä½ç½®å·²ç¶“被註冊了。"
-#: mediagoblin/auth/views.py:182
+#: mediagoblin/auth/views.py:174
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
msgstr "您的 email ä½å€å·²è¢«èªè­‰ã€‚您已經å¯ä»¥ç™»å…¥ï¼Œç·¨è¼¯æ‚¨çš„個人檔案並上傳圖片ï¼"
-#: mediagoblin/auth/views.py:188
+#: mediagoblin/auth/views.py:180
msgid "The verification key or user id is incorrect"
msgstr "èªè­‰ç¢¼æˆ–是使用者 ID 錯誤"
-#: mediagoblin/auth/views.py:206
+#: mediagoblin/auth/views.py:198
msgid "You must be logged in so we know who to send the email to!"
msgstr "您必須登入,我們æ‰çŸ¥é“ä¿¡è¦é€çµ¦èª°ï¼"
-#: mediagoblin/auth/views.py:214
+#: mediagoblin/auth/views.py:206
msgid "You've already verified your email address!"
msgstr "您的電å­éƒµä»¶å·²ç¶“確èªäº†ï¼"
-#: mediagoblin/auth/views.py:227
+#: mediagoblin/auth/views.py:219
msgid "Resent your verification email."
msgstr "é‡é€èªè­‰ä¿¡ã€‚"
-#: mediagoblin/auth/views.py:263
+#: mediagoblin/auth/views.py:250
+msgid ""
+"If that email address (case sensitive!) is registered an email has been sent"
+" with instructions on how to change your password."
+msgstr ""
+
+#: mediagoblin/auth/views.py:261
+msgid "Couldn't find someone with that username."
+msgstr ""
+
+#: mediagoblin/auth/views.py:264
msgid ""
"An email has been sent with instructions on how to change your password."
msgstr "修改密碼的指示已經由電å­éƒµä»¶å¯„é€åˆ°æ‚¨çš„信箱。"
-#: mediagoblin/auth/views.py:273
+#: mediagoblin/auth/views.py:271
msgid ""
"Could not send password recovery email as your username is inactive or your "
"account's email address has not been verified."
msgstr "無法傳é€å¯†ç¢¼å›žå¾©ä¿¡ä»¶ï¼Œå› ç‚ºæ‚¨çš„使用者å稱已失效或是帳號尚未èªè­‰ã€‚"
-#: mediagoblin/auth/views.py:285
-msgid "Couldn't find someone with that username or email."
-msgstr "找ä¸åˆ°ç›¸é—œçš„使用者å稱或是電å­éƒµä»¶ã€‚"
-
-#: mediagoblin/auth/views.py:333
+#: mediagoblin/auth/views.py:328
msgid "You can now log in using your new password."
msgstr "您ç¾åœ¨å¯ä»¥ç”¨æ–°çš„密碼登入了ï¼"
-#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:82
+#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:93
#: mediagoblin/submit/forms.py:28 mediagoblin/submit/forms.py:47
-#: mediagoblin/user_pages/forms.py:40
+#: mediagoblin/user_pages/forms.py:45
msgid "Title"
msgstr "標題"
@@ -105,8 +119,8 @@ msgid "Description of this work"
msgstr "這個作å“çš„æè¿°"
#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:52
-#: mediagoblin/edit/forms.py:86 mediagoblin/submit/forms.py:32
-#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:44
+#: mediagoblin/edit/forms.py:97 mediagoblin/submit/forms.py:32
+#: mediagoblin/submit/forms.py:51 mediagoblin/user_pages/forms.py:49
msgid ""
"You can use\n"
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
@@ -121,11 +135,11 @@ msgstr "標籤"
msgid "Separate tags by commas."
msgstr "用逗號分隔標籤。"
-#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:90
+#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:101
msgid "Slug"
msgstr "簡稱"
-#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:91
+#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:102
msgid "The slug can't be empty"
msgstr "簡稱ä¸èƒ½ç‚ºç©ºç™½"
@@ -164,65 +178,81 @@ msgstr "è¼¸å…¥æ‚¨çš„èˆŠå¯†ç¢¼ä¾†è­‰æ˜Žæ‚¨æ“æœ‰é€™å€‹å¸³è™Ÿã€‚"
msgid "New password"
msgstr "新密碼"
-#: mediagoblin/edit/forms.py:71
+#: mediagoblin/edit/forms.py:74
+msgid "License preference"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:80
+msgid "This will be your default license on upload forms."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:82
msgid "Email me when others comment on my media"
msgstr "ç•¶æœ‰äººå°æˆ‘的媒體評論時寄信給我"
-#: mediagoblin/edit/forms.py:83
+#: mediagoblin/edit/forms.py:94
msgid "The title can't be empty"
msgstr "標題ä¸èƒ½æ˜¯ç©ºçš„"
-#: mediagoblin/edit/forms.py:85 mediagoblin/submit/forms.py:50
-#: mediagoblin/user_pages/forms.py:43
+#: mediagoblin/edit/forms.py:96 mediagoblin/submit/forms.py:50
+#: mediagoblin/user_pages/forms.py:48
msgid "Description of this collection"
msgstr "這個è’è—çš„æè¿°"
-#: mediagoblin/edit/forms.py:92
+#: mediagoblin/edit/forms.py:103
msgid ""
"The title part of this collection's address. You usually don't need to "
"change this."
msgstr "æ­¤è’è—ç¶²å€çš„æ¨™é¡Œéƒ¨ä»½ï¼Œé€šå¸¸ä¸éœ€è¦ä¿®æ”¹ã€‚"
-#: mediagoblin/edit/views.py:65
+#: mediagoblin/edit/views.py:66
msgid "An entry with that slug already exists for this user."
msgstr "這個簡稱已經被其他人用了"
-#: mediagoblin/edit/views.py:86
+#: mediagoblin/edit/views.py:85
msgid "You are editing another user's media. Proceed with caution."
msgstr "您正在修改別人的媒體,請å°å¿ƒæ“作。"
-#: mediagoblin/edit/views.py:156
+#: mediagoblin/edit/views.py:155
#, python-format
msgid "You added the attachment %s!"
msgstr "您加上了附件「%sã€ï¼"
-#: mediagoblin/edit/views.py:181
+#: mediagoblin/edit/views.py:182
+msgid "You can only edit your own profile."
+msgstr ""
+
+#: mediagoblin/edit/views.py:188
msgid "You are editing a user's profile. Proceed with caution."
msgstr "您正在修改別人的個人檔案,請å°å¿ƒæ“作。"
-#: mediagoblin/edit/views.py:197
+#: mediagoblin/edit/views.py:204
msgid "Profile changes saved"
msgstr "個人檔案修改已儲存"
-#: mediagoblin/edit/views.py:226 mediagoblin/edit/views.py:246
+#: mediagoblin/edit/views.py:241
+msgid "Wrong password"
+msgstr "密碼錯誤"
+
+#: mediagoblin/edit/views.py:252
msgid "Account settings saved"
msgstr "帳號設定已儲存"
-#: mediagoblin/edit/views.py:251
-msgid "Wrong password"
-msgstr "密碼錯誤"
+#: mediagoblin/edit/views.py:286
+msgid "You need to confirm the deletion of your account."
+msgstr ""
-#: mediagoblin/edit/views.py:287 mediagoblin/submit/views.py:211
-#: mediagoblin/user_pages/views.py:210
+#: mediagoblin/edit/views.py:322 mediagoblin/submit/views.py:142
+#: mediagoblin/user_pages/views.py:214
#, python-format
msgid "You already have a collection called \"%s\"!"
msgstr "您已經有一個稱åšã€Œ%sã€çš„è’è—了ï¼"
-#: mediagoblin/edit/views.py:291
+#: mediagoblin/edit/views.py:326
msgid "A collection with that slug already exists for this user."
msgstr "這個使用者已經有使用該簡稱的è’è—了。"
-#: mediagoblin/edit/views.py:308
+#: mediagoblin/edit/views.py:343
msgid "You are editing another user's collection. Proceed with caution."
msgstr "您正在修改別人的è’è—,請å°å¿ƒæ“作。"
@@ -238,54 +268,62 @@ msgstr "此佈景沒有素æç›®éŒ„\n"
msgid "However, old link directory symlink found; removed.\n"
msgstr "但是舊的目錄連çµå·²ç¶“找到並移除。\n"
-#: mediagoblin/media_types/__init__.py:60
-#: mediagoblin/media_types/__init__.py:101
+#: 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:61
+#: mediagoblin/media_types/__init__.py:102
msgid "Sorry, I don't support that file type :("
msgstr "æŠ±æ­‰ï¼Œæˆ‘ä¸æ”¯æ´é€™æ¨£çš„æª”æ¡ˆæ ¼å¼ :("
-#: mediagoblin/media_types/video/processing.py:35
+#: mediagoblin/media_types/video/processing.py:36
msgid "Video transcoding failed"
msgstr "å½±åƒè½‰ç¢¼å¤±æ•—"
-#: mediagoblin/plugins/oauth/forms.py:26
-msgid "Client ID"
-msgstr "客戶 ID"
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
+msgid "Location"
+msgstr "ä½ç½®"
-#: mediagoblin/plugins/oauth/forms.py:28
-msgid "Next URL"
-msgstr "下一個 URL"
+#: 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/oauth/forms.py:30
+#: mediagoblin/plugins/oauth/forms.py:29
msgid "Allow"
msgstr "å…許"
-#: mediagoblin/plugins/oauth/forms.py:31
+#: mediagoblin/plugins/oauth/forms.py:30
msgid "Deny"
msgstr "拒絕"
-#: mediagoblin/plugins/oauth/forms.py:35
+#: mediagoblin/plugins/oauth/forms.py:34
msgid "Name"
msgstr "å稱"
-#: mediagoblin/plugins/oauth/forms.py:36
+#: mediagoblin/plugins/oauth/forms.py:35
msgid "The name of the OAuth client"
msgstr "OAuth client çš„å稱"
-#: mediagoblin/plugins/oauth/forms.py:37
+#: mediagoblin/plugins/oauth/forms.py:36
msgid "Description"
msgstr "æè¿°"
-#: mediagoblin/plugins/oauth/forms.py:39
+#: 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:41
+#: mediagoblin/plugins/oauth/forms.py:40
msgid "Type"
msgstr "類型"
-#: mediagoblin/plugins/oauth/forms.py:46
+#: 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"
@@ -295,25 +333,40 @@ msgid ""
" JavaScript client)."
msgstr "<strong>秘密</strong> — OAuth client å¯ä»¥å° GNU MediaGoblin ç«™å°ç™¼é€ä¸è¢«ä½¿ç”¨è€…ä»£ç†æ””截的請求 (例如伺æœç«¯çš„ client)。\n<strong>公開</strong> — OAuth client ç„¡æ³•å° GNU MediaGoblin ç«™å°ç™¼é€ç§˜å¯†çš„請求 (例如客戶端的 JavaScript client)。"
-#: mediagoblin/plugins/oauth/forms.py:53
+#: mediagoblin/plugins/oauth/forms.py:52
msgid "Redirect URI"
msgstr "é‡å®šå‘ URI"
-#: mediagoblin/plugins/oauth/forms.py:55
+#: 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,本欄ä½åœ¨å…¬é–‹é¡žåž‹çš„ OAuth client 為必填。"
-#: mediagoblin/plugins/oauth/forms.py:67
+#: mediagoblin/plugins/oauth/forms.py:66
msgid "This field is required for public clients"
msgstr "本欄ä½åœ¨å…¬é–‹é¡žåž‹çš„ OAuth client 為必填"
-#: mediagoblin/plugins/oauth/views.py:60
+#: mediagoblin/plugins/oauth/views.py:59
msgid "The client {0} has been registered!"
msgstr "OAuth client {0} 註冊完æˆï¼"
-#: mediagoblin/processing/__init__.py:138
+#: 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/templates/mediagoblin/submit/collection.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:34
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:68
+msgid "Add"
+msgstr "增加"
+
+#: mediagoblin/processing/__init__.py:172
msgid "Invalid file given for media type."
msgstr "指定錯誤的媒體類別ï¼"
@@ -321,56 +374,74 @@ msgstr "指定錯誤的媒體類別ï¼"
msgid "File"
msgstr "檔案"
-#: mediagoblin/submit/views.py:57
+#: mediagoblin/submit/views.py:51
msgid "You must provide a file."
msgstr "您必須æä¾›ä¸€å€‹æª”案"
-#: mediagoblin/submit/views.py:164
+#: mediagoblin/submit/views.py:97
msgid "Woohoo! Submitted!"
msgstr "啊哈ï¼PO 上去啦ï¼"
-#: mediagoblin/submit/views.py:215
+#: mediagoblin/submit/views.py:146
#, python-format
msgid "Collection \"%s\" added!"
msgstr "è’è—「%sã€æ–°å¢žå®Œæˆï¼"
-#: mediagoblin/templates/mediagoblin/base.html:48
-msgid "MediaGoblin logo"
-msgstr "MediaGoblin 標誌"
-
-#: mediagoblin/templates/mediagoblin/base.html:54
-#, 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:64
+msgid "Verify your email!"
+msgstr "ç¢ºèªæ‚¨çš„é›»å­éƒµä»¶"
-#: mediagoblin/templates/mediagoblin/base.html:60
+#: mediagoblin/templates/mediagoblin/base.html:65
msgid "log out"
msgstr "登出"
-#: mediagoblin/templates/mediagoblin/base.html:62
-#: mediagoblin/templates/mediagoblin/root.html:28
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:151
-msgid "Add media"
-msgstr "新增媒體"
-
-#: mediagoblin/templates/mediagoblin/base.html:68
-msgid "Verify your email!"
-msgstr "ç¢ºèªæ‚¨çš„é›»å­éƒµä»¶"
-
-#: mediagoblin/templates/mediagoblin/base.html:73
+#: mediagoblin/templates/mediagoblin/base.html:70
#: mediagoblin/templates/mediagoblin/auth/login.html:28
#: mediagoblin/templates/mediagoblin/auth/login.html:36
#: mediagoblin/templates/mediagoblin/auth/login.html:54
msgid "Log in"
msgstr "登入"
-#: mediagoblin/templates/mediagoblin/base.html:87
-msgid ""
-"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
-"href=\"http://gnu.org/\">GNU</a> project."
-msgstr "基於 <a href=\"http://mediagoblin.org\">MediaGoblin</a> — 一項 <a href=\"http://gnu.org/\">GNU</a> 專案。"
+#: mediagoblin/templates/mediagoblin/base.html:79
+#, 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:86
+msgid "Change account settings"
+msgstr "更改帳號設定"
#: mediagoblin/templates/mediagoblin/base.html:90
+#: mediagoblin/templates/mediagoblin/base.html:105
+#: mediagoblin/templates/mediagoblin/admin/panel.html:21
+#: mediagoblin/templates/mediagoblin/admin/panel.html:26
+#: 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:93
+msgid "Log out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:156
+msgid "Add media"
+msgstr "新增媒體"
+
+#: mediagoblin/templates/mediagoblin/base.html:99
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
+msgid "Create new collection"
+msgstr "新增新的è’è—"
+
+#: mediagoblin/templates/mediagoblin/base.html:122
+#, 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/base.html:125
#, python-format
msgid ""
"Released under the <a "
@@ -382,52 +453,31 @@ msgstr "以 <a href=\"http://www.fsf.org/licensing/licenses/agpl-3.0.html\">AGPL
msgid "Image of goblin stressing out"
msgstr "滿臉å•號的哥布林"
-#: mediagoblin/templates/mediagoblin/root.html:25
-msgid "Actions"
-msgstr "動作"
-
#: mediagoblin/templates/mediagoblin/root.html:31
-msgid "Create new collection"
-msgstr "新增新的è’è—"
-
-#: mediagoblin/templates/mediagoblin/root.html:34
-msgid "Change account settings"
-msgstr "更改帳號設定"
-
-#: mediagoblin/templates/mediagoblin/root.html:38
-#: mediagoblin/templates/mediagoblin/root.html:44
-#: mediagoblin/templates/mediagoblin/admin/panel.html:21
-#: mediagoblin/templates/mediagoblin/admin/panel.html:26
-#: 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/root.html:51
msgid "Explore"
msgstr "探索"
-#: mediagoblin/templates/mediagoblin/root.html:53
+#: mediagoblin/templates/mediagoblin/root.html:33
msgid "Hi there, welcome to this MediaGoblin site!"
msgstr "å˜¿ï¼æ­¡è¿Žä¾†åˆ° MediaGoblin ç«™å°ï¼ "
-#: mediagoblin/templates/mediagoblin/root.html:55
+#: mediagoblin/templates/mediagoblin/root.html:35
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/root.html:56
+#: mediagoblin/templates/mediagoblin/root.html:36
msgid ""
"To add your own media, place comments, and more, you can log in with your "
"MediaGoblin account."
msgstr "您å¯ä»¥ç™»å…¥æ‚¨çš„ MediaGoblin 帳號以進行上傳媒體ã€å¼µè²¼è©•論等等。"
-#: mediagoblin/templates/mediagoblin/root.html:58
+#: mediagoblin/templates/mediagoblin/root.html:38
msgid "Don't have one yet? It's easy!"
msgstr "沒有帳號嗎?開帳號很簡單ï¼"
-#: mediagoblin/templates/mediagoblin/root.html:59
+#: mediagoblin/templates/mediagoblin/root.html:39
#, python-format
msgid ""
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Create an account at this site</a>\n"
@@ -435,7 +485,7 @@ msgid ""
" <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
msgstr "<a class=\"button_action_highlight\" href=\"%(register_url)s\">在這個網站上建立帳號</a>\n 或是\n <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">在自己的伺æœå™¨ä¸Šå»ºç«‹ MediaGoblin</a>"
-#: mediagoblin/templates/mediagoblin/root.html:67
+#: mediagoblin/templates/mediagoblin/root.html:47
msgid "Most recent media"
msgstr "最新的媒體"
@@ -541,41 +591,62 @@ msgid ""
"%(verification_url)s"
msgstr "%(username)s 您好:\n\nè¦å•Ÿå‹• GNU MediaGoblin 帳號,請在您的ç€è¦½å™¨ä¸­æ‰“開下é¢çš„ç¶²å€:\n\n%(verification_url)s"
+#: 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:43
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:159
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:175
msgid "Attachments"
msgstr "附件"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
msgid "Add attachment"
msgstr "新增附件"
-#: mediagoblin/templates/mediagoblin/edit/attachments.html:60
+#: 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:81
+#: 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:62
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:51
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
msgid "Save changes"
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:47
+#: 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
@@ -588,13 +659,17 @@ msgstr "編輯 %(media_title)s"
msgid "Changing %(username)s's account settings"
msgstr "正在改變 %(username)s 的帳號設定"
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
+msgid "Delete my account"
+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:35
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:34
#, python-format
msgid "Editing %(username)s's profile"
msgstr "編輯 %(username)s 的個人檔案"
@@ -610,7 +685,7 @@ msgstr "此媒體被 tag æˆï¼š%(tag_name)s"
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
msgstr "下載"
@@ -633,7 +708,7 @@ msgid ""
msgstr "您å¯ä»¥åœ¨ <a href=\"http://getfirefox.com\">http://getfirefox.com</a> å–å¾—å¯ä»¥æ’­æ”¾æ­¤è²éŸ³çš„ç€è¦½å™¨ï¼"
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:56
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:61
msgid "Original file"
msgstr "原始檔案"
@@ -645,8 +720,8 @@ msgstr "WebM 檔案 (Vorbis 編碼)"
#: 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:67
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
+#: 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 的照片"
@@ -691,21 +766,21 @@ msgstr "檔案格å¼"
msgid "Object Height"
msgstr "物件高度"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
msgid ""
-"Sorry, this video will not work because \n"
-"\t your web browser does not support HTML5 \n"
-"\t video."
-msgstr "抱歉,此影片無法使用,因為您的ç€è¦½å™¨ä¸æ”¯æ´ HTML5 的影片."
+"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:43
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:47
msgid ""
"You can get a modern web browser that \n"
-"\t can play this video at <a href=\"http://getfirefox.com\">\n"
-"\t http://getfirefox.com</a>!"
-msgstr "您å¯ä»¥åœ¨ <a href=\"http://getfirefox.com\">http://getfirefox.com</a> å–å¾—å¯ä»¥æ’­æ”¾æ­¤å½±ç‰‡çš„ç€è¦½å™¨ï¼"
+" can play this video at <a href=\"http://getfirefox.com\">\n"
+" http://getfirefox.com</a>!"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:69
msgid "WebM file (640p; VP8/Vorbis)"
msgstr "WebM 檔案 (640p; VP8/Vorbis)"
@@ -713,12 +788,6 @@ msgstr "WebM 檔案 (640p; VP8/Vorbis)"
msgid "Add a collection"
msgstr "新增è’è—"
-#: mediagoblin/templates/mediagoblin/submit/collection.html:30
-#: mediagoblin/templates/mediagoblin/submit/start.html:34
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-msgid "Add"
-msgstr "增加"
-
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
msgid "Add your media"
@@ -735,12 +804,12 @@ msgid "%(collection_title)s by <a href=\"%(user_url)s\">%(username)s</a>"
msgstr "%(collection_title)s by <a href=\"%(user_url)s\">%(username)s</a>"
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:87
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
msgid "Edit"
msgstr "編輯"
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:91
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
msgid "Delete"
msgstr "刪除"
@@ -750,11 +819,6 @@ msgstr "刪除"
msgid "Really delete %(title)s?"
msgstr "真的è¦åˆªé™¤ %(title)s?"
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:47
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Delete permanently"
-msgstr "永久刪除"
-
#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:31
#, python-format
msgid "Really remove %(media_title)s from %(collection_title)s?"
@@ -764,6 +828,16 @@ msgstr "確定è¦å¾ž %(collection_title)s 移除 %(media_title)s 嗎?"
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 ""
@@ -776,56 +850,53 @@ msgstr "%(username)s 您好:\n%(comment_author)s 在 %(instance_name)s å°æ‚¨ç
msgid "%(username)s's media"
msgstr "%(username)s的媒體"
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:37
+#: 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:46
+#: 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:102
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:94
msgid "Add a comment"
msgstr "新增評論"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:109
-msgid ""
-"You can use <a "
-"href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> for"
-" formatting."
-msgstr "您å¯ä»¥ç”¨ <a href=\"http://markdown.tw\">Markdown</a> 來排版。"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:113
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:102
msgid "Add this comment"
msgstr "增加評論"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:123
msgid "at"
msgstr "在"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:152
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:144
#, python-format
msgid ""
"<h3>Added on</h3>\n"
" <p>%(date)s</p>"
msgstr "<h3>加入日期</h3>\n <p>%(date)s</p>"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:202
-msgid "Add media to collection"
-msgstr "將媒體加入è’è—"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:35
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
#, python-format
-msgid "Add %(title)s to collection"
-msgstr "新增 %(title)s 到è’è—"
+msgid "Add “%(media_title)s†to a collection"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:51
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
msgstr "+"
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
msgstr "新增新的è’è—"
@@ -887,27 +958,31 @@ msgstr "如果您就是本人但是掉了èªè­‰ä¿¡ï¼Œæ‚¨å¯ä»¥ <a href=\"%(login
msgid "Here's a spot to tell others about yourself."
msgstr "這個地方能讓您å‘他人介紹自己。"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:101
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:100
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:117
msgid "Edit profile"
msgstr "編輯個人檔案"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:105
msgid "This user hasn't filled in their profile (yet)."
msgstr "這個使用者(還)沒有填寫個人檔案。"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:124
+msgid "Browse collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:137
#, python-format
msgid "View all of %(username)s's media"
msgstr "查看 %(username)s 的全部媒體"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:145
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:150
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:157
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:162
#: 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..."
@@ -917,28 +992,24 @@ msgstr "那裡好åƒé‚„沒有任何的媒體…"
msgid "(remove)"
msgstr " (移除)"
-#: mediagoblin/templates/mediagoblin/utils/collections.html:20
-#, python-format
-msgid "In collections (%(collected)s)"
-msgstr "在è’è— (%(collected)s)"
+#: 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 "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/geolocation_map.html:25
-msgid "Location"
-msgstr "ä½ç½®"
-
-#: mediagoblin/templates/mediagoblin/utils/geolocation_map.html:53
-#, python-format
-msgid "View on <a href=\"%(osm_url)s\">OpenStreetMap</a>"
-msgstr "在 <a href=\"%(osm_url)s\">OpenStreetMap</a> 上觀看"
-
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
msgstr "版權所有"
@@ -969,49 +1040,64 @@ msgstr "更舊的"
msgid "Tagged with"
msgstr "標籤"
-#: mediagoblin/tools/exif.py:78
+#: mediagoblin/tools/exif.py:80
msgid "Could not read the image file."
msgstr "無法讀å–圖片檔案。"
-#: mediagoblin/tools/response.py:30
+#: mediagoblin/tools/response.py:35
msgid "Oops!"
msgstr "糟糕ï¼"
-#: mediagoblin/tools/response.py:31
+#: mediagoblin/tools/response.py:36
msgid "An error occured"
msgstr "發生錯誤"
-#: mediagoblin/tools/response.py:46
+#: mediagoblin/tools/response.py:51
msgid "Operation not allowed"
msgstr "æ“作ä¸å…許"
-#: mediagoblin/tools/response.py:47
+#: mediagoblin/tools/response.py:52
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:55
+#: mediagoblin/tools/response.py:60
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/user_pages/forms.py:28
+#: 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\">Markdown</a> for"
+" formatting."
+msgstr "您å¯ä»¥ç”¨ <a href=\"http://markdown.tw\">Markdown</a> 來排版。"
+
+#: mediagoblin/user_pages/forms.py:31
msgid "I am sure I want to delete this"
msgstr "我確定我è¦åˆªé™¤é€™å€‹åª’é«”"
-#: mediagoblin/user_pages/forms.py:32
+#: 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:35
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:40
msgid "-- Select --"
msgstr "— è«‹é¸æ“‡ —"
-#: mediagoblin/user_pages/forms.py:37
+#: mediagoblin/user_pages/forms.py:42
msgid "Include a note"
msgstr "加註"
@@ -1019,74 +1105,69 @@ msgstr "加註"
msgid "commented on your post"
msgstr "在您的內容張貼評論"
-#: mediagoblin/user_pages/views.py:156
+#: mediagoblin/user_pages/views.py:166
msgid "Oops, your comment was empty."
msgstr "啊,您的留言是空的。"
-#: mediagoblin/user_pages/views.py:162
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
msgstr "您的留言已經張貼完æˆï¼"
-#: mediagoblin/user_pages/views.py:230
+#: mediagoblin/user_pages/views.py:197
+msgid "Please check your entries and try again."
+msgstr "請檢查項目並é‡è©¦ã€‚"
+
+#: mediagoblin/user_pages/views.py:237
msgid "You have to select or add a collection"
msgstr "您需è¦é¸æ“‡æˆ–是新增一個è’è—"
-#: mediagoblin/user_pages/views.py:238
+#: mediagoblin/user_pages/views.py:248
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr "「%sã€å·²ç¶“在「%sã€è’è—"
-#: mediagoblin/user_pages/views.py:253
+#: mediagoblin/user_pages/views.py:264
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr "「%sã€åŠ å…¥ã€Œ%sã€è’è—"
-#: mediagoblin/user_pages/views.py:261
-msgid "Please check your entries and try again."
-msgstr "請檢查項目並é‡è©¦ã€‚"
-
-#: mediagoblin/user_pages/views.py:292
-msgid ""
-"Some of the files with this entry seem to be missing. Deleting anyway."
-msgstr "在此項目中有些檔案好åƒä¸è¦‹äº†ï¼Œå·²å…ˆè¡Œåˆªé™¤ã€‚"
-
-#: mediagoblin/user_pages/views.py:297
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
msgstr "您已經刪除此媒體。"
-#: mediagoblin/user_pages/views.py:304
+#: mediagoblin/user_pages/views.py:293
msgid "The media was not deleted because you didn't check that you were sure."
msgstr "由於您沒有勾é¸ç¢ºèªï¼Œè©²åª’體沒有被移除。"
-#: mediagoblin/user_pages/views.py:312
+#: mediagoblin/user_pages/views.py:301
msgid "You are about to delete another user's media. Proceed with caution."
msgstr "您正在刪除別人的媒體,請å°å¿ƒæ“作。"
-#: mediagoblin/user_pages/views.py:370
+#: mediagoblin/user_pages/views.py:375
msgid "You deleted the item from the collection."
msgstr "您已經從該è’è—中刪除該項目。"
-#: mediagoblin/user_pages/views.py:374
+#: mediagoblin/user_pages/views.py:379
msgid "The item was not removed because you didn't check that you were sure."
msgstr "由於您沒有勾é¸ç¢ºèªï¼Œè©²é …目沒有被移除。"
-#: mediagoblin/user_pages/views.py:384
+#: mediagoblin/user_pages/views.py:389
msgid ""
"You are about to delete an item from another user's collection. Proceed with"
" caution."
msgstr "您正在從別人的è’è—中刪除項目,請å°å¿ƒæ“作。"
-#: mediagoblin/user_pages/views.py:417
+#: mediagoblin/user_pages/views.py:422
#, python-format
msgid "You deleted the collection \"%s\""
msgstr "您已經刪除「%sã€è’è—。"
-#: mediagoblin/user_pages/views.py:424
+#: mediagoblin/user_pages/views.py:429
msgid ""
"The collection was not deleted because you didn't check that you were sure."
msgstr "由於您沒有勾é¸ç¢ºèªï¼Œè©²è’è—æ²’有被移除。"
-#: mediagoblin/user_pages/views.py:434
+#: mediagoblin/user_pages/views.py:439
msgid ""
"You are about to delete another user's collection. Proceed with caution."
msgstr "您正在刪除別人的è’è—,請å°å¿ƒæ“作。"
diff --git a/mediagoblin/init/celery/__init__.py b/mediagoblin/init/celery/__init__.py
index fc595ea7..8d7a41bd 100644
--- a/mediagoblin/init/celery/__init__.py
+++ b/mediagoblin/init/celery/__init__.py
@@ -18,6 +18,7 @@ import os
import sys
from celery import Celery
+from mediagoblin.tools.pluginapi import PluginManager
MANDATORY_CELERY_IMPORTS = ['mediagoblin.processing.task']
@@ -65,6 +66,9 @@ def setup_celery_app(app_config, global_config,
celery_app = Celery()
celery_app.config_from_object(celery_settings)
+ for callable_hook in PluginManager().get_hook_callables('celery_setup'):
+ callable_hook(celery_app)
+
def setup_celery_from_config(app_config, global_config,
settings_module=DEFAULT_SETTINGS_MODULE,
diff --git a/mediagoblin/init/celery/from_celery.py b/mediagoblin/init/celery/from_celery.py
index 41fffa45..8a794abb 100644
--- a/mediagoblin/init/celery/from_celery.py
+++ b/mediagoblin/init/celery/from_celery.py
@@ -16,13 +16,13 @@
import os
import logging
+import logging.config
-from configobj import ConfigObj
-from ConfigParser import RawConfigParser
from celery.signals import setup_logging
from mediagoblin import app, mg_globals
from mediagoblin.init.celery import setup_celery_from_config
+from mediagoblin.tools.pluginapi import PluginManager
OUR_MODULENAME = __name__
@@ -36,49 +36,20 @@ def setup_logging_from_paste_ini(loglevel, **kw):
else:
logging_conf_file = 'paste.ini'
+ # allow users to set up explicitly which paste file to check via the
+ # PASTE_CONFIG environment variable
+ logging_conf_file = os.environ.get(
+ 'PASTE_CONFIG', logging_conf_file)
+
if not os.path.exists(logging_conf_file):
raise IOError('{0} does not exist. Logging can not be set up.'.format(
logging_conf_file))
- logging_conf = ConfigObj(logging_conf_file)
-
- config = logging_conf
-
- # Read raw config to avoid interpolation of formatting parameters
- raw_config = RawConfigParser()
- raw_config.readfp(open(logging_conf_file))
-
- # Set up formatting
- # Get the format string and circumvent configobj interpolation of the value
- fmt = raw_config.get('formatter_generic', 'format')
-
- # Create the formatter
- formatter = logging.Formatter(fmt)
-
- # Check for config values
- if not config.get('loggers') or not config['loggers'].get('keys'):
- print('No loggers found')
- return
-
- # Iterate all teh loggers.keys values
- for name in config['loggers']['keys'].split(','):
- if not config.get('logger_{0}'.format(name)):
- continue
-
- log_params = config['logger_{0}'.format(name)]
-
- qualname = log_params['qualname'] if 'qualname' in log_params else name
-
- if qualname == 'root':
- qualname = None
-
- logger = logging.getLogger(qualname)
-
- level = getattr(logging, log_params['level'])
- logger.setLevel(level)
+ logging.config.fileConfig(logging_conf_file)
- for handler in logger.handlers:
- handler.setFormatter(formatter)
+ for callable_hook in \
+ PluginManager().get_hook_callables('celery_logging_setup'):
+ callable_hook()
setup_logging.connect(setup_logging_from_paste_ini)
diff --git a/mediagoblin/listings/routing.py b/mediagoblin/listings/routing.py
index e5683168..ee8f5020 100644
--- a/mediagoblin/listings/routing.py
+++ b/mediagoblin/listings/routing.py
@@ -19,5 +19,11 @@ from mediagoblin.tools.routing import add_route
add_route('mediagoblin.listings.tags_listing',
"/tag/<string:tag>/",
"mediagoblin.listings.views:tag_listing")
+
+# Atom feeds:
add_route('mediagoblin.listings.tag_atom_feed', "/tag/<string:tag>/atom/",
- "mediagoblin.listings.views:tag_atom_feed")
+ "mediagoblin.listings.views:atom_feed")
+
+# The all new entries feed
+add_route('mediagoblin.listings.atom_feed', '/atom/',
+ "mediagoblin.listings.views:atom_feed")
diff --git a/mediagoblin/listings/views.py b/mediagoblin/listings/views.py
index d37161fc..35af7148 100644
--- a/mediagoblin/listings/views.py
+++ b/mediagoblin/listings/views.py
@@ -64,26 +64,30 @@ def tag_listing(request, page):
ATOM_DEFAULT_NR_OF_UPDATED_ITEMS = 15
-def tag_atom_feed(request):
+def atom_feed(request):
"""
generates the atom feed with the tag images
"""
- tag_slug = request.matchdict[u'tag']
+ tag_slug = request.matchdict.get(u'tag')
+ feed_title = "MediaGoblin Feed"
+ if tag_slug:
+ cursor = media_entries_for_tag_slug(request.db, tag_slug)
+ link = request.urlgen('mediagoblin.listings.tags_listing',
+ qualified=True, tag=tag_slug )
+ feed_title += "for tag '%s'" % tag_slug
+ else: # all recent item feed
+ cursor = MediaEntry.query.filter_by(state=u'processed')
+ link = request.urlgen('index', qualified=True)
+ feed_title += "for all recent items"
- cursor = media_entries_for_tag_slug(request.db, tag_slug)
cursor = cursor.order_by(MediaEntry.created.desc())
cursor = cursor.limit(ATOM_DEFAULT_NR_OF_UPDATED_ITEMS)
- """
- ATOM feed id is a tag URI (see http://en.wikipedia.org/wiki/Tag_URI)
- """
feed = AtomFeed(
- "MediaGoblin: Feed for tag '%s'" % tag_slug,
+ feed_title,
feed_url=request.url,
- id='tag:'+request.host+',2011:gallery.tag-%s' % tag_slug,
- links=[{'href': request.urlgen(
- 'mediagoblin.listings.tags_listing',
- qualified=True, tag=tag_slug ),
+ id=link,
+ links=[{'href': link,
'rel': 'alternate',
'type': 'text/html'}])
for entry in cursor:
diff --git a/mediagoblin/media_types/__init__.py b/mediagoblin/media_types/__init__.py
index 06763510..0abb38d3 100644
--- a/mediagoblin/media_types/__init__.py
+++ b/mediagoblin/media_types/__init__.py
@@ -49,7 +49,8 @@ def sniff_media(media):
for media_type, manager in get_media_managers():
_log.info('Sniffing {0}'.format(media_type))
- if manager['sniff_handler'](media_file, media=media):
+ if 'sniff_handler' in manager and \
+ manager['sniff_handler'](media_file, media=media):
_log.info('{0} accepts the file'.format(media_type))
return media_type, manager
else:
diff --git a/mediagoblin/media_types/ascii/models.py b/mediagoblin/media_types/ascii/models.py
index 3416993c..c7505292 100644
--- a/mediagoblin/media_types/ascii/models.py
+++ b/mediagoblin/media_types/ascii/models.py
@@ -32,7 +32,8 @@ class AsciiData(Base):
media_entry = Column(Integer, ForeignKey('core__media_entries.id'),
primary_key=True)
get_media_entry = relationship("MediaEntry",
- backref=backref(BACKREF_NAME, cascade="all, delete-orphan"))
+ backref=backref(BACKREF_NAME, uselist=False,
+ cascade="all, delete-orphan"))
DATA_MODEL = AsciiData
diff --git a/mediagoblin/media_types/ascii/processing.py b/mediagoblin/media_types/ascii/processing.py
index dbc9661e..309aab0a 100644
--- a/mediagoblin/media_types/ascii/processing.py
+++ b/mediagoblin/media_types/ascii/processing.py
@@ -19,7 +19,6 @@ import Image
import logging
from mediagoblin import mg_globals as mgg
-from mediagoblin.decorators import get_workbench
from mediagoblin.processing import create_pub_filepath
from mediagoblin.media_types.ascii import asciitoimage
@@ -39,13 +38,14 @@ def sniff_handler(media_file, **kw):
return False
-@get_workbench
-def process_ascii(entry, workbench=None):
+def process_ascii(proc_state):
"""Code to process a txt file. Will be run by celery.
A Workbench() represents a local tempory dir. It is automatically
cleaned up when this function exits.
"""
+ entry = proc_state.entry
+ workbench = proc_state.workbench
ascii_config = mgg.global_config['media_type:mediagoblin.media_types.ascii']
# Conversions subdirectory to avoid collisions
conversions_subdir = os.path.join(
diff --git a/mediagoblin/media_types/audio/models.py b/mediagoblin/media_types/audio/models.py
index 368ab1eb..d01367d5 100644
--- a/mediagoblin/media_types/audio/models.py
+++ b/mediagoblin/media_types/audio/models.py
@@ -32,7 +32,8 @@ class AudioData(Base):
media_entry = Column(Integer, ForeignKey('core__media_entries.id'),
primary_key=True)
get_media_entry = relationship("MediaEntry",
- backref=backref(BACKREF_NAME, cascade="all, delete-orphan"))
+ backref=backref(BACKREF_NAME, uselist=False,
+ cascade="all, delete-orphan"))
DATA_MODEL = AudioData
diff --git a/mediagoblin/media_types/audio/processing.py b/mediagoblin/media_types/audio/processing.py
index a89d6634..101b83e5 100644
--- a/mediagoblin/media_types/audio/processing.py
+++ b/mediagoblin/media_types/audio/processing.py
@@ -19,7 +19,6 @@ from tempfile import NamedTemporaryFile
import os
from mediagoblin import mg_globals as mgg
-from mediagoblin.decorators import get_workbench
from mediagoblin.processing import (create_pub_filepath, BadMediaFail,
FilenameBuilder, ProgressCallback)
@@ -43,13 +42,14 @@ def sniff_handler(media_file, **kw):
return False
-@get_workbench
-def process_audio(entry, workbench=None):
+def process_audio(proc_state):
"""Code to process uploaded audio. Will be run by celery.
A Workbench() represents a local tempory dir. It is automatically
cleaned up when this function exits.
"""
+ entry = proc_state.entry
+ workbench = proc_state.workbench
audio_config = mgg.global_config['media_type:mediagoblin.media_types.audio']
queued_filepath = entry.queued_media_file
diff --git a/mediagoblin/media_types/audio/transcoders.py b/mediagoblin/media_types/audio/transcoders.py
index f3d49c30..3a9a2125 100644
--- a/mediagoblin/media_types/audio/transcoders.py
+++ b/mediagoblin/media_types/audio/transcoders.py
@@ -14,7 +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/>.
-import pdb
import logging
import Image
@@ -233,5 +232,3 @@ if __name__ == '__main__':
thumbnailer = AudioThumbnailer()
thumbnailer.spectrogram(*sys.argv[1:], width=640)
-
- pdb.set_trace()
diff --git a/mediagoblin/media_types/image/__init__.py b/mediagoblin/media_types/image/__init__.py
index 36d7c201..3e167db1 100644
--- a/mediagoblin/media_types/image/__init__.py
+++ b/mediagoblin/media_types/image/__init__.py
@@ -25,4 +25,8 @@ MEDIA_MANAGER = {
"sniff_handler": sniff_handler,
"display_template": "mediagoblin/media_displays/image.html",
"default_thumb": "images/media_thumbs/image.png",
- "accepted_extensions": ["jpg", "jpeg", "png", "gif", "tiff"]}
+ "accepted_extensions": ["jpg", "jpeg", "png", "gif", "tiff"],
+
+ # Used by the media_entry.get_display_media method
+ "media_fetch_order": [u'medium', u'original', u'thumb'],
+}
diff --git a/mediagoblin/media_types/image/models.py b/mediagoblin/media_types/image/models.py
index 63d80aa8..b2ea3960 100644
--- a/mediagoblin/media_types/image/models.py
+++ b/mediagoblin/media_types/image/models.py
@@ -33,7 +33,8 @@ class ImageData(Base):
media_entry = Column(Integer, ForeignKey('core__media_entries.id'),
primary_key=True)
get_media_entry = relationship("MediaEntry",
- backref=backref(BACKREF_NAME, cascade="all, delete-orphan"))
+ backref=backref(BACKREF_NAME, uselist=False,
+ cascade="all, delete-orphan"))
width = Column(Integer)
height = Column(Integer)
diff --git a/mediagoblin/media_types/image/processing.py b/mediagoblin/media_types/image/processing.py
index 2a5c463e..e951ef29 100644
--- a/mediagoblin/media_types/image/processing.py
+++ b/mediagoblin/media_types/image/processing.py
@@ -19,7 +19,6 @@ import os
import logging
from mediagoblin import mg_globals as mgg
-from mediagoblin.decorators import get_workbench
from mediagoblin.processing import BadMediaFail, \
create_pub_filepath, FilenameBuilder
from mediagoblin.tools.exif import exif_fix_image_orientation, \
@@ -28,6 +27,12 @@ from mediagoblin.tools.exif import exif_fix_image_orientation, \
_log = logging.getLogger(__name__)
+PIL_FILTERS = {
+ 'NEAREST': Image.NEAREST,
+ 'BILINEAR': Image.BILINEAR,
+ 'BICUBIC': Image.BICUBIC,
+ 'ANTIALIAS': Image.ANTIALIAS}
+
def resize_image(entry, filename, new_path, exif_tags, workdir, new_size,
size_limits=(0, 0)):
@@ -47,7 +52,19 @@ def resize_image(entry, filename, new_path, exif_tags, workdir, new_size,
except IOError:
raise BadMediaFail()
resized = exif_fix_image_orientation(resized, exif_tags) # Fix orientation
- resized.thumbnail(new_size, Image.ANTIALIAS)
+
+ filter_config = \
+ mgg.global_config['media_type:mediagoblin.media_types.image']\
+ ['resize_filter']
+
+ try:
+ resize_filter = PIL_FILTERS[filter_config.upper()]
+ except KeyError:
+ raise Exception('Filter "{0}" not found, choose one of {1}'.format(
+ unicode(filter_config),
+ 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, new_path[-1])
@@ -77,21 +94,21 @@ def sniff_handler(media_file, **kw):
return False
-@get_workbench
-def process_image(entry, workbench=None):
+def process_image(proc_state):
"""Code to process an image. Will be run by celery.
A Workbench() represents a local tempory dir. It is automatically
cleaned up when this function exits.
"""
+ entry = proc_state.entry
+ workbench = proc_state.workbench
+
# Conversions subdirectory to avoid collisions
conversions_subdir = os.path.join(
workbench.dir, 'conversions')
os.mkdir(conversions_subdir)
- queued_filepath = entry.queued_media_file
- queued_filename = workbench.localized_file(
- mgg.queue_store, queued_filepath,
- 'source')
+
+ queued_filename = proc_state.get_queued_filename()
name_builder = FilenameBuilder(queued_filename)
# EXIF extraction
@@ -105,6 +122,7 @@ def process_image(entry, workbench=None):
exif_tags, conversions_subdir,
(mgg.global_config['media:thumb']['max_width'],
mgg.global_config['media:thumb']['max_height']))
+ entry.media_files[u'thumb'] = thumb_filepath
# If the size of the original file exceeds the specified size of a `medium`
# file, a `.medium.jpg` files is created and later associated with the media
@@ -120,28 +138,13 @@ def process_image(entry, workbench=None):
exif_tags, conversions_subdir,
(mgg.global_config['media:medium']['max_width'],
mgg.global_config['media:medium']['max_height']))
- else:
- medium_filepath = None
+ entry.media_files[u'medium'] = medium_filepath
# Copy our queued local workbench to its final destination
- original_filepath = create_pub_filepath(
- entry, name_builder.fill('{basename}{ext}'))
- mgg.public_store.copy_local_to_storage(queued_filename, original_filepath)
-
- # Remove queued media file from storage and database.
- # queued_filepath is in the task_id directory which should
- # be removed too, but fail if the directory is not empty to be on
- # the super-safe side.
- mgg.queue_store.delete_file(queued_filepath) # rm file
- mgg.queue_store.delete_dir(queued_filepath[:-1]) # rm dir
- entry.queued_media_file = []
-
- # Insert media file information into database
- media_files_dict = entry.setdefault('media_files', {})
- media_files_dict[u'thumb'] = thumb_filepath
- media_files_dict[u'original'] = original_filepath
- if medium_filepath:
- media_files_dict[u'medium'] = medium_filepath
+ proc_state.copy_original(name_builder.fill('{basename}{ext}'))
+
+ # Remove queued media file from storage and database
+ proc_state.delete_queue_file()
# Insert exif data into database
exif_all = clean_exif(exif_tags)
diff --git a/mediagoblin/media_types/stl/model_loader.py b/mediagoblin/media_types/stl/model_loader.py
index 60fa4851..88f19314 100644
--- a/mediagoblin/media_types/stl/model_loader.py
+++ b/mediagoblin/media_types/stl/model_loader.py
@@ -80,6 +80,7 @@ class ObjModel(ThreeDee):
def load(self, fileob):
for line in fileob:
+ line = line.strip()
if line[0] == "v":
self.verts.append(self.__vector(line))
@@ -121,6 +122,8 @@ def auto_detect(fileob, hint):
pass
except ValueError:
pass
+ except IndexError:
+ pass
try:
# It is pretty important that the binary stl model loader
# is tried second, because its possible for it to parse
diff --git a/mediagoblin/media_types/stl/models.py b/mediagoblin/media_types/stl/models.py
index 17091f0e..ff50e9c0 100644
--- a/mediagoblin/media_types/stl/models.py
+++ b/mediagoblin/media_types/stl/models.py
@@ -32,7 +32,8 @@ class StlData(Base):
media_entry = Column(Integer, ForeignKey('core__media_entries.id'),
primary_key=True)
get_media_entry = relationship("MediaEntry",
- backref=backref(BACKREF_NAME, cascade="all, delete-orphan"))
+ backref=backref(BACKREF_NAME, uselist=False,
+ cascade="all, delete-orphan"))
center_x = Column(Float)
center_y = Column(Float)
diff --git a/mediagoblin/media_types/stl/processing.py b/mediagoblin/media_types/stl/processing.py
index 12b87317..e41df395 100644
--- a/mediagoblin/media_types/stl/processing.py
+++ b/mediagoblin/media_types/stl/processing.py
@@ -21,7 +21,6 @@ import subprocess
import pkg_resources
from mediagoblin import mg_globals as mgg
-from mediagoblin.decorators import get_workbench
from mediagoblin.processing import create_pub_filepath, \
FilenameBuilder
@@ -76,13 +75,15 @@ def blender_render(config):
env=env)
-@get_workbench
-def process_stl(entry, workbench=None):
+def process_stl(proc_state):
"""Code to process an stl or obj model. Will be run by celery.
A Workbench() represents a local tempory dir. It is automatically
cleaned up when this function exits.
"""
+ entry = proc_state.entry
+ workbench = proc_state.workbench
+
queued_filepath = entry.queued_media_file
queued_filename = workbench.localized_file(
mgg.queue_store, queued_filepath, 'source')
diff --git a/mediagoblin/media_types/video/__init__.py b/mediagoblin/media_types/video/__init__.py
index 3faa5b9f..fab601f6 100644
--- a/mediagoblin/media_types/video/__init__.py
+++ b/mediagoblin/media_types/video/__init__.py
@@ -26,4 +26,9 @@ MEDIA_MANAGER = {
"display_template": "mediagoblin/media_displays/video.html",
"default_thumb": "images/media_thumbs/video.jpg",
"accepted_extensions": [
- "mp4", "mov", "webm", "avi", "3gp", "3gpp", "mkv", "ogv", "m4v"]}
+ "mp4", "mov", "webm", "avi", "3gp", "3gpp", "mkv", "ogv", "m4v"],
+
+ # Used by the media_entry.get_display_media method
+ "media_fetch_order": [u'webm_640', u'original'],
+ "default_webm_type": 'video/webm; codecs="vp8, vorbis"',
+}
diff --git a/mediagoblin/media_types/video/migrations.py b/mediagoblin/media_types/video/migrations.py
index f54c23ea..442bbd8d 100644
--- a/mediagoblin/media_types/video/migrations.py
+++ b/mediagoblin/media_types/video/migrations.py
@@ -14,4 +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/>.
+from mediagoblin.db.migration_tools import RegisterMigration, inspect_table
+
+from sqlalchemy import MetaData, Column, Unicode
+
MIGRATIONS = {}
+
+@RegisterMigration(1, MIGRATIONS)
+def add_orig_metadata_column(db_conn):
+ metadata = MetaData(bind=db_conn.bind)
+
+ vid_data = inspect_table(metadata, "video__mediadata")
+
+ col = Column('orig_metadata', Unicode,
+ default=None, nullable=True)
+ col.create(vid_data)
+ db_conn.commit()
diff --git a/mediagoblin/media_types/video/models.py b/mediagoblin/media_types/video/models.py
index 645ef4d3..f696a892 100644
--- a/mediagoblin/media_types/video/models.py
+++ b/mediagoblin/media_types/video/models.py
@@ -20,23 +20,78 @@ from mediagoblin.db.base import Base
from sqlalchemy import (
Column, Integer, SmallInteger, ForeignKey)
from sqlalchemy.orm import relationship, backref
+from mediagoblin.db.extratypes import JSONEncoded
+from mediagoblin.media_types import video
BACKREF_NAME = "video__media_data"
class VideoData(Base):
+ """
+ Attributes:
+ - media_data: 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
+ pulled from the original video.
+ This field is NOT GUARANTEED to exist!
+
+ Likely metadata extracted:
+ "videoheight", "videolength", "videowidth",
+ "audiorate", "audiolength", "audiochannels", "audiowidth",
+ "mimetype", "tags"
+
+ TODO: document the above better.
+ """
__tablename__ = "video__mediadata"
# The primary key *and* reference to the main media_entry
media_entry = Column(Integer, ForeignKey('core__media_entries.id'),
primary_key=True)
get_media_entry = relationship("MediaEntry",
- backref=backref(BACKREF_NAME, cascade="all, delete-orphan"))
+ backref=backref(BACKREF_NAME, uselist=False,
+ cascade="all, delete-orphan"))
width = Column(SmallInteger)
height = Column(SmallInteger)
+ orig_metadata = Column(JSONEncoded)
+
+ def source_type(self):
+ """
+ Construct a useful type=... that is to say, used like:
+ <video><source type="{{ entry.media_data.source_type() }}" /></video>
+
+ Try to construct it out of self.orig_metadata... if we fail we
+ just dope'ily fall back on DEFAULT_WEBM_TYPE
+ """
+ orig_metadata = self.orig_metadata or {}
+
+ if "webm_640" 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 orig_metadata['mimetype'] == 'application/ogg':
+ # stupid ambiguous .ogg extension
+ mimetype = "video/ogg"
+ else:
+ mimetype = orig_metadata['mimetype']
+
+ video_codec = orig_metadata["tags"]["video-codec"].lower()
+ audio_codec = orig_metadata["tags"]["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
+ if video_codec == "vp8 video":
+ video_codec = "vp8"
+
+ return '%s; codecs="%s, %s"' % (
+ mimetype, video_codec, audio_codec)
+ else:
+ return video.MEDIA_MANAGER["default_webm_type"]
+
DATA_MODEL = VideoData
MODELS = [VideoData]
diff --git a/mediagoblin/media_types/video/processing.py b/mediagoblin/media_types/video/processing.py
index 68d14148..ff2c94a0 100644
--- a/mediagoblin/media_types/video/processing.py
+++ b/mediagoblin/media_types/video/processing.py
@@ -16,14 +16,15 @@
from tempfile import NamedTemporaryFile
import logging
+import datetime
from mediagoblin import mg_globals as mgg
-from mediagoblin.decorators import get_workbench
from mediagoblin.processing import \
create_pub_filepath, FilenameBuilder, BaseProcessingFail, ProgressCallback
from mediagoblin.tools.translate import lazy_pass_to_ugettext as _
from . import transcoders
+from .util import skip_transcode
_log = logging.getLogger(__name__)
_log.setLevel(logging.DEBUG)
@@ -52,8 +53,8 @@ def sniff_handler(media_file, **kw):
return False
-@get_workbench
-def process_video(entry, workbench=None):
+
+def process_video(proc_state):
"""
Process a video entry, transcode the queued media files (originals) and
create a thumbnail for the entry.
@@ -61,12 +62,12 @@ def process_video(entry, workbench=None):
A Workbench() represents a local tempory dir. It is automatically
cleaned up when this function exits.
"""
+ entry = proc_state.entry
+ workbench = proc_state.workbench
video_config = mgg.global_config['media_type:mediagoblin.media_types.video']
queued_filepath = entry.queued_media_file
- queued_filename = workbench.localized_file(
- mgg.queue_store, queued_filepath,
- 'source')
+ queued_filename = proc_state.get_queued_filename()
name_builder = FilenameBuilder(queued_filename)
medium_filepath = create_pub_filepath(
@@ -80,24 +81,53 @@ def process_video(entry, workbench=None):
with tmp_dst:
# Transcode queued file to a VP8/vorbis file that fits in a 640x640 square
progress_callback = ProgressCallback(entry)
- transcoder = transcoders.VideoTranscoder()
- transcoder.transcode(queued_filename, tmp_dst.name,
- vp8_quality=video_config['vp8_quality'],
- vp8_threads=video_config['vp8_threads'],
- vorbis_quality=video_config['vorbis_quality'],
- progress_callback=progress_callback)
- # Push transcoded video to public storage
- _log.debug('Saving medium...')
- mgg.public_store.copy_local_to_storage(tmp_dst.name, medium_filepath)
- _log.debug('Saved medium')
+ dimensions = (
+ mgg.global_config['media:medium']['max_width'],
+ mgg.global_config['media:medium']['max_height'])
+
+ # Extract metadata and keep a record of it
+ metadata = transcoders.VideoTranscoder().discover(queued_filename)
+ store_metadata(entry, metadata)
+
+ # Figure out whether or not we need to transcode this video or
+ # if we can skip it
+ if skip_transcode(metadata):
+ _log.debug('Skipping transcoding')
+
+ dst_dimensions = metadata['videowidth'], metadata['videoheight']
+
+ # Push original file to public storage
+ _log.debug('Saving original...')
+ proc_state.copy_original(queued_filepath[-1])
+
+ did_transcode = False
+ else:
+ transcoder = transcoders.VideoTranscoder()
+
+ transcoder.transcode(queued_filename, tmp_dst.name,
+ vp8_quality=video_config['vp8_quality'],
+ vp8_threads=video_config['vp8_threads'],
+ vorbis_quality=video_config['vorbis_quality'],
+ progress_callback=progress_callback,
+ dimensions=dimensions)
+
+ dst_dimensions = transcoder.dst_data.videowidth,\
+ transcoder.dst_data.videoheight
- entry.media_files['webm_640'] = medium_filepath
+ # Push transcoded video to public storage
+ _log.debug('Saving medium...')
+ mgg.public_store.copy_local_to_storage(tmp_dst.name, medium_filepath)
+ _log.debug('Saved medium')
- # Save the width and height of the transcoded video
- entry.media_data_init(
- width=transcoder.dst_data.videowidth,
- height=transcoder.dst_data.videoheight)
+ entry.media_files['webm_640'] = medium_filepath
+
+ did_transcode = True
+
+ # Save the width and height of the transcoded video
+ entry.media_data_init(
+ width=dst_dimensions[0],
+ height=dst_dimensions[1])
# Temporary file for the video thumbnail (cleaned up with workbench)
tmp_thumb = NamedTemporaryFile(dir=workbench.dir, suffix='.jpg', delete=False)
@@ -109,22 +139,74 @@ def process_video(entry, workbench=None):
tmp_thumb.name,
180)
- # Push the thumbnail to public storage
- _log.debug('Saving thumbnail...')
- mgg.public_store.copy_local_to_storage(tmp_thumb.name, thumbnail_filepath)
- entry.media_files['thumb'] = thumbnail_filepath
+ # Push the thumbnail to public storage
+ _log.debug('Saving thumbnail...')
+ mgg.public_store.copy_local_to_storage(tmp_thumb.name, thumbnail_filepath)
+ entry.media_files['thumb'] = thumbnail_filepath
- if video_config['keep_original']:
+ # save the original... but only if we did a transcoding
+ # (if we skipped transcoding and just kept the original anyway as the main
+ # media, then why would we save the original twice?)
+ if video_config['keep_original'] and did_transcode:
# Push original file to public storage
_log.debug('Saving original...')
- original_filepath = create_pub_filepath(entry, queued_filepath[-1])
- mgg.public_store.copy_local_to_storage(queued_filename, original_filepath)
- entry.media_files['original'] = original_filepath
-
- # Remove queued media file from storage and database.
- # queued_filepath is in the task_id directory which should
- # be removed too, but fail if the directory is not empty to be on
- # the super-safe side.
- mgg.queue_store.delete_file(queued_filepath) # rm file
- mgg.queue_store.delete_dir(queued_filepath[:-1]) # rm dir
- entry.queued_media_file = []
+ proc_state.copy_original(queued_filepath[-1])
+
+ # Remove queued media file from storage and database
+ proc_state.delete_queue_file()
+
+
+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()
+
+ metadata['tags'] = tags
+
+ # Only save this field if there's something to save
+ if len(stored_metadata):
+ media_entry.media_data_init(
+ orig_metadata=stored_metadata)
diff --git a/mediagoblin/media_types/video/transcoders.py b/mediagoblin/media_types/video/transcoders.py
index 152de288..58b2c0d4 100644
--- a/mediagoblin/media_types/video/transcoders.py
+++ b/mediagoblin/media_types/video/transcoders.py
@@ -53,283 +53,6 @@ def pixbuf_to_pilbuf(buf):
return data
-class VideoThumbnailer:
- # Declaration of thumbnailer states
- STATE_NULL = 0
- STATE_HALTING = 1
- STATE_PROCESSING = 2
-
- # The current thumbnailer state
-
- def __init__(self, source_path, dest_path):
- '''
- Set up playbin pipeline in order to get video properties.
-
- Initializes and runs the gobject.MainLoop()
-
- Abstract
- - Set up a playbin with a fake audio sink and video sink. Load the video
- into the playbin
- - Initialize
- '''
- # This will contain the thumbnailing pipeline
- self.state = self.STATE_NULL
- self.thumbnail_pipeline = None
- self.buffer_probes = {}
- self.errors = []
-
- self.source_path = source_path
- self.dest_path = dest_path
-
- self.loop = gobject.MainLoop()
-
- # Set up the playbin. It will be used to discover certain
- # properties of the input file
- self.playbin = gst.element_factory_make('playbin')
-
- self.videosink = gst.element_factory_make('fakesink', 'videosink')
- self.playbin.set_property('video-sink', self.videosink)
-
- self.audiosink = gst.element_factory_make('fakesink', 'audiosink')
- self.playbin.set_property('audio-sink', self.audiosink)
-
- self.bus = self.playbin.get_bus()
- self.bus.add_signal_watch()
- self.watch_id = self.bus.connect('message', self._on_bus_message)
-
- self.playbin.set_property('uri', 'file:{0}'.format(
- urllib.pathname2url(self.source_path)))
-
- self.playbin.set_state(gst.STATE_PAUSED)
-
- self.run()
-
- def run(self):
- self.loop.run()
-
- def _on_bus_message(self, bus, message):
- _log.debug(' thumbnail playbin: {0}'.format(message))
-
- if message.type == gst.MESSAGE_ERROR:
- _log.error('thumbnail playbin: {0}'.format(message))
- gobject.idle_add(self._on_bus_error)
-
- elif message.type == gst.MESSAGE_STATE_CHANGED:
- # The pipeline state has changed
- # Parse state changing data
- _prev, state, _pending = message.parse_state_changed()
-
- _log.debug('State changed: {0}'.format(state))
-
- if state == gst.STATE_PAUSED:
- if message.src == self.playbin:
- gobject.idle_add(self._on_bus_paused)
-
- def _on_bus_paused(self):
- '''
- Set up thumbnailing pipeline
- '''
- current_video = self.playbin.get_property('current-video')
-
- if current_video == 0:
- _log.debug('Found current video from playbin')
- else:
- _log.error('Could not get any current video from playbin!')
-
- self.duration = self._get_duration(self.playbin)
- _log.info('Video length: {0}'.format(self.duration / gst.SECOND))
-
- _log.info('Setting up thumbnailing pipeline')
- self.thumbnail_pipeline = gst.parse_launch(
- 'filesrc location="{0}" ! decodebin ! '
- 'ffmpegcolorspace ! videoscale ! '
- 'video/x-raw-rgb,depth=24,bpp=24,pixel-aspect-ratio=1/1,width=180 ! '
- 'fakesink signal-handoffs=True'.format(self.source_path))
-
- self.thumbnail_bus = self.thumbnail_pipeline.get_bus()
- self.thumbnail_bus.add_signal_watch()
- self.thumbnail_watch_id = self.thumbnail_bus.connect(
- 'message', self._on_thumbnail_bus_message)
-
- self.thumbnail_pipeline.set_state(gst.STATE_PAUSED)
-
- #gobject.timeout_add(3000, self._on_timeout)
-
- return False
-
- def _on_thumbnail_bus_message(self, bus, message):
- _log.debug('thumbnail: {0}'.format(message))
-
- if message.type == gst.MESSAGE_ERROR:
- _log.error(message)
- gobject.idle_add(self._on_bus_error)
-
- if message.type == gst.MESSAGE_STATE_CHANGED:
- _log.debug('State changed')
- _prev, state, _pending = message.parse_state_changed()
-
- if (state == gst.STATE_PAUSED and
- not self.state == self.STATE_PROCESSING and
- message.src == self.thumbnail_pipeline):
- _log.info('Pipeline paused, processing')
- self.state = self.STATE_PROCESSING
-
- for sink in self.thumbnail_pipeline.sinks():
- name = sink.get_name()
- factoryname = sink.get_factory().get_name()
-
- if factoryname == 'fakesink':
- sinkpad = sink.get_pad('sink')
-
- self.buffer_probes[name] = sinkpad.add_buffer_probe(
- self.buffer_probe_handler, name)
-
- _log.info('Added buffer probe')
-
- break
-
- # Apply the wadsworth constant, fallback to 1 second
- # TODO: Will break if video is shorter than 1 sec
- seek_amount = max(self.duration / 100 * 30, 1 * gst.SECOND)
-
- _log.debug('seek amount: {0}'.format(seek_amount))
-
- 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:
- self.errors.append('COULD_NOT_SEEK')
- _log.error('Couldn\'t seek! result: {0}'.format(
- seek_result))
- _log.info(message)
- self.shutdown()
- else:
- _log.debug('Seek successful')
- self.thumbnail_pipeline.set_state(gst.STATE_PAUSED)
- else:
- _log.debug('Won\'t seek: \t{0}\n\t{1}'.format(
- self.state,
- message.src))
-
- def buffer_probe_handler_real(self, pad, buff, name):
- '''
- Capture buffers as gdk_pixbufs when told to.
- '''
- _log.info('Capturing frame')
- try:
- caps = buff.caps
- if caps is None:
- _log.error('No caps passed to buffer probe handler!')
- self.shutdown()
- return False
-
- _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 thumbnail')
-
- self.shutdown()
-
- except gst.QueryError as e:
- _log.error('QueryError: {0}'.format(e))
-
- return False
-
- def buffer_probe_handler(self, pad, buff, name):
- '''
- Proxy function for buffer_probe_handler_real
- '''
- _log.debug('Attaching real buffer handler to gobject idle event')
- gobject.idle_add(
- lambda: self.buffer_probe_handler_real(pad, buff, name))
-
- return True
-
- def _get_duration(self, pipeline, retries=0):
- '''
- Get the duration of a pipeline.
-
- Retries 5 times.
- '''
- if retries == 5:
- return 0
-
- try:
- return pipeline.query_duration(gst.FORMAT_TIME)[0]
- except gst.QueryError:
- return self._get_duration(pipeline, retries + 1)
-
- def _on_timeout(self):
- _log.error('Timeout in thumbnailer!')
- self.shutdown()
-
- def _on_bus_error(self, *args):
- _log.error('AHAHAHA! Error! args: {0}'.format(args))
-
- def shutdown(self):
- '''
- Tell gobject to call __halt when the mainloop is idle.
- '''
- _log.info('Shutting down')
- self.__halt()
-
- def __halt(self):
- '''
- Halt all pipelines and shut down the main loop
- '''
- _log.info('Halting...')
- self.state = self.STATE_HALTING
-
- self.__disconnect()
-
- gobject.idle_add(self.__halt_final)
-
- def __disconnect(self):
- _log.debug('Disconnecting...')
- if not self.playbin is None:
- self.playbin.set_state(gst.STATE_NULL)
- for sink in self.playbin.sinks():
- name = sink.get_name()
- factoryname = sink.get_factory().get_name()
-
- _log.debug('Disconnecting {0}'.format(name))
-
- if factoryname == "fakesink":
- pad = sink.get_pad("sink")
- pad.remove_buffer_probe(self.buffer_probes[name])
- del self.buffer_probes[name]
-
- self.playbin = None
-
- if self.bus is not None:
- self.bus.disconnect(self.watch_id)
- self.bus = None
-
- def __halt_final(self):
- _log.info('Done')
- if self.errors:
- _log.error(','.join(self.errors))
-
- self.loop.quit()
-
-
class VideoThumbnailerMarkII(object):
'''
Creates a thumbnail from a video file. Rewrite of VideoThumbnailer.
@@ -398,8 +121,8 @@ class VideoThumbnailerMarkII(object):
self.run()
except Exception as exc:
_log.critical(
- 'Exception "{0}" caught, disconnecting and re-raising'\
- .format(exc))
+ 'Exception "{0}" caught, shutting down mainloop and re-raising'\
+ .format(exc))
self.disconnect()
raise
@@ -410,7 +133,8 @@ class VideoThumbnailerMarkII(object):
self.mainloop.run()
def on_playbin_message(self, message_bus, message):
- _log.debug('playbin message: {0}'.format(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))
@@ -433,17 +157,20 @@ pending: {2}'.format(
def on_playbin_paused(self):
if self.has_reached_playbin_pause:
- _log.warn('Has already reached logic for playbin pause. Aborting \
+ _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('thumbnail could not get any video data \
+ _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
@@ -474,11 +201,12 @@ from playbin')
return False
def on_thumbnail_message(self, message_bus, message):
- _log.debug('thumbnail message: {0}'.format(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))
- gobject.idle_add(self.on_thumbnail_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 = \
@@ -490,29 +218,10 @@ pending: {2}'.format(
cur_state,
pending_state))
- if cur_state == gst.STATE_PAUSED and\
- not self.state == self.STATE_PROCESSING_THUMBNAIL:
- self.state = self.STATE_PROCESSING_THUMBNAIL
-
+ 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.
- 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
-
seek_amount = self.position_callback(self.duration, gst)
seek_result = self.thumbnail_pipeline.seek(
@@ -525,10 +234,30 @@ pending: {2}'.format(
0)
if not seek_result:
- _log.critical('Could not seek.')
+ _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.debug('Already processing thumbnail')
+ _log.info('Already processing thumbnail')
def on_pad_buffer_probe(self, *args):
_log.debug('buffer probe handler: {0}'.format(args))
@@ -570,10 +299,37 @@ pending: {2}'.format(
return False
- def on_thumbnail_error(self):
- _log.error('Thumbnailing failed.')
+ 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
@@ -622,7 +378,7 @@ pending: {2}'.format(
return self.get_duration(pipeline, attempt + 1)
-class VideoTranscoder:
+class VideoTranscoder(object):
'''
Video transcoder
@@ -673,6 +429,7 @@ class VideoTranscoder:
self._setup()
self._run()
+ # XXX: This could be a static method.
def discover(self, src):
'''
Discover properties about a media file
@@ -793,7 +550,8 @@ class VideoTranscoder:
self.audioconvert = gst.element_factory_make('audioconvert', 'audioconvert')
self.pipeline.add(self.audioconvert)
- self.audiocapsfilter = gst.element_factory_make('capsfilter', 'audiocapsfilter')
+ self.audiocapsfilter = gst.element_factory_make('capsfilter',
+ 'audiocapsfilter')
audiocaps = ['audio/x-raw-float']
self.audiocapsfilter.set_property(
'caps',
@@ -982,6 +740,10 @@ if __name__ == '__main__':
action='store_true',
help='Dear program, please be quiet unless *error*')
+ parser.add_option('-w', '--width',
+ type=int,
+ default=180)
+
(options, args) = parser.parse_args()
if options.verbose:
@@ -1001,10 +763,11 @@ if __name__ == '__main__':
transcoder = VideoTranscoder()
if options.action == 'thumbnail':
+ args.append(options.width)
VideoThumbnailerMarkII(*args)
elif options.action == 'video':
def cb(data):
print('I\'m a callback!')
transcoder.transcode(*args, progress_callback=cb)
elif options.action == 'discover':
- print transcoder.discover(*args).__dict__
+ print transcoder.discover(*args)
diff --git a/mediagoblin/media_types/video/util.py b/mediagoblin/media_types/video/util.py
new file mode 100644
index 00000000..5765ecfb
--- /dev/null
+++ b/mediagoblin/media_types/video/util.py
@@ -0,0 +1,59 @@
+# 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 mediagoblin import mg_globals as mgg
+
+_log = logging.getLogger(__name__)
+
+
+def skip_transcode(metadata):
+ '''
+ Checks video metadata against configuration values for skip_transcode.
+
+ Returns True if the video matches the requirements in the configuration.
+ '''
+ config = mgg.global_config['media_type:mediagoblin.media_types.video']\
+ ['skip_transcode']
+
+ 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
+
+ if config['container_formats'] and metadata['tags'].get('audio-codec'):
+ if not metadata['tags']['container-format'] in config['container_formats']:
+ return False
+
+ if config['video_codecs'] and metadata['tags'].get('audio-codec'):
+ if not metadata['tags']['video-codec'] in config['video_codecs']:
+ 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['dimensions_match']:
+ if not metadata['videoheight'] <= medium_config['max_height']:
+ return False
+ if not metadata['videowidth'] <= medium_config['max_width']:
+ return False
+
+ return True
diff --git a/mediagoblin/mg_globals.py b/mediagoblin/mg_globals.py
index 8c7c64c2..e4b94bdc 100644
--- a/mediagoblin/mg_globals.py
+++ b/mediagoblin/mg_globals.py
@@ -42,8 +42,13 @@ workbench_manager = None
# A thread-local scope
thread_scope = threading.local()
-# gettext (this will be populated on demand with gettext.Translations)
-thread_scope.translations = None
+# gettext (this needs to default to English so it doesn't break
+# in case we're running a script without the app like
+# ./bin/gmg theme assetlink)
+thread_scope.translations = gettext.translation(
+ 'mediagoblin',
+ pkg_resources.resource_filename(
+ 'mediagoblin', 'i18n'), ['en'], fallback=True)
# app and global config objects
app_config = None
diff --git a/mediagoblin/plugins/api/tools.py b/mediagoblin/plugins/api/tools.py
index e5878258..92411f4b 100644
--- a/mediagoblin/plugins/api/tools.py
+++ b/mediagoblin/plugins/api/tools.py
@@ -69,7 +69,8 @@ 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'}
- (response.headers.set(key, value) for key, value in cors_headers)
+ for key, value in cors_headers.iteritems():
+ response.headers.set(key, value)
return response
diff --git a/mediagoblin/plugins/api/views.py b/mediagoblin/plugins/api/views.py
index 2055a663..fde76fe4 100644
--- a/mediagoblin/plugins/api/views.py
+++ b/mediagoblin/plugins/api/views.py
@@ -18,7 +18,6 @@ import json
import logging
from os.path import splitext
-from werkzeug.datastructures import FileStorage
from werkzeug.exceptions import BadRequest, Forbidden
from werkzeug.wrappers import Response
@@ -27,7 +26,8 @@ from mediagoblin.meddleware.csrf import csrf_exempt
from mediagoblin.media_types import sniff_media
from mediagoblin.plugins.api.tools import api_auth, get_entry_serializable, \
json_response
-from mediagoblin.submit.lib import prepare_queue_task, run_process_media
+from mediagoblin.submit.lib import check_file_field, prepare_queue_task, \
+ run_process_media
_log = logging.getLogger(__name__)
@@ -45,9 +45,7 @@ def post_entry(request):
_log.debug('Must POST against post_entry')
raise BadRequest()
- if not 'file' in request.files \
- or not isinstance(request.files['file'], FileStorage) \
- or not request.files['file'].stream:
+ if not check_file_field(request, 'file'):
_log.debug('File field not found')
raise BadRequest()
diff --git a/mediagoblin/plugins/geolocation/__init__.py b/mediagoblin/plugins/geolocation/__init__.py
new file mode 100644
index 00000000..5d14590e
--- /dev/null
+++ b/mediagoblin/plugins/geolocation/__init__.py
@@ -0,0 +1,35 @@
+# 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 import pluginapi
+import os
+
+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"})
+
+
+hooks = {
+ 'setup': setup_plugin
+ }
diff --git a/mediagoblin/templates/mediagoblin/utils/geolocation_map.html b/mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html
index b48678bb..70f837ff 100644
--- a/mediagoblin/templates/mediagoblin/utils/geolocation_map.html
+++ b/mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html
@@ -17,8 +17,7 @@
#}
{% block geolocation_map %}
- {% if app_config['geolocation_map_visible']
- and media.media_data.gps_latitude is defined
+ {% 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 %}
diff --git a/mediagoblin/tests/test_tests.py b/mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map_js_head.html
index d539f1e0..aca0f730 100644
--- a/mediagoblin/tests/test_tests.py
+++ b/mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map_js_head.html
@@ -1,3 +1,4 @@
+{#
# GNU MediaGoblin -- federated, autonomous media hosting
# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
#
@@ -13,24 +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/>.
+#}
-from mediagoblin import mg_globals
-from mediagoblin.tests.tools import get_app, fixture_add_user
-from mediagoblin.db.models import User
+<link rel="stylesheet"
+ href="{{ request.staticdirect('/extlib/leaflet/leaflet.css') }}" />
-
-def test_get_app_wipes_db():
- """
- Make sure we get a fresh database on every wipe :)
- """
- get_app(dump_old_app=True)
- assert User.query.count() == 0
-
- fixture_add_user()
- assert User.query.count() == 1
-
- get_app(dump_old_app=False)
- assert User.query.count() == 1
-
- get_app(dump_old_app=True)
- assert User.query.count() == 0
+<script type="text/javascript"
+ src="{{ request.staticdirect('/extlib/leaflet/leaflet.js') }}"></script>
+<script type="text/javascript"
+ src="{{ request.staticdirect('/js/geolocation-map.js') }}"></script>
diff --git a/mediagoblin/plugins/oauth/README.rst b/mediagoblin/plugins/oauth/README.rst
index 405a67e2..753b180f 100644
--- a/mediagoblin/plugins/oauth/README.rst
+++ b/mediagoblin/plugins/oauth/README.rst
@@ -7,6 +7,10 @@
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.
diff --git a/mediagoblin/plugins/oauth/forms.py b/mediagoblin/plugins/oauth/forms.py
index 2a956dad..d0a4e9b8 100644
--- a/mediagoblin/plugins/oauth/forms.py
+++ b/mediagoblin/plugins/oauth/forms.py
@@ -23,10 +23,9 @@ from mediagoblin.tools.translate import fake_ugettext_passthrough as _
class AuthorizationForm(wtforms.Form):
- client_id = wtforms.HiddenField(_(u'Client ID'),
- [wtforms.validators.Required()])
- next = wtforms.HiddenField(_(u'Next URL'),
- [wtforms.validators.Required()])
+ client_id = wtforms.HiddenField(u'',
+ validators=[wtforms.validators.Required()])
+ next = wtforms.HiddenField(u'', validators=[wtforms.validators.Required()])
allow = wtforms.SubmitField(_(u'Allow'))
deny = wtforms.SubmitField(_(u'Deny'))
diff --git a/mediagoblin/plugins/oauth/templates/oauth/authorize.html b/mediagoblin/plugins/oauth/templates/oauth/authorize.html
index 647fa41f..8a00c925 100644
--- a/mediagoblin/plugins/oauth/templates/oauth/authorize.html
+++ b/mediagoblin/plugins/oauth/templates/oauth/authorize.html
@@ -16,7 +16,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-#}
{% extends "mediagoblin/base.html" %}
-{% import "/mediagoblin/utils/wtforms.html" as wtforms_util %}
+{% import "mediagoblin/utils/wtforms.html" as wtforms_util %}
{% block mediagoblin_content %}
<form action="{{ request.urlgen('mediagoblin.plugins.oauth.authorize_client') }}"
diff --git a/mediagoblin/plugins/oauth/views.py b/mediagoblin/plugins/oauth/views.py
index c7b2a332..ea45c209 100644
--- a/mediagoblin/plugins/oauth/views.py
+++ b/mediagoblin/plugins/oauth/views.py
@@ -45,11 +45,11 @@ def register_client(request):
if request.method == 'POST' and form.validate():
client = OAuthClient()
- client.name = unicode(request.form['name'])
- client.description = unicode(request.form['description'])
- client.type = unicode(request.form['type'])
+ 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(request.form['redirect_uri'])
+ client.redirect_uri = unicode(form.redirect_uri.data)
client.generate_identifier()
client.generate_secret()
diff --git a/mediagoblin/plugins/piwigo/README.rst b/mediagoblin/plugins/piwigo/README.rst
new file mode 100644
index 00000000..0c71ffbc
--- /dev/null
+++ b/mediagoblin/plugins/piwigo/README.rst
@@ -0,0 +1,23 @@
+===================
+ piwigo api plugin
+===================
+
+.. danger::
+ This plugin does not work.
+ It might make your instance unstable or even insecure.
+ So do not use it, unless you want to help to develop it.
+
+.. warning::
+ You should not depend on this plugin in any way for now.
+ It might even go away without any notice.
+
+Okay, so if you still want to test this plugin,
+add the following to your mediagoblin_local.ini:
+
+.. code-block:: ini
+
+ [plugins]
+ [[mediagoblin.plugins.piwigo]]
+
+Then try to connect using some piwigo client.
+There should be some logging, that might help.
diff --git a/mediagoblin/plugins/piwigo/__init__.py b/mediagoblin/plugins/piwigo/__init__.py
new file mode 100644
index 00000000..73326e9e
--- /dev/null
+++ b/mediagoblin/plugins/piwigo/__init__.py
@@ -0,0 +1,37 @@
+# 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 logging
+
+from mediagoblin.tools import pluginapi
+
+_log = logging.getLogger(__name__)
+
+
+def setup_plugin():
+ _log.info('Setting up piwigo...')
+
+ routes = [
+ ('mediagoblin.plugins.piwigo.wsphp',
+ '/api/piwigo/ws.php',
+ 'mediagoblin.plugins.piwigo.views:ws_php'),
+ ]
+
+ pluginapi.register_routes(routes)
+
+hooks = {
+ 'setup': setup_plugin
+}
diff --git a/mediagoblin/plugins/piwigo/forms.py b/mediagoblin/plugins/piwigo/forms.py
new file mode 100644
index 00000000..5bb12e62
--- /dev/null
+++ b/mediagoblin/plugins/piwigo/forms.py
@@ -0,0 +1,28 @@
+# 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 wtforms
+
+
+class AddSimpleForm(wtforms.Form):
+ image = wtforms.FileField()
+ name = wtforms.TextField(
+ validators=[wtforms.validators.Length(min=0, max=500)])
+ comment = wtforms.TextField()
+ # tags = wtforms.FieldList(wtforms.TextField())
+ category = wtforms.IntegerField()
+ level = wtforms.IntegerField()
diff --git a/mediagoblin/plugins/piwigo/tools.py b/mediagoblin/plugins/piwigo/tools.py
new file mode 100644
index 00000000..85d77310
--- /dev/null
+++ b/mediagoblin/plugins/piwigo/tools.py
@@ -0,0 +1,107 @@
+# 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 logging
+
+import lxml.etree as ET
+from werkzeug.exceptions import MethodNotAllowed
+
+from mediagoblin.tools.response import Response
+
+
+_log = logging.getLogger(__name__)
+
+
+class PwgNamedArray(list):
+ def __init__(self, l, item_name, as_attrib=()):
+ self.item_name = item_name
+ self.as_attrib = as_attrib
+ list.__init__(self, l)
+
+ def fill_element_xml(self, el):
+ for it in self:
+ n = ET.SubElement(el, self.item_name)
+ if isinstance(it, dict):
+ _fill_element_dict(n, it, self.as_attrib)
+ else:
+ _fill_element(n, it)
+
+
+def _fill_element_dict(el, data, as_attr=()):
+ for k, v in data.iteritems():
+ if k in as_attr:
+ if not isinstance(v, basestring):
+ v = str(v)
+ el.set(k, v)
+ else:
+ n = ET.SubElement(el, k)
+ _fill_element(n, v)
+
+
+def _fill_element(el, data):
+ if isinstance(data, bool):
+ if data:
+ el.text = "1"
+ else:
+ el.text = "0"
+ elif isinstance(data, basestring):
+ el.text = data
+ elif isinstance(data, int):
+ el.text = str(data)
+ elif isinstance(data, dict):
+ _fill_element_dict(el, data)
+ elif isinstance(data, PwgNamedArray):
+ data.fill_element_xml(el)
+ else:
+ _log.warn("Can't convert to xml: %r", data)
+
+
+def response_xml(result):
+ r = ET.Element("rsp")
+ r.set("stat", "ok")
+ _fill_element(r, result)
+ return Response(ET.tostring(r, encoding="utf-8", xml_declaration=True),
+ mimetype='text/xml')
+
+
+class CmdTable(object):
+ _cmd_table = {}
+
+ def __init__(self, cmd_name, only_post=False):
+ assert not cmd_name in self._cmd_table
+ self.cmd_name = cmd_name
+ self.only_post = only_post
+
+ def __call__(self, to_be_wrapped):
+ assert not self.cmd_name in self._cmd_table
+ self._cmd_table[self.cmd_name] = (to_be_wrapped, self.only_post)
+ return to_be_wrapped
+
+ @classmethod
+ def find_func(cls, request):
+ if request.method == "GET":
+ cmd_name = request.args.get("method")
+ else:
+ cmd_name = request.form.get("method")
+ entry = cls._cmd_table.get(cmd_name)
+ if not entry:
+ return entry
+ _log.debug("Found method %s", cmd_name)
+ func, only_post = entry
+ if only_post and request.method != "POST":
+ _log.warn("Method %s only allowed for POST", cmd_name)
+ raise MethodNotAllowed()
+ return func
diff --git a/mediagoblin/plugins/piwigo/views.py b/mediagoblin/plugins/piwigo/views.py
new file mode 100644
index 00000000..3dee09cd
--- /dev/null
+++ b/mediagoblin/plugins/piwigo/views.py
@@ -0,0 +1,167 @@
+# 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 logging
+import re
+
+from werkzeug.exceptions import MethodNotAllowed, BadRequest
+from werkzeug.wrappers import BaseResponse
+
+from mediagoblin import mg_globals
+from mediagoblin.meddleware.csrf import csrf_exempt
+from mediagoblin.tools.response import render_404
+from .tools import CmdTable, PwgNamedArray, response_xml
+from .forms import AddSimpleForm
+
+
+_log = logging.getLogger(__name__)
+
+
+@CmdTable("pwg.session.login", True)
+def pwg_login(request):
+ username = request.form.get("username")
+ password = request.form.get("password")
+ _log.info("Login for %r/%r...", username, password)
+ return True
+
+
+@CmdTable("pwg.session.logout")
+def pwg_logout(request):
+ _log.info("Logout")
+ return True
+
+
+@CmdTable("pwg.getVersion")
+def pwg_getversion(request):
+ return "2.5.0 (MediaGoblin)"
+
+
+@CmdTable("pwg.session.getStatus")
+def pwg_session_getStatus(request):
+ return {'username': "fake_user"}
+
+
+@CmdTable("pwg.categories.getList")
+def pwg_categories_getList(request):
+ catlist = ({'id': -29711,
+ 'uppercats': "-29711",
+ 'name': "All my images"},)
+ return {
+ 'categories': PwgNamedArray(
+ catlist,
+ 'category',
+ (
+ 'id',
+ 'url',
+ 'nb_images',
+ 'total_nb_images',
+ 'nb_categories',
+ 'date_last',
+ 'max_date_last',
+ )
+ )
+ }
+
+
+@CmdTable("pwg.images.exist")
+def pwg_images_exist(request):
+ return {}
+
+
+@CmdTable("pwg.images.addSimple", True)
+def pwg_images_addSimple(request):
+ form = AddSimpleForm(request.form)
+ if not form.validate():
+ _log.error("addSimple: form failed")
+ raise BadRequest()
+ dump = []
+ for f in form:
+ dump.append("%s=%r" % (f.name, f.data))
+ _log.info("addimple: %r %s %r", request.form, " ".join(dump), request.files)
+
+ return {'image_id': 123456, 'url': ''}
+
+
+md5sum_matcher = re.compile(r"^[0-9a-fA-F]{32}$")
+
+def fetch_md5(request, parm_name, optional_parm=False):
+ val = request.form.get(parm_name)
+ if (val is None) and (not optional_parm):
+ _log.error("Parameter %s missing", parm_name)
+ raise BadRequest("Parameter %s missing" % parm_name)
+ if not md5sum_matcher.match(val):
+ _log.error("Parameter %s=%r has no valid md5 value", parm_name, val)
+ raise BadRequest("Parameter %s is not md5" % parm_name)
+ return val
+
+
+@CmdTable("pwg.images.addChunk", True)
+def pwg_images_addChunk(request):
+ o_sum = fetch_md5(request, 'original_sum')
+ typ = request.form.get('type')
+ pos = request.form.get('position')
+ data = request.form.get('data')
+
+ # Validate params:
+ pos = int(pos)
+ if not typ in ("file", "thumb"):
+ _log.error("type %r not allowed for now", typ)
+ return False
+
+ _log.info("addChunk for %r, type %r, position %d, len: %d",
+ o_sum, typ, pos, len(data))
+ if typ == "thumb":
+ _log.info("addChunk: Ignoring thumb, because we create our own")
+ return True
+
+ return True
+
+
+def possibly_add_cookie(request, response):
+ # TODO: We should only add a *real* cookie, if
+ # authenticated. And if there is no cookie already.
+ if True:
+ response.set_cookie(
+ 'pwg_id',
+ "some_fake_for_now",
+ path=request.environ['SCRIPT_NAME'],
+ domain=mg_globals.app_config.get('csrf_cookie_domain'),
+ secure=(request.scheme.lower() == 'https'),
+ httponly=True)
+
+
+@csrf_exempt
+def ws_php(request):
+ if request.method not in ("GET", "POST"):
+ _log.error("Method %r not supported", request.method)
+ raise MethodNotAllowed()
+
+ func = CmdTable.find_func(request)
+ if not func:
+ _log.warn("wsphp: Unhandled %s %r %r", request.method,
+ request.args, request.form)
+ return render_404(request)
+
+ result = func(request)
+
+ if isinstance(result, BaseResponse):
+ return result
+
+ response = response_xml(result)
+
+ possibly_add_cookie(request, response)
+
+ return response
diff --git a/mediagoblin/plugins/raven/README.rst b/mediagoblin/plugins/raven/README.rst
new file mode 100644
index 00000000..4006060d
--- /dev/null
+++ b/mediagoblin/plugins/raven/README.rst
@@ -0,0 +1,17 @@
+==============
+ raven plugin
+==============
+
+.. _raven-setup:
+
+Warning: this plugin is somewhat experimental.
+
+Set up the raven plugin
+=======================
+
+1. Add the following to your MediaGoblin .ini file in the ``[plugins]`` section::
+
+ [[mediagoblin.plugins.raven]]
+ sentry_dsn = <YOUR SENTRY DSN>
+ # Logging is very high-volume, set to 0 if you want to turn off logging
+ setup_logging = 1
diff --git a/mediagoblin/plugins/raven/__init__.py b/mediagoblin/plugins/raven/__init__.py
new file mode 100644
index 00000000..8cfaed0a
--- /dev/null
+++ b/mediagoblin/plugins/raven/__init__.py
@@ -0,0 +1,92 @@
+# 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
+
+_log = logging.getLogger(__name__)
+
+
+def get_client():
+ from raven import Client
+ config = pluginapi.get_config('mediagoblin.plugins.raven')
+
+ sentry_dsn = config.get('sentry_dsn')
+
+ client = None
+
+ if sentry_dsn:
+ _log.info('Setting up raven from plugin config: {0}'.format(
+ sentry_dsn))
+ client = Client(sentry_dsn)
+ elif os.environ.get('SENTRY_DSN'):
+ _log.info('Setting up raven from SENTRY_DSN environment variable: {0}'\
+ .format(os.environ.get('SENTRY_DSN')))
+ client = Client() # Implicitly looks for SENTRY_DSN
+
+ if not client:
+ _log.error('Could not set up client, missing sentry DSN')
+ return None
+
+ return client
+
+
+def setup_celery():
+ from raven.contrib.celery import register_signal
+
+ client = get_client()
+
+ register_signal(client)
+
+
+def setup_logging():
+ config = pluginapi.get_config('mediagoblin.plugins.raven')
+
+ conf_setup_logging = False
+ if config.get('setup_logging'):
+ conf_setup_logging = bool(int(config.get('setup_logging')))
+
+ if not conf_setup_logging:
+ return
+
+ from raven.handlers.logging import SentryHandler
+ from raven.conf import setup_logging
+
+ client = get_client()
+
+ _log.info('Setting up raven logging handler')
+
+ setup_logging(SentryHandler(client))
+
+
+def wrap_wsgi(app):
+ from raven.middleware import Sentry
+
+ client = get_client()
+
+ _log.info('Attaching raven middleware...')
+
+ return Sentry(app, client)
+
+
+hooks = {
+ 'setup': setup_logging,
+ 'wrap_wsgi': wrap_wsgi,
+ 'celery_logging_setup': setup_logging,
+ 'celery_setup': setup_celery,
+ }
diff --git a/mediagoblin/processing/__init__.py b/mediagoblin/processing/__init__.py
index e2bc1a13..02462567 100644
--- a/mediagoblin/processing/__init__.py
+++ b/mediagoblin/processing/__init__.py
@@ -74,6 +74,48 @@ class FilenameBuilder(object):
ext=self.ext)
+class ProcessingState(object):
+ def __init__(self, entry):
+ self.entry = entry
+ self.workbench = None
+ self.queued_filename = None
+
+ def set_workbench(self, wb):
+ self.workbench = wb
+
+ def get_queued_filename(self):
+ """
+ Get the a filename for the original, on local storage
+ """
+ if self.queued_filename is not None:
+ return self.queued_filename
+ queued_filepath = self.entry.queued_media_file
+ queued_filename = self.workbench.localized_file(
+ mgg.queue_store, queued_filepath,
+ 'source')
+ self.queued_filename = queued_filename
+ return queued_filename
+
+ def copy_original(self, target_name, keyname=u"original"):
+ self.store_public(keyname, self.get_queued_filename(), target_name)
+
+ def store_public(self, keyname, local_file, target_name=None):
+ if target_name is None:
+ target_name = os.path.basename(local_file)
+ target_filepath = create_pub_filepath(self.entry, target_name)
+ if keyname in self.entry.media_files:
+ _log.warn("store_public: keyname %r already used for file %r, "
+ "replacing with %r", keyname,
+ self.entry.media_files[keyname], target_filepath)
+ mgg.public_store.copy_local_to_storage(local_file, target_filepath)
+ self.entry.media_files[keyname] = target_filepath
+
+ def delete_queue_file(self):
+ queued_filepath = self.entry.queued_media_file
+ mgg.queue_store.delete_file(queued_filepath)
+ self.entry.queued_media_file = []
+
+
def mark_entry_failed(entry_id, exc):
"""
Mark a media entry as having failed in its conversion.
diff --git a/mediagoblin/processing/task.py b/mediagoblin/processing/task.py
index e9bbe084..aec50aab 100644
--- a/mediagoblin/processing/task.py
+++ b/mediagoblin/processing/task.py
@@ -22,7 +22,7 @@ from celery import registry, task
from mediagoblin import mg_globals as mgg
from mediagoblin.db.models import MediaEntry
-from mediagoblin.processing import mark_entry_failed, BaseProcessingFail
+from . import mark_entry_failed, BaseProcessingFail, ProcessingState
from mediagoblin.tools.processing import json_processing_callback
_log = logging.getLogger(__name__)
@@ -85,8 +85,11 @@ class ProcessMedia(task.Task):
_log.debug('Processing {0}'.format(entry))
- # run the processing code
- entry.media_manager['processor'](entry)
+ proc_state = ProcessingState(entry)
+ with mgg.workbench_manager.create() as workbench:
+ proc_state.set_workbench(workbench)
+ # run the processing code
+ entry.media_manager['processor'](proc_state)
# We set the state to processed and save the entry here so there's
# no need to save at the end of the processing stage, probably ;)
diff --git a/mediagoblin/static/css/base.css b/mediagoblin/static/css/base.css
index 04b4ee28..8df9f2e1 100644
--- a/mediagoblin/static/css/base.css
+++ b/mediagoblin/static/css/base.css
@@ -132,9 +132,15 @@ header {
}
.header_dropdown li {
+ margin: 4px 0;
list-style: none;
}
+.header_dropdown p {
+ margin-top: 12px;
+ margin-bottom: 10px;
+}
+
.dropdown_title {
font-size: 20px;
}
diff --git a/mediagoblin/static/images/icon_collect.png b/mediagoblin/static/images/icon_collect.png
deleted file mode 100644
index 2911af24..00000000
--- a/mediagoblin/static/images/icon_collect.png
+++ /dev/null
Binary files differ
diff --git a/mediagoblin/static/js/extlib/html5shiv.js b/mediagoblin/static/js/extlib/html5shiv.js
deleted file mode 120000
index ca7358c7..00000000
--- a/mediagoblin/static/js/extlib/html5shiv.js
+++ /dev/null
@@ -1 +0,0 @@
-../../../../extlib/html5shiv/html5shiv.js \ No newline at end of file
diff --git a/mediagoblin/static/js/extlib/thingiview.js b/mediagoblin/static/js/extlib/thingiview.js
new file mode 120000
index 00000000..b7c842ba
--- /dev/null
+++ b/mediagoblin/static/js/extlib/thingiview.js
@@ -0,0 +1 @@
+../../../../extlib/thingiview.js/ \ No newline at end of file
diff --git a/mediagoblin/storage/__init__.py b/mediagoblin/storage/__init__.py
index 57218eb5..bbe134a7 100644
--- a/mediagoblin/storage/__init__.py
+++ b/mediagoblin/storage/__init__.py
@@ -170,12 +170,13 @@ class StorageInterface(object):
appropriate.
"""
if self.local_storage:
- shutil.copy(
- self.get_local_path(filepath), dest_path)
+ # Note: this will copy in small chunks
+ 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:
- dest_file.write(source_file.read())
+ # Copy from remote storage in 4M chunks
+ shutil.copyfileobj(source_file, dest_file, length=4*1048576)
def copy_local_to_storage(self, filename, filepath):
"""
@@ -187,7 +188,8 @@ class StorageInterface(object):
"""
with self.get_file(filepath, 'wb') as dest_file:
with file(filename, 'rb') as source_file:
- dest_file.write(source_file.read())
+ # Copy to storage system in 4M chunks
+ shutil.copyfileobj(source_file, dest_file, length=4*1048576)
###########
diff --git a/mediagoblin/storage/cloudfiles.py b/mediagoblin/storage/cloudfiles.py
index 1b5a6363..b6e57c91 100644
--- a/mediagoblin/storage/cloudfiles.py
+++ b/mediagoblin/storage/cloudfiles.py
@@ -131,6 +131,43 @@ class CloudFilesStorage(StorageInterface):
self._resolve_filepath(filepath)])
+ def copy_locally(self, filepath, dest_path):
+ """
+ Copy this file locally.
+
+ A basic working method for this is provided that should
+ function both for local_storage systems and remote storge
+ systems, but if more efficient systems for copying locally
+ apply to your system, override this method with something more
+ appropriate.
+ """
+ # 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:
+ for data in source_file:
+ dest_file.write(data)
+
+ def copy_local_to_storage(self, filename, filepath):
+ """
+ Copy this file from locally to the storage system.
+
+ This is kind of the opposite of copy_locally. It's likely you
+ could override this method with something more appropriate to
+ your storage system.
+ """
+ # It seems that (our implementation of) cloudfiles.write() takes
+ # all existing data and appends write(data) to it, sending the
+ # full monty over the wire everytime. This would of course
+ # absolutely kill chunked writes with some O(1^n) performance
+ # and bandwidth usage. So, override this method and use the
+ # Cloudfile's "send" interface instead.
+ # 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:
+ # Copy to storage system in 4096 byte chunks
+ dest_file.send(source_file)
+
class CloudFilesStorageObjectWrapper():
"""
Wrapper for python-cloudfiles's cloudfiles.storage_object.Object
@@ -160,6 +197,10 @@ class CloudFilesStorageObjectWrapper():
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))
@@ -169,9 +210,12 @@ class CloudFilesStorageObjectWrapper():
self.storage_object.name))
self.storage_object.write(data, *args, **kwargs)
+ def send(self, *args, **kw):
+ self.storage_object.send(*args, **kw)
+
def close(self):
"""
- Not implemented.
+ Not sure we need anything here.
"""
pass
@@ -188,3 +232,15 @@ class CloudFilesStorageObjectWrapper():
see self.__enter__()
"""
self.close()
+
+
+ def __iter__(self, **kwargs):
+ """Make CloudFile an iterator, yielding 8192 bytes by default
+
+ This returns a generator object that can be used to getting the
+ object's content in a memory efficient way.
+
+ Warning: The HTTP response is only complete after this generator
+ has raised a StopIteration. No other methods can be called until
+ this has occurred."""
+ return self.storage_object.stream(**kwargs)
diff --git a/mediagoblin/storage/filestorage.py b/mediagoblin/storage/filestorage.py
index c86315f1..3d6e0753 100644
--- a/mediagoblin/storage/filestorage.py
+++ b/mediagoblin/storage/filestorage.py
@@ -109,6 +109,5 @@ class BasicFileStorage(StorageInterface):
directory = self._resolve_filepath(filepath[:-1])
if not os.path.exists(directory):
os.makedirs(directory)
-
- shutil.copy(
- filename, self.get_local_path(filepath))
+ # This uses chunked copying of 16kb buffers (Py2.7):
+ shutil.copy(filename, self.get_local_path(filepath))
diff --git a/mediagoblin/submit/lib.py b/mediagoblin/submit/lib.py
index 679fc543..a5483471 100644
--- a/mediagoblin/submit/lib.py
+++ b/mediagoblin/submit/lib.py
@@ -17,6 +17,7 @@
import logging
import uuid
from werkzeug.utils import secure_filename
+from werkzeug.datastructures import FileStorage
from mediagoblin.processing import mark_entry_failed
from mediagoblin.processing.task import process_media
@@ -25,6 +26,16 @@ from mediagoblin.processing.task import process_media
_log = logging.getLogger(__name__)
+def check_file_field(request, field_name):
+ """Check if a file field meets minimal criteria"""
+ retval = (field_name in request.files
+ and isinstance(request.files[field_name], FileStorage)
+ and request.files[field_name].stream)
+ if not retval:
+ _log.debug("Form did not contain proper file field %s", field_name)
+ return retval
+
+
def prepare_queue_task(app, entry, filename):
"""
Prepare a MediaEntry for the processing queue and get a queue file
diff --git a/mediagoblin/submit/views.py b/mediagoblin/submit/views.py
index 4055d394..9d31c844 100644
--- a/mediagoblin/submit/views.py
+++ b/mediagoblin/submit/views.py
@@ -22,7 +22,6 @@ import logging
_log = logging.getLogger(__name__)
-from werkzeug.datastructures import FileStorage
from mediagoblin.tools.text import convert_to_tag_list_of_dicts
from mediagoblin.tools.translate import pass_to_ugettext as _
@@ -32,7 +31,8 @@ from mediagoblin.submit import forms as submit_forms
from mediagoblin.messages import add_message, SUCCESS
from mediagoblin.media_types import sniff_media, \
InvalidFileType, FileTypeNotSupported
-from mediagoblin.submit.lib import run_process_media, prepare_queue_task
+from mediagoblin.submit.lib import check_file_field, prepare_queue_task, \
+ run_process_media
@require_active_login
@@ -41,12 +41,10 @@ def submit_start(request):
First view for submitting a file.
"""
submit_form = submit_forms.SubmitStartForm(request.form,
- license=request.user.get('license_preference'))
+ license=request.user.license_preference)
if request.method == 'POST' and submit_form.validate():
- if not ('file' in request.files
- and isinstance(request.files['file'], FileStorage)
- and request.files['file'].stream):
+ if not check_file_field(request, 'file'):
submit_form.file.errors.append(
_(u'You must provide a file.'))
else:
@@ -62,18 +60,18 @@ def submit_start(request):
entry = request.db.MediaEntry()
entry.media_type = unicode(media_type)
entry.title = (
- unicode(request.form['title'])
+ unicode(submit_form.title.data)
or unicode(splitext(filename)[0]))
- entry.description = unicode(request.form.get('description'))
+ entry.description = unicode(submit_form.description.data)
- entry.license = unicode(request.form.get('license', "")) or None
+ entry.license = unicode(submit_form.license.data) or None
entry.uploader = request.user.id
# Process the user's folksonomy "tags"
entry.tags = convert_to_tag_list_of_dicts(
- request.form.get('tags'))
+ submit_form.tags.data)
# Generate a slug from the title
entry.generate_slug()
@@ -127,8 +125,8 @@ def add_collection(request, media=None):
try:
collection = request.db.Collection()
- collection.title = unicode(request.form['title'])
- collection.description = unicode(request.form.get('description'))
+ collection.title = unicode(submit_form.title.data)
+ collection.description = unicode(submit_form.description.data)
collection.creator = request.user.id
collection.generate_slug()
diff --git a/mediagoblin/templates/mediagoblin/base.html b/mediagoblin/templates/mediagoblin/base.html
index 98b32f4a..66b95661 100644
--- a/mediagoblin/templates/mediagoblin/base.html
+++ b/mediagoblin/templates/mediagoblin/base.html
@@ -27,27 +27,32 @@
href="{{ request.staticdirect('/css/base.css') }}"/>
<link rel="shortcut icon"
href="{{ request.staticdirect('/images/goblin.ico') }}" />
- <script src="{{ request.staticdirect('/js/extlib/jquery.js') }}"></script>
+ <script type="text/javascript"
+ src="{{ request.staticdirect('/js/extlib/jquery.js') }}"></script>
<script type="text/javascript"
src="{{ request.staticdirect('/js/header_dropdown.js') }}"></script>
- <!--[if lt IE 9]>
- <script src="{{ request.staticdirect('/js/extlib/html5shiv.js') }}"></script>
- <![endif]-->
-
+ {# For clarification, the difference between the extra_head.html template
+ # and the head template hook is that the former should be used by
+ # themes and the latter should be used by plugins.
+ # The reason is that only one thing can override extra_head.html...
+ # but multiple plugins can hook into the template hook.
+ #}
{% include "mediagoblin/extra_head.html" %}
+ {% template_hook("head") %}
{% block mediagoblin_head %}
{% endblock mediagoblin_head %}
</head>
<body>
+ {% include 'mediagoblin/bits/body-start.html' %}
{% block mediagoblin_body %}
{% block mediagoblin_header %}
<header>
{%- include "mediagoblin/bits/logo.html" -%}
{% block mediagoblin_header_title %}{% endblock %}
<div class="header_right">
- {% if request.user %}
+ {%- if request.user %}
{% if request.user and request.user.status == 'active' %}
<div class="button_action header_dropdown_down">&#9660;</div>
<div class="button_action header_dropdown_up">&#9650;</div>
@@ -59,11 +64,12 @@
{% trans %}Verify your email!{% endtrans %}</a>
or <a href="{{ request.urlgen('mediagoblin.auth.logout') }}">{% trans %}log out{% endtrans %}</a>
{% endif %}
- {% else %}
+ {%- else %}
<a href="{{ request.urlgen('mediagoblin.auth.login') }}?next={{
request.base_url|urlencode }}">
- {% trans %}Log in{% endtrans %}</a>
- {% endif %}
+ {%- trans %}Log in{% endtrans -%}
+ </a>
+ {%- endif %}
</div>
<div class="clear"></div>
{% if request.user and request.user.status == 'active' %}
@@ -76,53 +82,53 @@
<a href="{{ user_url }}">{{ user_name }}</a>'s account
{%- endtrans %}
</span>
- (<a href="{{ request.urlgen('mediagoblin.auth.logout') }}">{% trans %}log out{% endtrans %}</a>)
+ &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 -%}
+ </a>
+ &middot;
+ <a href="{{ request.urlgen('mediagoblin.auth.logout') }}">{% trans %}Log out{% endtrans %}</a>
</p>
- <ul>
- <li><a class="button_action" href="{{ request.urlgen('mediagoblin.submit.start') }}">
+ <a class="button_action" href="{{ request.urlgen('mediagoblin.submit.start') }}">
{%- trans %}Add media{% endtrans -%}
- </a></li>
- <li><a class="button_action" href="{{ request.urlgen('mediagoblin.submit.collection') }}">
+ </a>
+ <a class="button_action" href="{{ request.urlgen('mediagoblin.submit.collection') }}">
{%- trans %}Create new collection{% endtrans -%}
- </a></li>
- <li><a href="{{ request.urlgen('mediagoblin.edit.account') }}">
- {%- trans %}Change account settings{% endtrans -%}
- </a></li>
- <li><a href="{{ request.urlgen('mediagoblin.user_pages.processing_panel',
- user=request.user.username) }}">
- {%- trans %}Media processing panel{% endtrans -%}
- </a></li>
+ </a>
{% if request.user.is_admin %}
- <li>Admin:
- <ul>
- <li><a href="{{ request.urlgen('mediagoblin.admin.panel') }}">
- {%- trans %}Media processing panel{% endtrans -%}
- </a></li>
- </ul>
- </li>
+ <p>
+ <span class="dropdown_title">Admin powers:</span>
+ <a href="{{ request.urlgen('mediagoblin.admin.panel') }}">
+ {%- trans %}Media processing panel{% endtrans -%}
+ </a>
+ </p>
{% endif %}
- </ul>
</div>
{% endif %}
</header>
{% endblock %}
- <div class="container">
- <div class="mediagoblin_content">
+ <div class="container">
+ {% include 'mediagoblin/bits/above-content.html' %}
+ <div class="mediagoblin_content">
{% include "mediagoblin/utils/messages.html" %}
{% block mediagoblin_content %}
{% endblock mediagoblin_content %}
- </div>
- {% block mediagoblin_footer %}
+ </div>
+ {%- block mediagoblin_footer %}
<footer>
{% trans -%}
- Powered by <a href="http://mediagoblin.org">MediaGoblin</a>, a <a href="http://gnu.org/">GNU</a> project.
+ Powered by <a href="http://mediagoblin.org/" title='Version {{ version }}'>MediaGoblin</a>, a <a href="http://gnu.org/">GNU</a> project.
{%- endtrans %}
{% trans source_link=app_config['source_link'] -%}
Released under the <a href="http://www.fsf.org/licensing/licenses/agpl-3.0.html">AGPL</a>. <a href="{{ source_link }}">Source code</a> available.
{%- endtrans %}
</footer>
- {% endblock mediagoblin_footer %}
- {% endblock mediagoblin_body %}
- </div>
+ {%- endblock mediagoblin_footer %}
+ </div>
+ {%- endblock mediagoblin_body %}
+ {% include 'mediagoblin/bits/body-end.html' %}
</body>
</html>
diff --git a/mediagoblin/templates/mediagoblin/bits/above-content.html b/mediagoblin/templates/mediagoblin/bits/above-content.html
new file mode 100644
index 00000000..bb7b9762
--- /dev/null
+++ b/mediagoblin/templates/mediagoblin/bits/above-content.html
@@ -0,0 +1,17 @@
+{#
+# 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/>.
+-#}
diff --git a/mediagoblin/templates/mediagoblin/bits/body-end.html b/mediagoblin/templates/mediagoblin/bits/body-end.html
new file mode 100644
index 00000000..bb7b9762
--- /dev/null
+++ b/mediagoblin/templates/mediagoblin/bits/body-end.html
@@ -0,0 +1,17 @@
+{#
+# 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/>.
+-#}
diff --git a/mediagoblin/templates/mediagoblin/bits/body-start.html b/mediagoblin/templates/mediagoblin/bits/body-start.html
new file mode 100644
index 00000000..bb7b9762
--- /dev/null
+++ b/mediagoblin/templates/mediagoblin/bits/body-start.html
@@ -0,0 +1,17 @@
+{#
+# 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/>.
+-#}
diff --git a/mediagoblin/templates/mediagoblin/edit/attachments.html b/mediagoblin/templates/mediagoblin/edit/attachments.html
index 55d446de..3fbea3be 100644
--- a/mediagoblin/templates/mediagoblin/edit/attachments.html
+++ b/mediagoblin/templates/mediagoblin/edit/attachments.html
@@ -15,7 +15,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/>.
#}
-{% extends "mediagoblin/base.html" %}
+{%- extends "mediagoblin/base.html" %}
{% import "/mediagoblin/utils/wtforms.html" as wtforms_util %}
@@ -28,13 +28,14 @@
{% block mediagoblin_content %}
<form action="{{ request.urlgen('mediagoblin.edit.attachments',
user= media.get_uploader.username,
- media= media.id) }}"
+ media_id=media.id) }}"
method="POST" enctype="multipart/form-data">
<div class="form_box">
<h1>
- {% trans media_title=media.title -%}
+ {%- trans media_title=media.title -%}
Editing attachments for {{ media_title }}
- {%- endtrans %}</h1>
+ {%- endtrans -%}
+ </h1>
<div style="text-align: center;" >
<img src="{{ media.thumb_url }}" />
</div>
@@ -42,19 +43,19 @@
{% if media.attachment_files|count %}
<h2>{% trans %}Attachments{% endtrans %}</h2>
<ul>
- {% for attachment in media.attachment_files %}
+ {%- for attachment in media.attachment_files %}
<li>
<a target="_blank" href="{{ request.app.public_store.file_url(
attachment['filepath']) }}">
{{- attachment.name -}}
</a>
</li>
- {% endfor %}
+ {%- endfor %}
</ul>
{% endif %}
<h2>{% trans %}Add attachment{% endtrans %}</h2>
- {{ wtforms_util.render_divs(form) }}
+ {{- wtforms_util.render_divs(form) }}
<div class="form_submit_buttons">
<a href="{{ media.url_for_self(request.urlgen) }}">
{%- trans %}Cancel{% endtrans -%}
diff --git a/mediagoblin/templates/mediagoblin/edit/edit_account.html b/mediagoblin/templates/mediagoblin/edit/edit_account.html
index 4b980301..7fe2c031 100644
--- a/mediagoblin/templates/mediagoblin/edit/edit_account.html
+++ b/mediagoblin/templates/mediagoblin/edit/edit_account.html
@@ -15,7 +15,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/>.
#}
-{% extends "mediagoblin/base.html" %}
+{%- extends "mediagoblin/base.html" %}
{% import "/mediagoblin/utils/wtforms.html" as wtforms_util %}
@@ -39,18 +39,15 @@
<h1>
{%- trans username=user.username -%}
Changing {{ username }}'s account settings
- {%- endtrans %}
+ {%- endtrans -%}
</h1>
{{ wtforms_util.render_field_div(form.old_password) }}
{{ wtforms_util.render_field_div(form.new_password) }}
<div class="form_field_input">
<p>{{ form.wants_comment_notification }}
- {{ form.wants_comment_notification.label }}</p>
- </div>
- <div class="form_field_input">
- <p>{{ form.license_preference }}
- {{ form.license_preference.label }}</p>
+ {{ wtforms_util.render_label(form.wants_comment_notification) }}</p>
</div>
+ {{- wtforms_util.render_field_div(form.license_preference) }}
<div class="form_submit_buttons">
<input type="submit" value="{% trans %}Save changes{% endtrans %}" class="button_form" />
{{ csrf_token }}
diff --git a/mediagoblin/templates/mediagoblin/media_displays/image.html b/mediagoblin/templates/mediagoblin/media_displays/image.html
index 30c2a90d..158dd67f 100644
--- a/mediagoblin/templates/mediagoblin/media_displays/image.html
+++ b/mediagoblin/templates/mediagoblin/media_displays/image.html
@@ -18,5 +18,12 @@
{% extends 'mediagoblin/user_pages/media.html' %}
+{% block mediagoblin_head %}
+ {{ super() }}
+ {% template_hook("image_head") %}
+{% endblock mediagoblin_head %}
+
{% block mediagoblin_sidebar %}
+ {{ super() }}
+ {% template_hook("image_sideinfo") %}
{% endblock %}
diff --git a/mediagoblin/templates/mediagoblin/media_displays/stl.html b/mediagoblin/templates/mediagoblin/media_displays/stl.html
index 043faac8..a89e0b4f 100644
--- a/mediagoblin/templates/mediagoblin/media_displays/stl.html
+++ b/mediagoblin/templates/mediagoblin/media_displays/stl.html
@@ -23,7 +23,7 @@
{% set model_download = request.app.public_store.file_url(
- media.get_display_media(media.media_files)) %}
+ media.media_files['original']) %}
{% set perspective_view = request.app.public_store.file_url(
media.media_files['perspective']) %}
{% set top_view = request.app.public_store.file_url(
diff --git a/mediagoblin/templates/mediagoblin/media_displays/video.html b/mediagoblin/templates/mediagoblin/media_displays/video.html
index 7d5ede8d..b0854c9f 100644
--- a/mediagoblin/templates/mediagoblin/media_displays/video.html
+++ b/mediagoblin/templates/mediagoblin/media_displays/video.html
@@ -22,17 +22,24 @@
{{ super() }}
<script type="text/javascript" src="{{
request.staticdirect('/extlib/video-js/video.min.js') }}"></script>
- <link href="{{ request.staticdirect('/css/vjs-mg-skin.css')
- }}" rel="stylesheet">
+ <link href="{{ request.staticdirect('/css/vjs-mg-skin.css') }}"
+ rel="stylesheet">
{%- endblock %}
{% block mediagoblin_media %}
- <video controls autoplay preload="auto" class="video-js vjs-mg-skin"
- data-setup='{"height": {{ media.media_data.height }},
- "width": {{ media.media_data.width }} }'>
- <source src="{{ request.app.public_store.file_url(
- media.media_files['webm_640']) }}"
- type="video/webm; codecs=&quot;vp8, vorbis&quot;" />
+ {% set display_type, display_path = media.get_display_media() %}
+
+ <video controls
+ {% if global_config['media_type:mediagoblin.media_types.video']['auto_play'] %}autoplay{% endif %}
+ preload="auto" class="video-js vjs-mg-skin"
+ data-setup='{"height": {{ media.media_data.height }},
+ "width": {{ media.media_data.width }} }'>
+ <source src="{{ request.app.public_store.file_url(display_path) }}"
+ {% if media.media_data %}
+ type="{{ media.media_data.source_type() }}"
+ {% else %}
+ type="{{ media.media_manager['default_webm_type'] }}"
+ {% endif %} />
<div class="no_html5">
{%- trans -%}Sorry, this video will not work because
your web browser does not support HTML5
@@ -48,10 +55,20 @@
<h3>{% trans %}Download{% endtrans %}</h3>
<ul>
{% if 'original' in media.media_files %}
- <li><a href="{{ request.app.public_store.file_url(
- media.media_files.original) }}">{% trans %}Original file{% endtrans %}</a>
+ <li>
+ <a href="{{ request.app.public_store.file_url(
+ media.media_files.original) }}">
+ {%- trans %}Original file{% endtrans -%}
+ </a>
+ </li>
+ {% endif %}
+ {% if 'webm_640' in media.media_files %}
+ <li>
+ <a href="{{ request.app.public_store.file_url(
+ media.media_files.webm_640) }}">
+ {%- trans %}WebM file (640p; VP8/Vorbis){% endtrans -%}
+ </a>
+ </li>
{% endif %}
- <li><a href="{{ request.app.public_store.file_url(
- media.media_files.webm_640) }}">{% trans %}WebM file (640p; VP8/Vorbis){% endtrans %}</a>
</ul>
{% endblock %}
diff --git a/mediagoblin/templates/mediagoblin/root.html b/mediagoblin/templates/mediagoblin/root.html
index 5c6eb52f..529d89ef 100644
--- a/mediagoblin/templates/mediagoblin/root.html
+++ b/mediagoblin/templates/mediagoblin/root.html
@@ -19,6 +19,13 @@
{% from "mediagoblin/utils/object_gallery.html" import object_gallery %}
+{% set feed_url = request.urlgen('mediagoblin.listings.atom_feed') %}
+
+{% block mediagoblin_head -%}
+ {% set feed_url = request.urlgen('mediagoblin.listings.atom_feed') -%}
+ <link rel="alternate" type="application/atom+xml" href="{{ feed_url }}">
+{%- endblock mediagoblin_head %}
+
{% block mediagoblin_content %}
{% if request.user %}
<h1>{% trans %}Explore{% endtrans %}</h1>
@@ -39,4 +46,8 @@
{% endif %}
<h2>{% trans %}Most recent media{% endtrans %}</h2>
{{ object_gallery(request, media_entries, pagination) }}
+
+ {#- Need to set feed_url within this block so template can use it. -#}
+ {%- set feed_url = feed_url -%}
+ {%- include "mediagoblin/utils/feed_link.html" -%}
{% endblock %}
diff --git a/mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html b/mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html
index 7499c0cf..2b790584 100644
--- a/mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html
+++ b/mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html
@@ -36,7 +36,7 @@
<p class="delete_checkbox_box">
{{ form.confirm }}
- <label for="{{ (form.confirm.name) }}">{{ _(form.confirm.label.text) }}</label>
+ {{ wtforms_util.render_label(form.confirm) }}
</p>
<div class="form_submit_buttons">
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 447201cd..449cc3ce 100644
--- a/mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html
+++ b/mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html
@@ -42,7 +42,7 @@
<p class="delete_checkbox_box">
{{ form.confirm }}
- <label for="{{ (form.confirm.name) }}">{{ _(form.confirm.label.text) }}</label>
+ {{ wtforms_util.render_label(form.confirm) }}
</p>
<div class="form_submit_buttons">
diff --git a/mediagoblin/templates/mediagoblin/user_pages/gallery.html b/mediagoblin/templates/mediagoblin/user_pages/gallery.html
index e234914f..f23bb156 100644
--- a/mediagoblin/templates/mediagoblin/user_pages/gallery.html
+++ b/mediagoblin/templates/mediagoblin/user_pages/gallery.html
@@ -34,16 +34,28 @@
{% block mediagoblin_content -%}
<h1>
- {%- trans username=user.username,
- user_url=request.urlgen(
- 'mediagoblin.user_pages.user_home',
- user=user.username) -%}
- <a href="{{ user_url }}">{{ username }}</a>'s media
- {%- endtrans %}
+ {% if tag %}
+ {%- trans username=user.username,
+ user_url=request.urlgen(
+ 'mediagoblin.user_pages.user_home',
+ user=user.username),
+ tag_url=request.urlgen(
+ 'mediagoblin.listings.tags_listing',
+ tag=tag) -%}
+ <a href="{{ user_url }}">{{ username }}</a>'s media with tag <a href="{{ tag_url }}">{{ tag }}</a>
+ {%- endtrans %}
+ {% else %}
+ {%- trans username=user.username,
+ user_url=request.urlgen(
+ 'mediagoblin.user_pages.user_home',
+ user=user.username) -%}
+ <a href="{{ user_url }}">{{ username }}</a>'s media
+ {%- endtrans %}
+ {% endif %}
</h1>
{{ object_gallery(request, media_entries, pagination) }}
-
+
{% set feed_url = request.urlgen('mediagoblin.user_pages.atom_feed',
user=user.username) %}
{% include "mediagoblin/utils/feed_link.html" %}
diff --git a/mediagoblin/templates/mediagoblin/user_pages/media.html b/mediagoblin/templates/mediagoblin/user_pages/media.html
index 7e184257..b77c12b9 100644
--- a/mediagoblin/templates/mediagoblin/user_pages/media.html
+++ b/mediagoblin/templates/mediagoblin/user_pages/media.html
@@ -15,7 +15,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/>.
#}
-{% extends "mediagoblin/base.html" %}
+{%- extends "mediagoblin/base.html" %}
{% import "/mediagoblin/utils/wtforms.html" as wtforms_util %}
{% from "mediagoblin/utils/pagination.html" import render_pagination %}
@@ -30,15 +30,7 @@
<script type="text/javascript"
src="{{ request.staticdirect('/js/keyboard_navigation.js') }}"></script>
- {% if app_config['geolocation_map_visible'] %}
- <link rel="stylesheet"
- href="{{ request.staticdirect('/extlib/leaflet/leaflet.css') }}" />
-
- <script type="text/javascript"
- src="{{ request.staticdirect('/extlib/leaflet/leaflet.js') }}"></script>
- <script type="text/javascript"
- src="{{ request.staticdirect('/js/geolocation-map.js') }}"></script>
- {% endif %}
+ {% template_hook("media_head") %}
{% endblock mediagoblin_head %}
{% block mediagoblin_content %}
@@ -55,7 +47,7 @@
<div class="media_image_container">
{% block mediagoblin_media %}
{% set display_media = request.app.public_store.file_url(
- media.get_display_media(media.media_files)) %}
+ media.get_display_media()[1]) %}
{# if there's a medium file size, that means the medium size
# isn't the original... so link to the original!
#}
@@ -125,14 +117,14 @@
<div class="comment_author">
<img src="{{ request.staticdirect('/images/icon_comment.png') }}" />
<a href="{{ request.urlgen('mediagoblin.user_pages.user_home',
- user = comment_author.username) }}">
+ user=comment_author.username) }}">
{{- comment_author.username -}}
</a>
{% trans %}at{% endtrans %}
<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.id,
+ user=media.get_uploader.username,
+ media=media.slug_or_id) }}#comment">
{{- comment.created.strftime("%I:%M%p %Y-%m-%d") -}}
</a>:
</div>
@@ -157,57 +149,45 @@
{% include "mediagoblin/utils/tags.html" %}
{% endif %}
- {% if media.collections %}
- {% include "mediagoblin/utils/collections.html" %}
- {% endif %}
+ {% include "mediagoblin/utils/collections.html" %}
{% include "mediagoblin/utils/license.html" %}
- {% include "mediagoblin/utils/geolocation_map.html" %}
-
{% include "mediagoblin/utils/exif.html" %}
- {% if media.attachment_files|count %}
+ {%- if media.attachment_files|count %}
<h3>{% trans %}Attachments{% endtrans %}</h3>
<ul>
- {% for attachment in media.attachment_files %}
+ {%- for attachment in media.attachment_files %}
<li>
<a href="{{ request.app.public_store.file_url(attachment.filepath) }}">
{{- attachment.name -}}
</a>
</li>
- {% endfor %}
+ {%- endfor %}
</ul>
- {% endif %}
- {% if app_config['allow_attachments']
+ {%- endif %}
+ {%- if app_config['allow_attachments']
and request.user
and (media.uploader == request.user.id
or request.user.is_admin) %}
- {% if not media.attachment_files|count %}
+ {%- if not media.attachment_files|count %}
<h3>{% trans %}Attachments{% endtrans %}</h3>
- {% endif %}
+ {%- endif %}
<p>
<a href="{{ request.urlgen('mediagoblin.edit.attachments',
user=media.get_uploader.username,
- media=media.id) }}">{% trans %}Add attachment{% endtrans %}</a>
+ media_id=media.id) }}">
+ {%- trans %}Add attachment{% endtrans -%}
+ </a>
</p>
- {% endif %}
+ {%- endif %}
- {% if request.user %}
- <p>
- <a type="submit" href="{{ request.urlgen('mediagoblin.user_pages.media_collect',
- user=media.get_uploader.username,
- media=media.id) }}"
- class="button_action"
- title="{% trans %}Add media to collection{% endtrans %}">
- <img src="{{ request.staticdirect('/images/icon_collect.png') }}"
- />
- </a>
- </p>
- {% endif %}
+ {% template_hook("media_sideinfo") %}
{% block mediagoblin_sidebar %}
{% endblock %}
+
</div>
<div class="clear"></div>
{% endblock %}
diff --git a/mediagoblin/templates/mediagoblin/user_pages/media_collect.html b/mediagoblin/templates/mediagoblin/user_pages/media_collect.html
index 4f35dfa3..b4c9671c 100644
--- a/mediagoblin/templates/mediagoblin/user_pages/media_collect.html
+++ b/mediagoblin/templates/mediagoblin/user_pages/media_collect.html
@@ -24,17 +24,22 @@
src="{{ request.staticdirect('/js/collection_form_show.js') }}"></script>
{% endblock %}
-{% block mediagoblin_content %}
+{% block title -%}
+ {% trans media_title=media.title -%}
+ Add “{{ media_title }}†to a collection
+ {%- endtrans %} &mdash; {{ super() }}
+{%- endblock %}
+{% block mediagoblin_content %}
<form action="{{ request.urlgen('mediagoblin.user_pages.media_collect',
user=media.get_uploader.username,
- media=media.id) }}"
+ media_id=media.id) }}"
method="POST" enctype="multipart/form-data">
<div class="form_box">
<h1>
- {%- trans title=media.title -%}
- Add {{ title }} to collection
- {%- endtrans %}
+ {%- trans media_title=media.title -%}
+ Add “{{ media_title }}†to a collection
+ {%- endtrans -%}
</h1>
<div style="text-align: center;" >
@@ -42,39 +47,20 @@
</div>
<br />
-
- <p class="form_field_label">
- <label for="{{ (form.collection.name) }}">{{ _(form.collection.label.text) }}</label>
- </p>
+
+ {{- wtforms_util.render_label_p(form.collection) }}
<div class="form_field_input">
{{ form.collection }}
<a class="button_action" id="button_addcollection">{% trans %}+{% endtrans %}</a>
</div>
<div id="new_collection" class="subform">
+ <h3>{% trans %}Add a new collection{% endtrans %}</h3>
- <h3>{% trans %}Add a new collection{% endtrans %}</h3>
-
- <p class="form_field_label">
- <label for="{{ (form.collection_title.name) }}">{{ _(form.collection_title.label.text) }}</label>
- </p>
- <div class="form_field_input">
- {{ form.collection_title }}
- </div>
- <p class="form_field_label">
- <label for="{{ (form.collection_description.name) }}">{{ _(form.collection_description.label.text) }}</label>
- </p>
- <div class="form_field_input">
- {{ form.collection_description }}
- </div>
-
- </div>
- <p class="form_field_label">
- <label for="{{ (form.note.name) }}">{{ _(form.note.label.text) }}</label>
- </p>
- <div class="form_field_input">
- {{ form.note }}
+ {{- wtforms_util.render_field_div(form.collection_title) }}
+ {{- wtforms_util.render_field_div(form.collection_description) }}
</div>
+ {{- wtforms_util.render_field_div(form.note) }}
<div class="form_submit_buttons">
{# TODO: This isn't a button really... might do unexpected things :) #}
diff --git a/mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html b/mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html
index d2a5655e..1d7dcc17 100644
--- a/mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html
+++ b/mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html
@@ -40,7 +40,7 @@
<p class="delete_checkbox_box">
{{ form.confirm }}
- <label for="{{ (form.confirm.name) }}">{{ _(form.confirm.label.text) }}</label>
+ {{ wtforms_util.render_label(form.confirm) }}
</p>
<div class="form_submit_buttons">
diff --git a/mediagoblin/templates/mediagoblin/utils/collections.html b/mediagoblin/templates/mediagoblin/utils/collections.html
index 6cb5a342..69738e26 100644
--- a/mediagoblin/templates/mediagoblin/utils/collections.html
+++ b/mediagoblin/templates/mediagoblin/utils/collections.html
@@ -17,20 +17,28 @@
#}
{% block collections_content -%}
- <h3>{% trans collected=media.collected %}In collections ({{ collected }}){% endtrans %}</h3>
- <p>
- {% for collection in media.collections %}
- {% if loop.last %}
- {# the 'and' should only appear if there is more than one collections #}
- {% if media.collections|length > 1 %}
+ {% if media.collections %}
+ <h3>{% trans %}Collected in{% endtrans %}</h3>
+ <p>
+ {%- for collection in media.collections %}
+ {%- if not loop.first %}
&middot;
- {% endif %}
- <a href="{{ collection.url_for_self(request.urlgen) }}">{{ collection['title'] }}</a>
- {% elif loop.revindex == 2 %}
- <a href="{{ collection.url_for_self(request.urlgen) }}">{{ collection['title'] }}</a>
- {% else %}
- <a href="{{ collection.url_for_self(request.urlgen) }}">{{ collection['title'] }}</a> &middot;
- {% endif %}
- {% endfor %}
- </p>
+ {%- endif %}
+ <a href="{{ collection.url_for_self(request.urlgen) }}">
+ {{- collection.title }} (
+ {{- collection.get_creator.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,
+ media_id=media.id) }}"
+ class="button_action">
+ {% trans %}Add to a collection{% endtrans %}
+ </a>
+ </p>
+ {%- endif %}
{% endblock %}
diff --git a/mediagoblin/templates/mediagoblin/utils/tags.html b/mediagoblin/templates/mediagoblin/utils/tags.html
index 0127035c..bb4bd1a5 100644
--- a/mediagoblin/templates/mediagoblin/utils/tags.html
+++ b/mediagoblin/templates/mediagoblin/utils/tags.html
@@ -26,16 +26,20 @@
&middot;
{% endif %}
<a href="{{ request.urlgen(
- 'mediagoblin.listings.tags_listing',
- tag=tag['slug']) }}">{{ tag['name'] }}</a>
+ 'mediagoblin.user_pages.user_tag_gallery',
+ tag=tag['slug'],
+ user=media.get_uploader.username) }}">{{ tag['name'] }}</a>
{% elif loop.revindex == 2 %}
<a href="{{ request.urlgen(
- 'mediagoblin.listings.tags_listing',
- tag=tag['slug']) }}">{{ tag['name'] }}</a>
+ 'mediagoblin.user_pages.user_tag_gallery',
+ tag=tag['slug'],
+ user=media.get_uploader.username) }}">{{ tag['name'] }}</a>
{% else %}
<a href="{{ request.urlgen(
- 'mediagoblin.listings.tags_listing',
- tag=tag['slug']) }}">{{ tag['name'] }}</a> &middot;
+ 'mediagoblin.user_pages.user_tag_gallery',
+ tag=tag['slug'],
+ user=media.get_uploader.username) }}">{{ tag['name'] }}</a>
+ &middot;
{% endif %}
{% endfor %}
</p>
diff --git a/mediagoblin/templates/mediagoblin/utils/wtforms.html b/mediagoblin/templates/mediagoblin/utils/wtforms.html
index 58ecb8e0..35b4aa04 100644
--- a/mediagoblin/templates/mediagoblin/utils/wtforms.html
+++ b/mediagoblin/templates/mediagoblin/utils/wtforms.html
@@ -16,11 +16,25 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#}
+{# Render the label for a field #}
+{% macro render_label(field) %}
+ {%- if field.label.text -%}
+ <label for="{{ field.label.field_id }}">{{ _(field.label.text) }}</label>
+ {%- endif -%}
+{%- endmacro %}
+
+{# Render the label in a <p> for a field #}
+{% macro render_label_p(field) %}
+ {%- if field.label.text %}
+ <p class="form_field_label">
+ {{- render_label(field) -}}
+ </p>
+ {%- endif %}
+{%- endmacro %}
+
{# Generically render a field #}
{% macro render_field_div(field) %}
- {% if field.label.text -%}
- <p class="form_field_label"><label for="{{ field.label.field_id }}">{{ _(field.label.text) }}</label></p>
- {%- endif %}
+ {{- render_label_p(field) }}
<div class="form_field_input">
{{ field }}
{%- if field.errors -%}
@@ -28,7 +42,7 @@
<p class="form_field_error">{{ _(error) }}</p>
{% endfor %}
{%- endif %}
- {% if field.description -%}
+ {%- if field.description %}
<p class="form_field_description">{{ _(field.description)|safe }}</p>
{%- endif %}
</div>
diff --git a/mediagoblin/tests/conftest.py b/mediagoblin/tests/conftest.py
new file mode 100644
index 00000000..25f495d6
--- /dev/null
+++ b/mediagoblin/tests/conftest.py
@@ -0,0 +1,15 @@
+from mediagoblin.tests import tools
+
+import pytest
+
+@pytest.fixture()
+def test_app(request):
+ """
+ py.test fixture to pass sandboxed mediagoblin applications into tests that
+ want them.
+
+ You could make a local version of this method for your own tests
+ to override the paste and config files being used by passing them
+ in differently to get_app.
+ """
+ return tools.get_app(request)
diff --git a/mediagoblin/tests/pytest.ini b/mediagoblin/tests/pytest.ini
new file mode 100644
index 00000000..d4aa2d69
--- /dev/null
+++ b/mediagoblin/tests/pytest.ini
@@ -0,0 +1,2 @@
+[pytest]
+usefixtures = tmpdir \ No newline at end of file
diff --git a/mediagoblin/tests/test_api.py b/mediagoblin/tests/test_api.py
index 82b1c1b4..cff25776 100644
--- a/mediagoblin/tests/test_api.py
+++ b/mediagoblin/tests/test_api.py
@@ -20,9 +20,11 @@ import base64
from pkg_resources import resource_filename
+import pytest
+
from mediagoblin import mg_globals
from mediagoblin.tools import template, pluginapi
-from mediagoblin.tests.tools import get_app, fixture_add_user
+from mediagoblin.tests.tools import fixture_add_user
_log = logging.getLogger(__name__)
@@ -43,15 +45,14 @@ BIG_BLUE = resource('bigblue.png')
class TestAPI(object):
- def setUp(self):
- self.app = get_app(dump_old_app=False)
+ def setup(self):
self.db = mg_globals.database
self.user_password = u'4cc355_70k3N'
self.user = fixture_add_user(u'joapi', self.user_password)
- def login(self):
- self.app.post(
+ def login(self, test_app):
+ test_app.post(
'/auth/login/', {
'username': self.user.username,
'password': self.user_password})
@@ -65,14 +66,14 @@ class TestAPI(object):
self.user.username,
self.user_password])))}
- def do_post(self, data, **kwargs):
+ 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 = self.app.post(url, data, **kwargs)
+ response = test_app.post(url, data, **kwargs)
if do_follow:
response.follow()
@@ -82,21 +83,22 @@ class TestAPI(object):
def upload_data(self, filename):
return {'upload_files': [('file', filename)]}
- def test_1_test_test_view(self):
- self.login()
+ def test_1_test_test_view(self, test_app):
+ self.login(test_app)
- response = self.app.get(
+ response = test_app.get(
'/api/test',
headers=self.http_auth_headers())
assert response.body == \
'{"username": "joapi", "email": "joapi@example.com"}'
- def test_2_test_submission(self):
- self.login()
+ 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
diff --git a/mediagoblin/tests/test_auth.py b/mediagoblin/tests/test_auth.py
index f4409121..755727f9 100644
--- a/mediagoblin/tests/test_auth.py
+++ b/mediagoblin/tests/test_auth.py
@@ -17,12 +17,10 @@
import urlparse
import datetime
-from nose.tools import assert_equal
-
from mediagoblin import mg_globals
from mediagoblin.auth import lib as auth_lib
from mediagoblin.db.models import User
-from mediagoblin.tests.tools import setup_fresh_app, get_app, fixture_add_user
+from mediagoblin.tests.tools import fixture_add_user
from mediagoblin.tools import template, mail
@@ -40,7 +38,6 @@ def test_bcrypt_check_password():
'notthepassword',
'$2a$12$PXU03zfrVCujBhVeICTwtOaHTUs5FFwsscvSSTJkqx/2RQ0Lhy/nO')
-
# Same thing, but with extra fake salt.
assert not auth_lib.bcrypt_check_password(
'notthepassword',
@@ -58,7 +55,6 @@ def test_bcrypt_gen_password_hash():
assert not auth_lib.bcrypt_check_password(
'notthepassword', hashed_pw)
-
# Same thing, extra salt.
hashed_pw = auth_lib.bcrypt_gen_password_hash(pw, '3><7R45417')
assert auth_lib.bcrypt_check_password(
@@ -67,7 +63,6 @@ def test_bcrypt_gen_password_hash():
'notthepassword', hashed_pw, '3><7R45417')
-@setup_fresh_app
def test_register_views(test_app):
"""
Massive test function that all our registration-related views all work.
@@ -77,8 +72,7 @@ def test_register_views(test_app):
test_app.get('/auth/register/')
# Make sure it rendered with the appropriate template
- assert template.TEMPLATE_TEST_CONTEXT.has_key(
- 'mediagoblin/auth/register.html')
+ assert 'mediagoblin/auth/register.html' in template.TEMPLATE_TEST_CONTEXT
# Try to register without providing anything, should error
# --------------------------------------------------------
@@ -105,8 +99,8 @@ def test_register_views(test_app):
context = template.TEMPLATE_TEST_CONTEXT['mediagoblin/auth/register.html']
form = context['register_form']
- assert_equal (form.username.errors, [u'Field must be between 3 and 30 characters long.'])
- assert_equal (form.password.errors, [u'Field must be between 5 and 1024 characters long.'])
+ assert form.username.errors == [u'Field must be between 3 and 30 characters long.']
+ assert form.password.errors == [u'Field must be between 5 and 1024 characters long.']
## bad form
template.clear_test_template_context()
@@ -117,11 +111,11 @@ def test_register_views(test_app):
context = template.TEMPLATE_TEST_CONTEXT['mediagoblin/auth/register.html']
form = context['register_form']
- assert_equal (form.username.errors, [u'This field does not take email addresses.'])
- assert_equal (form.email.errors, [u'This field requires an email address.'])
+ assert form.username.errors == [u'This field does not take email addresses.']
+ assert form.email.errors == [u'This field requires an email address.']
## At this point there should be no users in the database ;)
- assert_equal(User.query.count(), 0)
+ assert User.query.count() == 0
# Successful register
# -------------------
@@ -134,11 +128,8 @@ def test_register_views(test_app):
response.follow()
## Did we redirect to the proper page? Use the right template?
- assert_equal(
- urlparse.urlsplit(response.location)[2],
- '/u/happygirl/')
- assert template.TEMPLATE_TEST_CONTEXT.has_key(
- 'mediagoblin/user_pages/user.html')
+ assert urlparse.urlsplit(response.location)[2] == '/u/happygirl/'
+ assert 'mediagoblin/user_pages/user.html' in template.TEMPLATE_TEST_CONTEXT
## Make sure user is in place
new_user = mg_globals.database.User.find_one(
@@ -228,11 +219,8 @@ def test_register_views(test_app):
response.follow()
## Did we redirect to the proper page? Use the right template?
- assert_equal(
- urlparse.urlsplit(response.location)[2],
- '/auth/login/')
- assert template.TEMPLATE_TEST_CONTEXT.has_key(
- 'mediagoblin/auth/login.html')
+ assert urlparse.urlsplit(response.location)[2] == '/auth/login/'
+ 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
@@ -262,7 +250,7 @@ def test_register_views(test_app):
response = test_app.get(
"/auth/forgot_password/verify/?userid=%s&token=total_bs" % unicode(
new_user.id), status=404)
- assert_equal(response.status.split()[0], u'404') # status="404 NOT FOUND"
+ assert response.status.split()[0] == u'404' # status="404 NOT FOUND"
## Try using an expired token to change password, shouldn't work
template.clear_test_template_context()
@@ -271,14 +259,14 @@ def test_register_views(test_app):
new_user.fp_token_expire = datetime.datetime.now()
new_user.save()
response = test_app.get("%s?%s" % (path, get_params), status=404)
- assert_equal(response.status.split()[0], u'404') # status="404 NOT FOUND"
+ assert response.status.split()[0] == u'404' # status="404 NOT FOUND"
new_user.fp_token_expire = real_token_expiration
new_user.save()
## Verify step 1 of password-change works -- can see form to change password
template.clear_test_template_context()
response = test_app.get("%s?%s" % (path, get_params))
- assert template.TEMPLATE_TEST_CONTEXT.has_key('mediagoblin/auth/change_fp.html')
+ assert 'mediagoblin/auth/change_fp.html' in template.TEMPLATE_TEST_CONTEXT
## Verify step 2.1 of password-change works -- report success to user
template.clear_test_template_context()
@@ -288,8 +276,7 @@ def test_register_views(test_app):
'password': 'iamveryveryhappy',
'token': parsed_get_params['token']})
response.follow()
- assert template.TEMPLATE_TEST_CONTEXT.has_key(
- 'mediagoblin/auth/login.html')
+ assert 'mediagoblin/auth/login.html' in template.TEMPLATE_TEST_CONTEXT
## Verify step 2.2 of password-change works -- login w/ new password success
template.clear_test_template_context()
@@ -300,26 +287,21 @@ def test_register_views(test_app):
# User should be redirected
response.follow()
- assert_equal(
- urlparse.urlsplit(response.location)[2],
- '/')
- assert template.TEMPLATE_TEST_CONTEXT.has_key(
- 'mediagoblin/root.html')
+ assert urlparse.urlsplit(response.location)[2] == '/'
+ assert 'mediagoblin/root.html' in template.TEMPLATE_TEST_CONTEXT
-def test_authentication_views():
+def test_authentication_views(test_app):
"""
Test logging in and logging out
"""
- test_app = get_app(dump_old_app=False)
# Make a new user
test_user = fixture_add_user(active_user=False)
# Get login
# ---------
test_app.get('/auth/login/')
- assert template.TEMPLATE_TEST_CONTEXT.has_key(
- 'mediagoblin/auth/login.html')
+ assert 'mediagoblin/auth/login.html' in template.TEMPLATE_TEST_CONTEXT
# Failed login - blank form
# -------------------------
@@ -380,11 +362,8 @@ def test_authentication_views():
# User should be redirected
response.follow()
- assert_equal(
- urlparse.urlsplit(response.location)[2],
- '/')
- assert template.TEMPLATE_TEST_CONTEXT.has_key(
- 'mediagoblin/root.html')
+ 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']
@@ -398,16 +377,13 @@ def test_authentication_views():
# Should be redirected to index page
response.follow()
- assert_equal(
- urlparse.urlsplit(response.location)[2],
- '/')
- assert template.TEMPLATE_TEST_CONTEXT.has_key(
- 'mediagoblin/root.html')
+ assert urlparse.urlsplit(response.location)[2] == '/'
+ assert 'mediagoblin/root.html' in template.TEMPLATE_TEST_CONTEXT
# Make sure the user is not in the session
context = template.TEMPLATE_TEST_CONTEXT['mediagoblin/root.html']
session = context['request'].session
- assert session.has_key('user_id') == False
+ assert 'user_id' not in session
# User is redirected to custom URL if POST['next'] is set
# -------------------------------------------------------
@@ -417,7 +393,4 @@ def test_authentication_views():
'username': u'chris',
'password': 'toast',
'next' : '/u/chris/'})
- assert_equal(
- urlparse.urlsplit(response.location)[2],
- '/u/chris/')
-
+ assert urlparse.urlsplit(response.location)[2] == '/u/chris/'
diff --git a/mediagoblin/tests/test_cache.py b/mediagoblin/tests/test_cache.py
index 48fa1386..403173cd 100644
--- a/mediagoblin/tests/test_cache.py
+++ b/mediagoblin/tests/test_cache.py
@@ -15,7 +15,6 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-from mediagoblin.tests.tools import setup_fresh_app
from mediagoblin import mg_globals
@@ -37,7 +36,6 @@ def _get_some_data(key):
return value
-@setup_fresh_app
def test_cache_working(test_app):
some_data_cache = mg_globals.cache.get_cache('sum_data')
assert not some_data_cache.has_key('herp')
diff --git a/mediagoblin/tests/test_collections.py b/mediagoblin/tests/test_collections.py
index b19f6362..87782f30 100644
--- a/mediagoblin/tests/test_collections.py
+++ b/mediagoblin/tests/test_collections.py
@@ -14,17 +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/>.
-from mediagoblin.tests.tools import fixture_add_collection, fixture_add_user, \
- get_app
+from mediagoblin.tests.tools import fixture_add_collection, fixture_add_user
from mediagoblin.db.models import Collection, User
-from mediagoblin.db.base import Session
-from nose.tools import assert_equal
-def test_user_deletes_collection():
+def test_user_deletes_collection(test_app):
# Setup db.
- get_app(dump_old_app=False)
-
user = fixture_add_user()
coll = fixture_add_collection(user=user)
# Reload into session:
@@ -34,4 +29,4 @@ def test_user_deletes_collection():
user.delete()
cnt2 = Collection.query.count()
- assert_equal(cnt1, cnt2 + 1)
+ assert cnt1 == cnt2 + 1
diff --git a/mediagoblin/tests/test_config.py b/mediagoblin/tests/test_config.py
index 7d8c65c1..b13adae6 100644
--- a/mediagoblin/tests/test_config.py
+++ b/mediagoblin/tests/test_config.py
@@ -36,7 +36,7 @@ def test_read_mediagoblin_config():
assert this_conf['carrotapp']['carrotcake'] == False
assert this_conf['carrotapp']['num_carrots'] == 1
- assert not this_conf['carrotapp'].has_key('encouragement_phrase')
+ assert 'encouragement_phrase' not in this_conf['carrotapp']
assert this_conf['celery']['EAT_CELERY_WITH_CARROTS'] == True
# A good file
diff --git a/mediagoblin/tests/test_csrf_middleware.py b/mediagoblin/tests/test_csrf_middleware.py
index e720264c..a272caf6 100644
--- a/mediagoblin/tests/test_csrf_middleware.py
+++ b/mediagoblin/tests/test_csrf_middleware.py
@@ -14,12 +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 mediagoblin.tests.tools import get_app
from mediagoblin import mg_globals
-def test_csrf_cookie_set():
- test_app = get_app(dump_old_app=False)
+def test_csrf_cookie_set(test_app):
cookie_name = mg_globals.app_config['csrf_cookie_name']
# get login page
@@ -33,11 +31,14 @@ def test_csrf_cookie_set():
assert response.headers.get('Vary', False) == 'Cookie'
-def test_csrf_token_must_match():
- # 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.
- test_app = get_app(dump_old_app=True)
+# 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
+def test_csrf_token_must_match(test_app):
# construct a request with no cookie or form token
assert test_app.post('/auth/login/',
@@ -67,8 +68,7 @@ def test_csrf_token_must_match():
extra_environ={'gmg.verify_csrf': True}).\
status_int == 200
-def test_csrf_exempt():
- test_app = get_app(dump_old_app=False)
+def test_csrf_exempt(test_app):
# monkey with the views to decorate a known endpoint
import mediagoblin.auth.views
from mediagoblin.meddleware.csrf import csrf_exempt
diff --git a/mediagoblin/tests/test_edit.py b/mediagoblin/tests/test_edit.py
index 7db6eaea..cda2607f 100644
--- a/mediagoblin/tests/test_edit.py
+++ b/mediagoblin/tests/test_edit.py
@@ -14,35 +14,35 @@
# 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 nose.tools import assert_equal
+import pytest
from mediagoblin import mg_globals
from mediagoblin.db.models import User
-from mediagoblin.tests.tools import get_app, fixture_add_user
+from mediagoblin.tests.tools import fixture_add_user
from mediagoblin.tools import template
from mediagoblin.auth.lib import bcrypt_check_password
class TestUserEdit(object):
- def setUp(self):
- self.app = get_app(dump_old_app=False)
+ def setup(self):
# set up new user
self.user_password = u'toast'
self.user = fixture_add_user(password = self.user_password)
- self.login()
- def login(self):
- self.app.post(
+ def login(self, test_app):
+ test_app.post(
'/auth/login/', {
'username': self.user.username,
'password': self.user_password})
- def test_user_deletion(self):
+ def test_user_deletion(self, test_app):
"""Delete user via web interface"""
+ self.login(test_app)
+
# Make sure user exists
assert User.query.filter_by(username=u'chris').first()
- res = self.app.post('/edit/account/delete/', {'confirmed': 'y'})
+ 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
@@ -52,14 +52,16 @@ class TestUserEdit(object):
#Restore user at end of test
self.user = fixture_add_user(password = self.user_password)
- self.login()
+ self.login(test_app)
- def test_change_password(self):
+ def test_change_password(self, test_app):
"""Test changing password correctly and incorrectly"""
+ self.login(test_app)
+
# test that the password can be changed
# template.clear_test_template_context()
- res = self.app.post(
+ res = test_app.post(
'/edit/account/', {
'old_password': 'toast',
'new_password': '123456',
@@ -67,7 +69,7 @@ class TestUserEdit(object):
})
# Check for redirect on success
- assert_equal(res.status_int, 302)
+ assert res.status_int == 302
# test_user has to be fetched again in order to have the current values
test_user = User.query.filter_by(username=u'chris').first()
assert bcrypt_check_password('123456', test_user.pw_hash)
@@ -76,7 +78,7 @@ class TestUserEdit(object):
# test that the password cannot be changed if the given
# old_password is wrong template.clear_test_template_context()
- self.app.post(
+ test_app.post(
'/edit/account/', {
'old_password': 'toast',
'new_password': '098765',
@@ -86,50 +88,54 @@ class TestUserEdit(object):
assert not bcrypt_check_password('098765', test_user.pw_hash)
-
- def test_change_bio_url(self):
+ def test_change_bio_url(self, test_app):
"""Test changing bio and URL"""
+ self.login(test_app)
+
# Test if legacy profile editing URL redirects correctly
- res = self.app.post(
+ res = test_app.post(
'/edit/profile/', {
'bio': u'I love toast!',
'url': u'http://dustycloud.org/'}, expect_errors=True)
# Should redirect to /u/chris/edit/
- assert_equal (res.status_int, 302)
+ assert res.status_int == 302
assert res.headers['Location'].endswith("/u/chris/edit/")
- res = self.app.post(
+ res = test_app.post(
'/u/chris/edit/', {
'bio': u'I love toast!',
'url': u'http://dustycloud.org/'})
test_user = User.query.filter_by(username=u'chris').first()
- assert_equal(test_user.bio, u'I love toast!')
- assert_equal(test_user.url, u'http://dustycloud.org/')
+ assert test_user.bio == u'I love toast!'
+ assert test_user.url == u'http://dustycloud.org/'
# change a different user than the logged in (should fail with 403)
fixture_add_user(username=u"foo")
- res = self.app.post(
+ res = test_app.post(
'/u/foo/edit/', {
'bio': u'I love toast!',
'url': u'http://dustycloud.org/'}, expect_errors=True)
- assert_equal(res.status_int, 403)
+ assert res.status_int == 403
# test changing the bio and the URL inproperly
too_long_bio = 150 * 'T' + 150 * 'o' + 150 * 'a' + 150 * 's' + 150* 't'
- self.app.post(
+ test_app.post(
'/u/chris/edit/', {
# more than 500 characters
'bio': too_long_bio,
'url': 'this-is-no-url'})
# Check form errors
- context = template.TEMPLATE_TEST_CONTEXT['mediagoblin/edit/edit_profile.html']
+ context = template.TEMPLATE_TEST_CONTEXT[
+ 'mediagoblin/edit/edit_profile.html']
form = context['form']
- assert_equal(form.bio.errors, [u'Field must be between 0 and 500 characters long.'])
- assert_equal(form.url.errors, [u'This address contains errors'])
+ assert form.bio.errors == [
+ u'Field must be between 0 and 500 characters long.']
+ assert form.url.errors == [
+ u'This address contains errors']
# test changing the url inproperly
diff --git a/mediagoblin/tests/test_globals.py b/mediagoblin/tests/test_globals.py
index 303f89e2..fe3088f8 100644
--- a/mediagoblin/tests/test_globals.py
+++ b/mediagoblin/tests/test_globals.py
@@ -14,16 +14,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/>.
-from nose.tools import assert_raises
+import pytest
from mediagoblin import mg_globals
class TestGlobals(object):
- def setUp(self):
+ def setup(self):
self.old_database = mg_globals.database
- def tearDown(self):
+ def teardown(self):
mg_globals.database = self.old_database
def test_setup_globals(self):
@@ -36,7 +36,7 @@ class TestGlobals(object):
assert mg_globals.public_store == 'my favorite public_store!'
assert mg_globals.queue_store == 'my favorite queue_store!'
- assert_raises(
+ pytest.raises(
AssertionError,
mg_globals.setup_globals,
- no_such_global_foo = "Dummy")
+ no_such_global_foo="Dummy")
diff --git a/mediagoblin/tests/test_http_callback.py b/mediagoblin/tests/test_http_callback.py
index 8bee7045..e2c85d0d 100644
--- a/mediagoblin/tests/test_http_callback.py
+++ b/mediagoblin/tests/test_http_callback.py
@@ -20,28 +20,27 @@ from urlparse import urlparse, parse_qs
from mediagoblin import mg_globals
from mediagoblin.tools import processing
-from mediagoblin.tests.tools import get_app, fixture_add_user
+from mediagoblin.tests.tools import fixture_add_user
from mediagoblin.tests.test_submission import GOOD_PNG
from mediagoblin.tests import test_oauth as oauth
class TestHTTPCallback(object):
- def setUp(self):
- self.app = get_app(dump_old_app=False)
+ def _setup(self, 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()
+ self.login(test_app)
- def login(self):
- self.app.post('/auth/login/', {
+ def login(self, testapp):
+ testapp.post('/auth/login/', {
'username': self.user.username,
'password': self.user_password})
- def get_access_token(self, client_id, client_secret, code):
- response = self.app.get('/oauth/access_token', {
+ def get_access_token(self, testapp, client_id, client_secret, code):
+ response = testapp.get('/oauth/access_token', {
'code': code,
'client_id': client_id,
'client_secret': client_secret})
@@ -50,13 +49,15 @@ class TestHTTPCallback(object):
return response_data['access_token']
- def test_callback(self):
+ def test_callback(self, test_app):
''' Test processing HTTP callback '''
+ self._setup(test_app)
self.oauth = oauth.TestOAuth()
- self.oauth.setUp()
+ self.oauth._setup(test_app)
- redirect, client_id = self.oauth.test_4_authorize_confidential_client()
+ redirect, client_id = self.oauth.test_4_authorize_confidential_client(
+ test_app)
code = parse_qs(urlparse(redirect.location).query)['code'][0]
@@ -65,11 +66,11 @@ class TestHTTPCallback(object):
client_secret = client.secret
- access_token = self.get_access_token(client_id, client_secret, code)
+ access_token = self.get_access_token(test_app, client_id, client_secret, code)
callback_url = 'https://foo.example?secrettestmediagoblinparam'
- res = self.app.post('/api/submit?client_id={0}&access_token={1}\
+ res = test_app.post('/api/submit?client_id={0}&access_token={1}\
&client_secret={2}'.format(
client_id,
access_token,
diff --git a/mediagoblin/tests/test_messages.py b/mediagoblin/tests/test_messages.py
index 4c0f3e2e..3ac917b0 100644
--- a/mediagoblin/tests/test_messages.py
+++ b/mediagoblin/tests/test_messages.py
@@ -15,18 +15,15 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from mediagoblin.messages import fetch_messages, add_message
-from mediagoblin.tests.tools import get_app
from mediagoblin.tools import template
-
-def test_messages():
+def test_messages(test_app):
"""
Added messages should show up in the request.session,
fetched messages should be the same as the added ones,
and fetching should clear the message list.
"""
- test_app = get_app(dump_old_app=False)
# Aquire a request object
test_app.get('/')
context = template.TEMPLATE_TEST_CONTEXT['mediagoblin/root.html']
diff --git a/mediagoblin/tests/test_misc.py b/mediagoblin/tests/test_misc.py
index ae5d7e50..755d863f 100644
--- a/mediagoblin/tests/test_misc.py
+++ b/mediagoblin/tests/test_misc.py
@@ -14,11 +14,78 @@
# 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 nose.tools import assert_equal
+from mediagoblin.db.base import Session
+from mediagoblin.db.models import User, MediaEntry, MediaComment
+from mediagoblin.tests.tools import fixture_add_user, fixture_media_entry
-from mediagoblin.tests.tools import get_app
-def test_404_for_non_existent():
- test_app = get_app(dump_old_app=False)
+def test_404_for_non_existent(test_app):
res = test_app.get('/does-not-exist/', expect_errors=True)
- assert_equal(res.status_int, 404)
+ assert res.status_int == 404
+
+
+def test_user_deletes_other_comments(test_app):
+ user_a = fixture_add_user(u"chris_a")
+ user_b = fixture_add_user(u"chris_b")
+
+ media_a = fixture_media_entry(uploader=user_a.id, save=False)
+ media_b = fixture_media_entry(uploader=user_b.id, save=False)
+ Session.add(media_a)
+ Session.add(media_b)
+ 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
+ cmt.content = u"Some Comment"
+ Session.add(cmt)
+
+ Session.flush()
+
+ usr_cnt1 = User.query.count()
+ med_cnt1 = MediaEntry.query.count()
+ cmt_cnt1 = MediaComment.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()
+
+ # One user deleted
+ assert usr_cnt2 == usr_cnt1 - 1
+ # One media gone
+ assert med_cnt2 == med_cnt1 - 1
+ # Three of four comments gone.
+ assert cmt_cnt2 == cmt_cnt1 - 3
+
+ User.query.get(user_b.id).delete()
+
+ usr_cnt2 = User.query.count()
+ med_cnt2 = MediaEntry.query.count()
+ cmt_cnt2 = MediaComment.query.count()
+
+ # All users gone
+ assert usr_cnt2 == usr_cnt1 - 2
+ # All media gone
+ assert med_cnt2 == med_cnt1 - 2
+ # All comments gone
+ assert cmt_cnt2 == cmt_cnt1 - 4
+
+
+def test_media_deletes_broken_attachment(test_app):
+ user_a = fixture_add_user(u"chris_a")
+
+ media = fixture_media_entry(uploader=user_a.id, save=False)
+ media.attachment_files.append(dict(
+ name=u"some name",
+ filepath=[u"does", u"not", u"exist"],
+ ))
+ Session.add(media)
+ Session.flush()
+
+ MediaEntry.query.get(media.id).delete()
+ User.query.get(user_a.id).delete()
diff --git a/mediagoblin/tests/test_modelmethods.py b/mediagoblin/tests/test_modelmethods.py
new file mode 100644
index 00000000..427aa47c
--- /dev/null
+++ b/mediagoblin/tests/test_modelmethods.py
@@ -0,0 +1,167 @@
+# 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/>.
+
+# Maybe not every model needs a test, but some models have special
+# methods, and so it makes sense to test them here.
+
+from mediagoblin.db.base import Session
+from mediagoblin.db.models import MediaEntry
+
+from mediagoblin.tests.tools import fixture_add_user
+
+import mock
+
+
+class FakeUUID(object):
+ hex = 'testtest-test-test-test-testtesttest'
+
+UUID_MOCK = mock.Mock(return_value=FakeUUID())
+
+
+class TestMediaEntrySlugs(object):
+ def _setup(self):
+ self.chris_user = fixture_add_user(u'chris')
+ self.emily_user = fixture_add_user(u'emily')
+ self.existing_entry = self._insert_media_entry_fixture(
+ title=u"Beware, I exist!",
+ slug=u"beware-i-exist")
+
+ def _insert_media_entry_fixture(self, title=None, slug=None, this_id=None,
+ uploader=None, save=True):
+ entry = MediaEntry()
+ entry.title = title or u"Some title"
+ entry.slug = slug
+ entry.id = this_id
+ entry.uploader = uploader or self.chris_user.id
+ entry.media_type = u'image'
+
+ if save:
+ entry.save()
+
+ return entry
+
+ def test_unique_slug_from_title(self, test_app):
+ self._setup()
+
+ entry = self._insert_media_entry_fixture(u"Totally unique slug!", save=False)
+ entry.generate_slug()
+ assert entry.slug == u'totally-unique-slug'
+
+ def test_old_good_unique_slug(self, test_app):
+ self._setup()
+
+ entry = self._insert_media_entry_fixture(
+ u"A title here", u"a-different-slug-there", save=False)
+ entry.generate_slug()
+ assert entry.slug == u"a-different-slug-there"
+
+ def test_old_weird_slug(self, test_app):
+ self._setup()
+
+ entry = self._insert_media_entry_fixture(
+ slug=u"wowee!!!!!", save=False)
+ entry.generate_slug()
+ assert entry.slug == u"wowee"
+
+ def test_existing_slug_use_id(self, test_app):
+ self._setup()
+
+ entry = self._insert_media_entry_fixture(
+ u"Beware, I exist!!", this_id=9000, save=False)
+ entry.generate_slug()
+ assert entry.slug == u"beware-i-exist-9000"
+
+ def test_existing_slug_cant_use_id(self, test_app):
+ self._setup()
+
+ # Getting tired of dealing with test_app and this mock.patch
+ # thing conflicting, getting lazy.
+ @mock.patch('uuid.uuid4', UUID_MOCK)
+ def _real_test():
+ # This one grabs the nine thousand slug
+ self._insert_media_entry_fixture(
+ slug=u"beware-i-exist-9000")
+
+ entry = self._insert_media_entry_fixture(
+ u"Beware, I exist!!", this_id=9000, save=False)
+ entry.generate_slug()
+ assert entry.slug == u"beware-i-exist-test"
+
+ _real_test()
+
+ def test_existing_slug_cant_use_id_extra_junk(self, test_app):
+ self._setup()
+
+ # Getting tired of dealing with test_app and this mock.patch
+ # thing conflicting, getting lazy.
+ @mock.patch('uuid.uuid4', UUID_MOCK)
+ def _real_test():
+ # This one grabs the nine thousand slug
+ self._insert_media_entry_fixture(
+ slug=u"beware-i-exist-9000")
+
+ # This one grabs makes sure the annoyance doesn't stop
+ self._insert_media_entry_fixture(
+ slug=u"beware-i-exist-test")
+
+ entry = self._insert_media_entry_fixture(
+ u"Beware, I exist!!", this_id=9000, save=False)
+ entry.generate_slug()
+ assert entry.slug == u"beware-i-exist-testtest"
+
+ _real_test()
+
+ def test_garbage_slug(self, test_app):
+ """
+ Titles that sound totally like Q*Bert shouldn't have slugs at
+ all. We'll just reference them by id.
+
+ ,
+ / \ (@!#?@!)
+ |\,/| ,-, /
+ | |#| ( ")~
+ / \|/ \ L L
+ |\,/|\,/|
+ | |#, |#|
+ / \|/ \|/ \
+ |\,/|\,/|\,/|
+ | |#| |#| |#|
+ / \|/ \|/ \|/ \
+ |\,/|\,/|\,/|\,/|
+ | |#| |#| |#| |#|
+ \|/ \|/ \|/ \|/
+ """
+ self._setup()
+
+ qbert_entry = self._insert_media_entry_fixture(
+ u"@!#?@!", save=False)
+ qbert_entry.generate_slug()
+ assert qbert_entry.slug is None
+
+
+def test_media_data_init(test_app):
+ Session.rollback()
+ Session.remove()
+ media = MediaEntry()
+ media.media_type = u"mediagoblin.media_types.image"
+ assert media.media_data is None
+ media.media_data_init()
+ assert media.media_data is not None
+ obj_in_session = 0
+ for obj in Session():
+ obj_in_session += 1
+ print repr(obj)
+ assert obj_in_session == 0
diff --git a/mediagoblin/tests/test_oauth.py b/mediagoblin/tests/test_oauth.py
index 94ba5dab..901556fe 100644
--- a/mediagoblin/tests/test_oauth.py
+++ b/mediagoblin/tests/test_oauth.py
@@ -21,15 +21,14 @@ from urlparse import parse_qs, urlparse
from mediagoblin import mg_globals
from mediagoblin.tools import template, pluginapi
-from mediagoblin.tests.tools import get_app, fixture_add_user
+from mediagoblin.tests.tools import fixture_add_user
_log = logging.getLogger(__name__)
class TestOAuth(object):
- def setUp(self):
- self.app = get_app()
+ def _setup(self, test_app):
self.db = mg_globals.database
self.pman = pluginapi.PluginManager()
@@ -37,17 +36,17 @@ class TestOAuth(object):
self.user_password = u'4cc355_70k3N'
self.user = fixture_add_user(u'joauth', self.user_password)
- self.login()
+ self.login(test_app)
- def login(self):
- self.app.post(
+ def login(self, test_app):
+ test_app.post(
'/auth/login/', {
'username': self.user.username,
'password': self.user_password})
- def register_client(self, name, client_type, description=None,
+ def register_client(self, test_app, name, client_type, description=None,
redirect_uri=''):
- return self.app.post(
+ return test_app.post(
'/oauth/client/register', {
'name': name,
'description': description,
@@ -57,9 +56,11 @@ class TestOAuth(object):
def get_context(self, template_name):
return template.TEMPLATE_TEST_CONTEXT[template_name]
- def test_1_public_client_registration_without_redirect_uri(self):
+ def test_1_public_client_registration_without_redirect_uri(self, test_app):
''' Test 'public' OAuth client registration without any redirect uri '''
- response = self.register_client(u'OMGOMGOMG', 'public',
+ self._setup(test_app)
+
+ response = self.register_client(test_app, u'OMGOMGOMG', 'public',
'OMGOMG Apache License v2')
ctx = self.get_context('oauth/client/register.html')
@@ -75,10 +76,10 @@ class TestOAuth(object):
# Should not pass through
assert not client
- def test_2_successful_public_client_registration(self):
+ def test_2_successful_public_client_registration(self, test_app):
''' Successfully register a public client '''
- self.login()
- self.register_client(u'OMGOMG', 'public', 'OMG!',
+ self._setup(test_app)
+ self.register_client(test_app, u'OMGOMG', 'public', 'OMG!',
'http://foo.example')
client = self.db.OAuthClient.query.filter(
@@ -87,9 +88,12 @@ class TestOAuth(object):
# Client should have been registered
assert client
- def test_3_successful_confidential_client_reg(self):
+ def test_3_successful_confidential_client_reg(self, test_app):
''' Register a confidential OAuth client '''
- response = self.register_client(u'GMOGMO', 'confidential', 'NO GMO!')
+ self._setup(test_app)
+
+ response = self.register_client(
+ test_app, u'GMOGMO', 'confidential', 'NO GMO!')
assert response.status_int == 302
@@ -101,15 +105,16 @@ class TestOAuth(object):
return client
- def test_4_authorize_confidential_client(self):
+ def test_4_authorize_confidential_client(self, test_app):
''' Authorize a confidential client as a logged in user '''
+ self._setup(test_app)
- client = self.test_3_successful_confidential_client_reg()
+ client = self.test_3_successful_confidential_client_reg(test_app)
client_identifier = client.identifier
redirect_uri = 'https://foo.example'
- response = self.app.get('/oauth/authorize', {
+ response = test_app.get('/oauth/authorize', {
'client_id': client.identifier,
'scope': 'admin',
'redirect_uri': redirect_uri})
@@ -122,7 +127,7 @@ class TestOAuth(object):
form = ctx['form']
# Short for client authorization post reponse
- capr = self.app.post(
+ capr = test_app.post(
'/oauth/client/authorize', {
'client_id': form.client_id.data,
'allow': 'Allow',
@@ -139,16 +144,19 @@ class TestOAuth(object):
def get_code_from_redirect_uri(self, uri):
return parse_qs(urlparse(uri).query)['code'][0]
- def test_token_endpoint_successful_confidential_request(self):
+ def test_token_endpoint_successful_confidential_request(self, test_app):
''' Successful request against token endpoint '''
- code_redirect, client_id = self.test_4_authorize_confidential_client()
+ self._setup(test_app)
+
+ code_redirect, client_id = self.test_4_authorize_confidential_client(
+ test_app)
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.app.get('/oauth/access_token?client_id={0}&\
+ token_res = test_app.get('/oauth/access_token?client_id={0}&\
code={1}&client_secret={2}'.format(client_id, code, client.secret))
assert token_res.status_int == 200
@@ -162,16 +170,19 @@ code={1}&client_secret={2}'.format(client_id, code, client.secret))
assert type(token_data['expires_in']) == int
assert token_data['expires_in'] > 0
- def test_token_endpont_missing_id_confidential_request(self):
+ def test_token_endpont_missing_id_confidential_request(self, test_app):
''' Unsuccessful request against token endpoint, missing client_id '''
- code_redirect, client_id = self.test_4_authorize_confidential_client()
+ self._setup(test_app)
+
+ code_redirect, client_id = self.test_4_authorize_confidential_client(
+ test_app)
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.app.get('/oauth/access_token?\
+ token_res = test_app.get('/oauth/access_token?\
code={0}&client_secret={1}'.format(code, client.secret))
assert token_res.status_int == 200
diff --git a/mediagoblin/tests/test_paste.ini b/mediagoblin/tests/test_paste.ini
index d7c18642..875b4f65 100644
--- a/mediagoblin/tests/test_paste.ini
+++ b/mediagoblin/tests/test_paste.ini
@@ -10,7 +10,7 @@ use = egg:Paste#urlmap
[app:mediagoblin]
use = egg:mediagoblin#app
filter-with = beaker
-config = %(here)s/test_mgoblin_app.ini
+config = %(here)s/mediagoblin.ini
[app:publicstore_serve]
use = egg:Paste#static
diff --git a/mediagoblin/tests/test_pluginapi.py b/mediagoblin/tests/test_pluginapi.py
index 315a95da..245c396d 100644
--- a/mediagoblin/tests/test_pluginapi.py
+++ b/mediagoblin/tests/test_pluginapi.py
@@ -19,7 +19,6 @@ from configobj import ConfigObj
from mediagoblin import mg_globals
from mediagoblin.init.plugins import setup_plugins
from mediagoblin.tools import pluginapi
-from nose.tools import eq_
def with_cleanup(*modules_to_delete):
@@ -97,7 +96,7 @@ def test_no_plugins():
setup_plugins()
# Make sure we didn't load anything.
- eq_(len(pman.plugins), 0)
+ assert len(pman.plugins) == 0
@with_cleanup('mediagoblin.plugins.sampleplugin')
@@ -117,14 +116,14 @@ def test_one_plugin():
setup_plugins()
# Make sure we only found one plugin
- eq_(len(pman.plugins), 1)
+ assert len(pman.plugins) == 1
# Make sure the plugin is the one we think it is.
- eq_(pman.plugins[0], 'mediagoblin.plugins.sampleplugin')
+ assert pman.plugins[0] == 'mediagoblin.plugins.sampleplugin'
# Make sure there was one hook registered
- eq_(len(pman.hooks), 1)
+ assert len(pman.hooks) == 1
# Make sure _setup_plugin_called was called once
import mediagoblin.plugins.sampleplugin
- eq_(mediagoblin.plugins.sampleplugin._setup_plugin_called, 1)
+ assert mediagoblin.plugins.sampleplugin._setup_plugin_called == 1
@with_cleanup('mediagoblin.plugins.sampleplugin')
@@ -145,14 +144,14 @@ def test_same_plugin_twice():
setup_plugins()
# Make sure we only found one plugin
- eq_(len(pman.plugins), 1)
+ assert len(pman.plugins) == 1
# Make sure the plugin is the one we think it is.
- eq_(pman.plugins[0], 'mediagoblin.plugins.sampleplugin')
+ assert pman.plugins[0] == 'mediagoblin.plugins.sampleplugin'
# Make sure there was one hook registered
- eq_(len(pman.hooks), 1)
+ assert len(pman.hooks) == 1
# Make sure _setup_plugin_called was called once
import mediagoblin.plugins.sampleplugin
- eq_(mediagoblin.plugins.sampleplugin._setup_plugin_called, 1)
+ assert mediagoblin.plugins.sampleplugin._setup_plugin_called == 1
@with_cleanup()
@@ -172,4 +171,4 @@ def test_disabled_plugin():
setup_plugins()
# Make sure we didn't load the plugin
- eq_(len(pman.plugins), 0)
+ assert len(pman.plugins) == 0
diff --git a/mediagoblin/tests/test_storage.py b/mediagoblin/tests/test_storage.py
index 61326ae9..294fec7d 100644
--- a/mediagoblin/tests/test_storage.py
+++ b/mediagoblin/tests/test_storage.py
@@ -18,7 +18,7 @@
import os
import tempfile
-from nose.tools import assert_raises, assert_equal, assert_true
+import pytest
from werkzeug.utils import secure_filename
from mediagoblin import storage
@@ -41,10 +41,8 @@ def test_clean_listy_filepath():
assert storage.clean_listy_filepath(
['../../../etc/', 'passwd']) == expected
- assert_raises(
- storage.InvalidFilepath,
- storage.clean_listy_filepath,
- ['../../', 'linooks.jpg'])
+ with pytest.raises(storage.InvalidFilepath):
+ storage.clean_listy_filepath(['../../', 'linooks.jpg'])
class FakeStorageSystem():
@@ -78,10 +76,10 @@ def test_storage_system_from_config():
'garbage_arg': 'garbage_arg',
'storage_class':
'mediagoblin.tests.test_storage:FakeStorageSystem'})
- assert_equal(this_storage.foobie, 'eiboof')
- assert_equal(this_storage.blech, 'hcelb')
- assert_equal(unicode(this_storage.__class__),
- u'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'
##########################
@@ -108,7 +106,7 @@ def test_basic_storage__resolve_filepath():
assert result == os.path.join(
tmpdir, 'etc/passwd')
- assert_raises(
+ pytest.raises(
storage.InvalidFilepath,
this_storage._resolve_filepath,
['../../', 'etc', 'passwd'])
@@ -205,7 +203,7 @@ def test_basic_storage_delete_file():
def test_basic_storage_url_for_file():
# Not supplying a base_url should actually just bork.
tmpdir, this_storage = get_tmp_filestorage()
- assert_raises(
+ pytest.raises(
storage.NoWebServing,
this_storage.file_url,
['dir1', 'dir2', 'filename.txt'])
diff --git a/mediagoblin/tests/test_submission.py b/mediagoblin/tests/test_submission.py
index 00f1ed3d..ac714252 100644
--- a/mediagoblin/tests/test_submission.py
+++ b/mediagoblin/tests/test_submission.py
@@ -21,12 +21,11 @@ sys.setdefaultencoding('utf-8')
import urlparse
import os
-from nose.tools import assert_equal, assert_true
from pkg_resources import resource_filename
-from mediagoblin.tests.tools import get_app, \
- fixture_add_user
+from mediagoblin.tests.tools import fixture_add_user
from mediagoblin import mg_globals
+from mediagoblin.db.models import MediaEntry
from mediagoblin.tools import template
from mediagoblin.media_types.image import MEDIA_MANAGER as img_MEDIA_MANAGER
@@ -40,6 +39,7 @@ EVIL_FILE = resource('evil')
EVIL_JPG = resource('evil.jpg')
EVIL_PNG = resource('evil.png')
BIG_BLUE = resource('bigblue.png')
+from .test_exif import GPS_JPG
GOOD_TAG_STRING = u'yin,yang'
BAD_TAG_STRING = unicode('rage,' + 'f' * 26 + 'u' * 26)
@@ -49,8 +49,8 @@ REQUEST_CONTEXT = ['mediagoblin/user_pages/user.html', 'request']
class TestSubmission:
- def setUp(self):
- self.test_app = get_app(dump_old_app=False)
+ def _setup(self, test_app):
+ self.test_app = test_app
# TODO: Possibly abstract into a decorator like:
# @as_authenticated_user('chris')
@@ -86,27 +86,29 @@ class TestSubmission:
def check_comments(self, request, media_id, count):
comments = request.db.MediaComment.find({'media_entry': media_id})
- assert_equal(count, len(list(comments)))
+ assert count == len(list(comments))
+
+ def test_missing_fields(self, test_app):
+ self._setup(test_app)
- def test_missing_fields(self):
# Test blank form
# ---------------
response, form = self.do_post({}, *FORM_CONTEXT)
- assert_equal(form.file.errors, [u'You must provide a file.'])
+ 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_equal(form.file.errors, [u'You must provide a file.'])
+ assert form.file.errors == [u'You must provide a file.']
def check_url(self, response, path):
- assert_equal(urlparse.urlsplit(response.location)[2], path)
+ assert urlparse.urlsplit(response.location)[2] == path
def check_normal_upload(self, title, filename):
response, context = self.do_post({'title': title}, do_follow=True,
**self.upload_data(filename))
self.check_url(response, '/u/{0}/'.format(self.test_user.username))
- assert_true('mediagoblin/user_pages/user.html' in context)
+ assert 'mediagoblin/user_pages/user.html' in context
# Make sure the media view is at least reachable, logged in...
url = '/u/{0}/m/{1}/'.format(self.test_user.username,
title.lower().replace(' ', '-'))
@@ -115,21 +117,25 @@ class TestSubmission:
self.logout()
self.test_app.get(url)
- def test_normal_jpg(self):
+ def test_normal_jpg(self, test_app):
+ self._setup(test_app)
self.check_normal_upload(u'Normal upload 1', GOOD_JPG)
- def test_normal_png(self):
+ def test_normal_png(self, test_app):
+ self._setup(test_app)
self.check_normal_upload(u'Normal upload 2', GOOD_PNG)
def check_media(self, request, find_data, count=None):
- media = request.db.MediaEntry.find(find_data)
+ media = MediaEntry.find(find_data)
if count is not None:
- assert_equal(media.count(), count)
+ assert media.count() == count
if count == 0:
return
return media[0]
- def test_tags(self):
+ def test_tags(self, test_app):
+ self._setup(test_app)
+
# Good tag string
# --------
response, request = self.do_post({'title': u'Balanced Goblin 2',
@@ -149,12 +155,14 @@ class TestSubmission:
'tags': BAD_TAG_STRING},
*FORM_CONTEXT,
**self.upload_data(GOOD_JPG))
- assert_equal(form.tags.errors, [
+ assert form.tags.errors == [
u'Tags must be shorter than 50 characters. ' \
'Tags that are too long: ' \
- 'ffffffffffffffffffffffffffuuuuuuuuuuuuuuuuuuuuuuuuuu'])
+ 'ffffffffffffffffffffffffffuuuuuuuuuuuuuuuuuuuuuuuuuu']
+
+ def test_delete(self, test_app):
+ self._setup(test_app)
- def test_delete(self):
response, request = self.do_post({'title': u'Balanced Goblin'},
*REQUEST_CONTEXT, do_follow=True,
**self.upload_data(GOOD_JPG))
@@ -171,7 +179,7 @@ class TestSubmission:
'slug': u"Balanced=Goblin",
'tags': u''})
media = self.check_media(request, {'title': u'Balanced Goblin'}, 1)
- assert_equal(media.slug, u"balanced-goblin")
+ assert media.slug == u"balanced-goblin"
# Add a comment, so we can test for its deletion later.
self.check_comments(request, media_id, 0)
@@ -199,33 +207,39 @@ class TestSubmission:
self.check_media(request, {'id': media_id}, 0)
self.check_comments(request, media_id, 0)
- def test_evil_file(self):
+ def test_evil_file(self, test_app):
+ self._setup(test_app)
+
# Test non-suppoerted file with non-supported extension
# -----------------------------------------------------
response, form = self.do_post({'title': u'Malicious Upload 1'},
*FORM_CONTEXT,
**self.upload_data(EVIL_FILE))
- assert_equal(len(form.file.errors), 1)
+ assert len(form.file.errors) == 1
assert 'Sorry, I don\'t support that file type :(' == \
str(form.file.errors[0])
- def test_get_media_manager(self):
+ def test_get_media_manager(self, test_app):
"""Test if the get_media_manger function returns sensible things
"""
+ self._setup(test_app)
+
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)
- assert_equal(media.media_type, u'mediagoblin.media_types.image')
- assert_equal(media.media_manager, img_MEDIA_MANAGER)
+ assert media.media_type == u'mediagoblin.media_types.image'
+ assert media.media_manager == img_MEDIA_MANAGER
- def test_sniffing(self):
+ def test_sniffing(self, test_app):
'''
Test sniffing mechanism to assert that regular uploads work as intended
'''
+ self._setup(test_app)
+
template.clear_test_template_context()
response = self.test_app.post(
'/submit/', {
@@ -252,20 +266,36 @@ class TestSubmission:
**self.upload_data(filename))
self.check_url(response, '/u/{0}/'.format(self.test_user.username))
entry = mg_globals.database.MediaEntry.find_one({'title': title})
- assert_equal(entry.state, 'failed')
- assert_equal(entry.fail_error, u'mediagoblin.processing:BadMediaFail')
+ assert entry.state == 'failed'
+ assert entry.fail_error == u'mediagoblin.processing:BadMediaFail'
+
+ def test_evil_jpg(self, test_app):
+ self._setup(test_app)
- def test_evil_jpg(self):
# Test non-supported file with .jpg extension
# -------------------------------------------
self.check_false_image(u'Malicious Upload 2', EVIL_JPG)
- def test_evil_png(self):
+ def test_evil_png(self, test_app):
+ self._setup(test_app)
+
# Test non-supported file with .png extension
# -------------------------------------------
self.check_false_image(u'Malicious Upload 3', EVIL_PNG)
- def test_processing(self):
+ def test_media_data(self, test_app):
+ self._setup(test_app)
+
+ 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
+
+ def test_processing(self, test_app):
+ self._setup(test_app)
+
+ public_store_dir = mg_globals.global_config[
+ 'storage:publicstore']['base_dir']
+
data = {'title': u'Big Blue'}
response, request = self.do_post(data, *REQUEST_CONTEXT, do_follow=True,
**self.upload_data(BIG_BLUE))
@@ -275,12 +305,11 @@ class TestSubmission:
('medium', 'bigblue.medium.png'),
('thumb', 'bigblue.thumbnail.png')):
# Does the processed image have a good filename?
- filename = resource_filename(
- 'mediagoblin.tests',
- os.path.join('test_user_dev/media/public',
- *media.media_files.get(key, [])))
- assert_true(filename.endswith('_' + basename))
+ filename = os.path.join(
+ public_store_dir,
+ *media.media_files.get(key, []))
+ assert filename.endswith('_' + basename)
# Is it smaller than the last processed image we looked at?
size = os.stat(filename).st_size
- assert_true(last_size > size)
+ assert last_size > size
last_size = size
diff --git a/mediagoblin/tests/test_submission/evil b/mediagoblin/tests/test_submission/evil
index 775da664..2c850e29 100755
--- a/mediagoblin/tests/test_submission/evil
+++ b/mediagoblin/tests/test_submission/evil
Binary files differ
diff --git a/mediagoblin/tests/test_submission/evil.jpg b/mediagoblin/tests/test_submission/evil.jpg
index 775da664..2c850e29 100755
--- a/mediagoblin/tests/test_submission/evil.jpg
+++ b/mediagoblin/tests/test_submission/evil.jpg
Binary files differ
diff --git a/mediagoblin/tests/test_submission/evil.png b/mediagoblin/tests/test_submission/evil.png
index 775da664..2c850e29 100755
--- a/mediagoblin/tests/test_submission/evil.png
+++ b/mediagoblin/tests/test_submission/evil.png
Binary files differ
diff --git a/mediagoblin/tests/test_tags.py b/mediagoblin/tests/test_tags.py
index ccb93085..e25cc283 100644
--- a/mediagoblin/tests/test_tags.py
+++ b/mediagoblin/tests/test_tags.py
@@ -14,17 +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 mediagoblin.tests.tools import get_app
from mediagoblin.tools import text
-def test_list_of_dicts_conversion():
+def test_list_of_dicts_conversion(test_app):
"""
When the user adds tags to a media entry, the string from the form is
converted into a list of tags, where each tag is stored in the database
as a dict. Each tag dict should contain the tag's name and slug. Another
function performs the reverse operation when populating a form to edit tags.
"""
- test_app = get_app(dump_old_app=False)
# Leading, trailing, and internal whitespace should be removed and slugified
assert text.convert_to_tag_list_of_dicts('sleep , 6 AM, chainsaw! ') == [
{'name': u'sleep', 'slug': u'sleep'},
diff --git a/mediagoblin/tests/test_workbench.py b/mediagoblin/tests/test_workbench.py
index 636c8689..3b2fc2c6 100644
--- a/mediagoblin/tests/test_workbench.py
+++ b/mediagoblin/tests/test_workbench.py
@@ -25,7 +25,7 @@ from mediagoblin.tests.test_storage import get_tmp_filestorage
class TestWorkbench(object):
- def setUp(self):
+ def setup(self):
self.workbench_manager = workbench.WorkbenchManager(
os.path.join(tempfile.gettempdir(), u'mgoblin_workbench_testing'))
diff --git a/mediagoblin/tests/tools.py b/mediagoblin/tests/tools.py
index 18d4ec0c..f7025715 100644
--- a/mediagoblin/tests/tools.py
+++ b/mediagoblin/tests/tools.py
@@ -25,7 +25,7 @@ from paste.deploy import loadapp
from webtest import TestApp
from mediagoblin import mg_globals
-from mediagoblin.db.models import User, Collection
+from mediagoblin.db.models import User, MediaEntry, Collection
from mediagoblin.tools import testing
from mediagoblin.init.config import read_mediagoblin_config
from mediagoblin.db.open import setup_connection_and_db_from_config
@@ -43,16 +43,16 @@ TEST_APP_CONFIG = pkg_resources.resource_filename(
'mediagoblin.tests', 'test_mgoblin_app.ini')
TEST_USER_DEV = pkg_resources.resource_filename(
'mediagoblin.tests', 'test_user_dev')
-MGOBLIN_APP = None
+
USER_DEV_DIRECTORIES_TO_SETUP = [
'media/public', 'media/queue',
'beaker/sessions/data', 'beaker/sessions/lock']
BAD_CELERY_MESSAGE = """\
-Sorry, you *absolutely* must run nosetests with the
+Sorry, you *absolutely* must run tests with the
mediagoblin.init.celery.from_tests module. Like so:
-$ CELERY_CONFIG_MODULE=mediagoblin.init.celery.from_tests ./bin/nosetests"""
+$ CELERY_CONFIG_MODULE=mediagoblin.init.celery.from_tests ./bin/py.test"""
class BadCeleryEnviron(Exception): pass
@@ -103,7 +103,30 @@ def suicide_if_bad_celery_environ():
raise BadCeleryEnviron(BAD_CELERY_MESSAGE)
-def get_app(dump_old_app=True):
+def get_app(request, paste_config=None, mgoblin_config=None):
+ """Create a MediaGoblin app for testing.
+
+ Args:
+ - request: Not an http request, but a pytest fixture request. We
+ use this to make temporary directories that pytest
+ automatically cleans up as needed.
+ - paste_config: particular paste config used by this application.
+ - mgoblin_config: particular mediagoblin config used by this
+ application.
+ """
+ paste_config = paste_config or TEST_SERVER_CONFIG
+ mgoblin_config = mgoblin_config or TEST_APP_CONFIG
+
+ # This is the directory we're copying the paste/mgoblin config stuff into
+ run_dir = request.config._tmpdirhandler.mktemp(
+ 'mgoblin_app', numbered=True)
+ user_dev_dir = run_dir.mkdir('test_user_dev').strpath
+
+ new_paste_config = run_dir.join('paste.ini').strpath
+ new_mgoblin_config = run_dir.join('mediagoblin.ini').strpath
+ shutil.copyfile(paste_config, new_paste_config)
+ shutil.copyfile(mgoblin_config, new_mgoblin_config)
+
suicide_if_bad_celery_environ()
# Make sure we've turned on testing
@@ -112,26 +135,16 @@ def get_app(dump_old_app=True):
# Leave this imported as it sets up celery.
from mediagoblin.init.celery import from_tests
- global MGOBLIN_APP
-
- # Just return the old app if that exists and it's okay to set up
- # and return
- if MGOBLIN_APP and not dump_old_app:
- return MGOBLIN_APP
-
Session.rollback()
Session.remove()
- # Remove and reinstall user_dev directories
- if os.path.exists(TEST_USER_DEV):
- shutil.rmtree(TEST_USER_DEV)
-
+ # install user_dev directories
for directory in USER_DEV_DIRECTORIES_TO_SETUP:
- full_dir = os.path.join(TEST_USER_DEV, directory)
+ full_dir = os.path.join(user_dev_dir, directory)
os.makedirs(full_dir)
# Get app config
- global_config, validation_result = read_mediagoblin_config(TEST_APP_CONFIG)
+ global_config, validation_result = read_mediagoblin_config(new_mgoblin_config)
app_config = global_config['mediagoblin']
# Run database setup/migrations
@@ -139,7 +152,7 @@ def get_app(dump_old_app=True):
# setup app and return
test_app = loadapp(
- 'config:' + TEST_SERVER_CONFIG)
+ 'config:' + new_paste_config)
# Re-setup celery
setup_celery_app(app_config, global_config)
@@ -151,26 +164,10 @@ def get_app(dump_old_app=True):
mg_globals.app.meddleware.insert(0, TestingMeddleware(mg_globals.app))
app = TestApp(test_app)
- MGOBLIN_APP = app
return app
-def setup_fresh_app(func):
- """
- Decorator to setup a fresh test application for this function.
-
- Cleans out test buckets and passes in a new, fresh test_app.
- """
- @wraps(func)
- def wrapper(*args, **kwargs):
- test_app = get_app()
- testing.clear_test_buckets()
- return func(test_app, *args, **kwargs)
-
- return wrapper
-
-
def install_fixtures_simple(db, fixtures):
"""
Very simply install fixtures in the database
@@ -228,6 +225,22 @@ def fixture_add_user(username=u'chris', password=u'toast',
return test_user
+def fixture_media_entry(title=u"Some title", slug=None,
+ uploader=None, save=True, gen_slug=True):
+ entry = MediaEntry()
+ entry.title = title
+ entry.slug = slug
+ entry.uploader = uploader or fixture_add_user().id
+ entry.media_type = u'image'
+
+ if gen_slug:
+ entry.generate_slug()
+ if save:
+ entry.save()
+
+ return entry
+
+
def fixture_add_collection(name=u"My first Collection", user=None):
if user is None:
user = fixture_add_user()
diff --git a/mediagoblin/tools/common.py b/mediagoblin/tools/common.py
index c9f9d032..34586611 100644
--- a/mediagoblin/tools/common.py
+++ b/mediagoblin/tools/common.py
@@ -16,7 +16,6 @@
import sys
-DISPLAY_IMAGE_FETCHING_ORDER = [u'medium', u'original', u'thumb']
global TESTS_ENABLED
TESTS_ENABLED = False
diff --git a/mediagoblin/tools/exif.py b/mediagoblin/tools/exif.py
index 4a1afb0f..d0f9d0a6 100644
--- a/mediagoblin/tools/exif.py
+++ b/mediagoblin/tools/exif.py
@@ -14,7 +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/>.
-from mediagoblin.tools.extlib.EXIF import process_file, Ratio
+try:
+ from EXIF import process_file, Ratio
+except ImportError:
+ from mediagoblin.tools.extlib.EXIF import process_file, Ratio
+
from mediagoblin.processing import BadMediaFail
from mediagoblin.tools.translate import pass_to_ugettext as _
@@ -46,7 +50,10 @@ def exif_fix_image_orientation(im, exif_tags):
Translate any EXIF orientation to raw orientation
Cons:
- - REDUCES IMAGE QUALITY by recompressig it
+ - Well, it changes the image, which means we'll recompress
+ it... not a problem if scaling it down already anyway. We might
+ lose some quality in recompressing if it's at the same-size
+ though
Pros:
- Prevents neck pain
@@ -58,7 +65,7 @@ def exif_fix_image_orientation(im, exif_tags):
6: 270,
8: 90}
orientation = exif_tags['Image Orientation'].values[0]
- if orientation in rotation_map.keys():
+ if orientation in rotation_map:
im = im.rotate(
rotation_map[orientation])
@@ -69,16 +76,12 @@ def extract_exif(filename):
"""
Returns EXIF tags found in file at ``filename``
"""
- exif_tags = {}
-
try:
- image = open(filename)
- exif_tags = process_file(image, details=False)
+ with file(filename) as image:
+ return process_file(image, details=False)
except IOError:
raise BadMediaFail(_('Could not read the image file.'))
- return exif_tags
-
def clean_exif(exif):
'''
@@ -92,12 +95,8 @@ def clean_exif(exif):
'JPEGThumbnail',
'Thumbnail JPEGInterchangeFormat']
- clean_exif = {}
-
- for key, value in exif.items():
- if not key in disabled_tags:
- clean_exif[key] = _ifd_tag_to_dict(value)
- return clean_exif
+ return dict((key, _ifd_tag_to_dict(value)) for (key, value)
+ in exif.iteritems() if key not in disabled_tags)
def _ifd_tag_to_dict(tag):
@@ -118,13 +117,8 @@ def _ifd_tag_to_dict(tag):
data['printable'] = tag.printable.decode('utf8', 'replace')
if type(tag.values) == list:
- data['values'] = []
- for val in tag.values:
- if isinstance(val, Ratio):
- data['values'].append(
- _ratio_to_list(val))
- else:
- data['values'].append(val)
+ data['values'] = [_ratio_to_list(val) if isinstance(val, Ratio) else val
+ for val in tag.values]
else:
if isinstance(tag.values, str):
# Force UTF-8, so that it fits into the DB
@@ -140,12 +134,7 @@ def _ratio_to_list(ratio):
def get_useful(tags):
- useful = {}
- for key, tag in tags.items():
- if key in USEFUL_TAGS:
- useful[key] = tag
-
- return useful
+ return dict((key, tag) for (key, tag) in tags.iteritems() if key in USEFUL_TAGS)
def get_gps_data(tags):
@@ -162,7 +151,7 @@ def get_gps_data(tags):
'latitude': tags['GPS GPSLatitude'],
'longitude': tags['GPS GPSLongitude']}
- for key, dat in dms_data.items():
+ for key, dat in dms_data.iteritems():
gps_data[key] = (
lambda v:
float(v[0].num) / float(v[0].den) \
diff --git a/mediagoblin/tools/files.py b/mediagoblin/tools/files.py
index fd38f05e..848c86f2 100644
--- a/mediagoblin/tools/files.py
+++ b/mediagoblin/tools/files.py
@@ -37,7 +37,7 @@ def delete_media_files(media):
mg_globals.public_store.delete_file(
attachment['filepath'])
except OSError:
- no_such_files.append("/".join(attachment))
+ no_such_files.append("/".join(attachment['filepath']))
if no_such_files:
raise OSError(", ".join(no_such_files))
diff --git a/mediagoblin/tools/pluginapi.py b/mediagoblin/tools/pluginapi.py
index 38ab631b..784bede9 100644
--- a/mediagoblin/tools/pluginapi.py
+++ b/mediagoblin/tools/pluginapi.py
@@ -83,6 +83,9 @@ class PluginManager(object):
# list of registered template paths
"template_paths": set(),
+ # list of template hooks
+ "template_hooks": {},
+
# list of registered routes
"routes": [],
}
@@ -131,6 +134,18 @@ class PluginManager(object):
def get_routes(self):
return tuple(self.routes)
+ def register_template_hooks(self, template_hooks):
+ for hook, templates in template_hooks.items():
+ if isinstance(templates, (list, tuple)):
+ self.template_hooks.setdefault(hook, []).extend(list(templates))
+ else:
+ # In this case, it's actually a single callable---not a
+ # list of callables.
+ self.template_hooks.setdefault(hook, []).append(templates)
+
+ def get_template_hooks(self, hook_name):
+ return self.template_hooks.get(hook_name, [])
+
def register_routes(routes):
"""Registers one or more routes
@@ -208,3 +223,52 @@ def get_config(key):
return plugin_section.get(key, {})
+def register_template_hooks(template_hooks):
+ """
+ Register a dict of template hooks.
+
+ Takes template_hooks as an argument, which is a dictionary of
+ template hook names/keys to the templates they should provide.
+ (The value can either be a single template path or an iterable
+ of paths.)
+
+ Example:
+
+ .. code-block:: python
+
+ {"media_sidebar": "/plugin/sidemess/mess_up_the_side.html",
+ "media_descriptionbox": ["/plugin/sidemess/even_more_mess.html",
+ "/plugin/sidemess/so_much_mess.html"]}
+ """
+ PluginManager().register_template_hooks(template_hooks)
+
+
+def get_hook_templates(hook_name):
+ """
+ Get a list of hook templates for this hook_name.
+
+ Note: for the most part, you access this via a template tag, not
+ this method directly, like so:
+
+ .. code-block:: html+jinja
+
+ {% template_hook "media_sidebar" %}
+
+ ... which will include all templates for you, partly using this
+ method.
+
+ However, this method is exposed to templates, and if you wish, you
+ can iterate over templates in a template hook manually like so:
+
+ .. code-block:: html+jinja
+
+ {% for template_path in get_hook_templates("media_sidebar") %}
+ <div class="extra_structure">
+ {% include template_path %}
+ </div>
+ {% endfor %}
+
+ Returns:
+ A list of strings representing template paths.
+ """
+ return PluginManager().get_template_hooks(hook_name)
diff --git a/mediagoblin/tools/request.py b/mediagoblin/tools/request.py
index f7311fac..bc67b96f 100644
--- a/mediagoblin/tools/request.py
+++ b/mediagoblin/tools/request.py
@@ -25,7 +25,7 @@ def setup_user_in_request(request):
Examine a request and tack on a request.user parameter if that's
appropriate.
"""
- if not request.session.has_key('user_id'):
+ if 'user_id' not in request.session:
request.user = None
return
@@ -36,4 +36,3 @@ def setup_user_in_request(request):
# this session.
_log.warn("Killing session for user id %r", request.session['user_id'])
request.session.invalidate()
-
diff --git a/mediagoblin/tools/template.py b/mediagoblin/tools/template.py
index d9c6e654..74d811eb 100644
--- a/mediagoblin/tools/template.py
+++ b/mediagoblin/tools/template.py
@@ -15,14 +15,20 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from math import ceil
+
import jinja2
+from jinja2.ext import Extension
+from jinja2.nodes import Include, Const
+
from babel.localedata import exists
from werkzeug.urls import url_quote_plus
from mediagoblin import mg_globals
from mediagoblin import messages
+from mediagoblin import _version
from mediagoblin.tools import common
from mediagoblin.tools.translate import get_gettext_translation
+from mediagoblin.tools.pluginapi import get_hook_templates
from mediagoblin.meddleware.csrf import render_csrf_form_token
@@ -40,7 +46,7 @@ def get_jinja_env(template_loader, locale):
# If we have a jinja environment set up with this locale, just
# return that one.
- if SETUP_JINJA_ENVS.has_key(locale):
+ if locale in SETUP_JINJA_ENVS:
return SETUP_JINJA_ENVS[locale]
# jinja2.StrictUndefined will give exceptions on references
@@ -48,7 +54,9 @@ def get_jinja_env(template_loader, locale):
template_env = jinja2.Environment(
loader=template_loader, autoescape=True,
undefined=jinja2.StrictUndefined,
- extensions=['jinja2.ext.i18n', 'jinja2.ext.autoescape'])
+ extensions=[
+ 'jinja2.ext.i18n', 'jinja2.ext.autoescape',
+ TemplateHookExtension])
template_env.install_gettext_callables(
mg_globals.thread_scope.translations.ugettext,
@@ -61,9 +69,13 @@ def get_jinja_env(template_loader, locale):
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['version'] = _version.__version__
template_env.filters['urlencode'] = url_quote_plus
+ # allow for hooking up plugin templates
+ template_env.globals['get_hook_templates'] = get_hook_templates
+
if exists(locale):
SETUP_JINJA_ENVS[locale] = template_env
@@ -98,3 +110,30 @@ def render_template(request, template_path, context):
def clear_test_template_context():
global TEMPLATE_TEST_CONTEXT
TEMPLATE_TEST_CONTEXT = {}
+
+
+class TemplateHookExtension(Extension):
+ """
+ Easily loop through a bunch of templates from a template hook.
+
+ Use:
+ {% template_hook("comment_extras") %}
+
+ ... will include all templates hooked into the comment_extras section.
+ """
+
+ tags = set(["template_hook"])
+
+ def parse(self, parser):
+ includes = []
+ expr = parser.parse_expression()
+ lineno = expr.lineno
+ hook_name = expr.args[0].value
+
+ for template_name in get_hook_templates(hook_name):
+ includes.append(
+ parser.parse_import_context(
+ Include(Const(template_name), True, False, lineno=lineno),
+ True))
+
+ return includes
diff --git a/mediagoblin/tools/translate.py b/mediagoblin/tools/translate.py
index 96144538..1d37c4de 100644
--- a/mediagoblin/tools/translate.py
+++ b/mediagoblin/tools/translate.py
@@ -73,7 +73,7 @@ def get_locale_from_request(request):
"""
request_args = (request.args, request.form)[request.method=='POST']
- if request_args.has_key('lang'):
+ if 'lang' in request_args:
# User explicitely demanded a language, normalize lower_uppercase
target_lang = locale_to_lower_upper(request_args['lang'])
diff --git a/mediagoblin/tools/url.py b/mediagoblin/tools/url.py
index 8604ad5f..d9179f9e 100644
--- a/mediagoblin/tools/url.py
+++ b/mediagoblin/tools/url.py
@@ -25,7 +25,7 @@ except ImportError:
USING_TRANSLITCODEC = False
-_punct_re = re.compile(r'[\t !"#$%&\'()*\-/<=>?@\[\\\]^_`{|},.]+')
+_punct_re = re.compile(r'[\t !"#:$%&\'()*\-/<=>?@\[\\\]^_`{|},.]+')
def slugify(text, delim=u'-'):
diff --git a/mediagoblin/user_pages/forms.py b/mediagoblin/user_pages/forms.py
index c7398d84..e9746a6c 100644
--- a/mediagoblin/user_pages/forms.py
+++ b/mediagoblin/user_pages/forms.py
@@ -35,7 +35,9 @@ class ConfirmCollectionItemRemoveForm(wtforms.Form):
_('I am sure I want to remove this item from the collection'))
class MediaCollectForm(wtforms.Form):
- collection = QuerySelectField(allow_blank=True, blank_text=_('-- Select --'), get_label='title',)
+ collection = QuerySelectField(
+ _('Collection'),
+ allow_blank=True, blank_text=_('-- Select --'), get_label='title',)
note = wtforms.TextAreaField(
_('Include a note'),
[wtforms.validators.Optional()],)
diff --git a/mediagoblin/user_pages/routing.py b/mediagoblin/user_pages/routing.py
index 2b228355..9cb665b5 100644
--- a/mediagoblin/user_pages/routing.py
+++ b/mediagoblin/user_pages/routing.py
@@ -40,12 +40,17 @@ add_route('mediagoblin.user_pages.media_home.view_comment',
'/u/<string:user>/m/<string:media>/c/<int:comment>/',
'mediagoblin.user_pages.views:media_home')
+# User's tags gallery
+add_route('mediagoblin.user_pages.user_tag_gallery',
+ '/u/<string:user>/tag/<string:tag>/',
+ 'mediagoblin.user_pages.views:user_gallery')
+
add_route('mediagoblin.user_pages.atom_feed',
'/u/<string:user>/atom/',
'mediagoblin.user_pages.views:atom_feed')
add_route('mediagoblin.user_pages.media_collect',
- '/u/<string:user>/m/<string:media>/collect/',
+ '/u/<string:user>/m/<int:media_id>/collect/',
'mediagoblin.user_pages.views:media_collect')
add_route('mediagoblin.user_pages.collection_list',
@@ -82,5 +87,5 @@ add_route('mediagoblin.edit.edit_media',
'mediagoblin.edit.views:edit_media')
add_route('mediagoblin.edit.attachments',
- '/u/<string:user>/m/<string:media>/attachments/',
+ '/u/<string:user>/m/<int:media_id>/attachments/',
'mediagoblin.edit.views:edit_attachments')
diff --git a/mediagoblin/user_pages/views.py b/mediagoblin/user_pages/views.py
index dea47fbf..61c23f16 100644
--- a/mediagoblin/user_pages/views.py
+++ b/mediagoblin/user_pages/views.py
@@ -18,8 +18,8 @@ import logging
import datetime
from mediagoblin import messages, mg_globals
-from mediagoblin.db.models import (MediaEntry, Collection, CollectionItem,
- User)
+from mediagoblin.db.models import (MediaEntry, MediaTag, Collection,
+ CollectionItem, User)
from mediagoblin.tools.response import render_to_response, render_404, redirect
from mediagoblin.tools.translate import pass_to_ugettext as _
from mediagoblin.tools.pagination import Pagination
@@ -81,10 +81,17 @@ def user_home(request, page):
@uses_pagination
def user_gallery(request, page, url_user=None):
"""'Gallery' of a User()"""
+ tag = request.matchdict.get('tag', None)
cursor = MediaEntry.query.filter_by(
uploader=url_user.id,
state=u'processed').order_by(MediaEntry.created.desc())
+ # Filter potentially by tag too:
+ if tag:
+ cursor = cursor.filter(
+ MediaEntry.tags_helper.any(
+ MediaTag.slug == request.matchdict['tag']))
+
# Paginate gallery
pagination = Pagination(page, cursor)
media_entries = pagination()
@@ -97,7 +104,7 @@ def user_gallery(request, page, url_user=None):
return render_to_response(
request,
'mediagoblin/user_pages/gallery.html',
- {'user': url_user,
+ {'user': url_user, 'tag': tag,
'media_entries': media_entries,
'pagination': pagination})
@@ -173,7 +180,7 @@ def media_post_comment(request, media):
return redirect(request, location=media.url_for_self(request.urlgen))
-@get_user_media_entry
+@get_media_entry_by_id
@require_active_login
def media_collect(request, media):
"""Add media to collection submission"""
@@ -197,30 +204,31 @@ def media_collect(request, media):
# If we are here, method=POST and the form is valid, submit things.
# If the user is adding a new collection, use that:
- if request.form['collection_title']:
+ 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=request.form['collection_title']).first()
+ title=form.collection_title.data).first()
if existing_collection:
messages.add_message(request, messages.ERROR,
- _('You already have a collection called "%s"!'
- % collection.title))
+ _('You already have a collection called "%s"!')
+ % existing_collection.title)
return redirect(request, "mediagoblin.user_pages.media_home",
- user=request.user.username,
- media=media.id)
+ user=media.get_uploader.username,
+ media=media.slug_or_id)
collection = Collection()
- collection.title = request.form['collection_title']
- collection.description = request.form.get('collection_description')
+ collection.title = form.collection_title.data
+ collection.description = form.collection_description.data
collection.creator = request.user.id
collection.generate_slug()
collection.save()
# Otherwise, use the collection selected from the drop-down
else:
- collection = Collection.query.filter_by(
- id=request.form.get('collection')).first()
+ collection = form.collection.data
+ if collection and collection.creator != request.user.id:
+ collection = None
# Make sure the user actually selected a collection
if not collection:
@@ -229,7 +237,7 @@ def media_collect(request, media):
_('You have to select or add a collection'))
return redirect(request, "mediagoblin.user_pages.media_collect",
user=media.get_uploader.username,
- media=media.id)
+ media_id=media.id)
# Check whether media already exists in collection
@@ -237,14 +245,13 @@ def media_collect(request, media):
media_entry=media.id,
collection=collection.id).first():
messages.add_message(request, messages.ERROR,
- _('"%s" already in collection "%s"'
- % (media.title, collection.title)))
+ _('"%s" already in collection "%s"')
+ % (media.title, collection.title))
else: # Add item to collection
collection_item = request.db.CollectionItem()
collection_item.collection = collection.id
collection_item.media_entry = media.id
- collection_item.author = request.user.id
- collection_item.note = request.form['note']
+ collection_item.note = form.note.data
collection_item.save()
collection.items = collection.items + 1
@@ -254,12 +261,12 @@ def media_collect(request, media):
media.save()
messages.add_message(request, messages.SUCCESS,
- _('"%s" added to collection "%s"'
- % (media.title, collection.title)))
+ _('"%s" added to collection "%s"')
+ % (media.title, collection.title))
return redirect(request, "mediagoblin.user_pages.media_home",
user=media.get_uploader.username,
- media=media.id)
+ media=media.slug_or_id)
#TODO: Why does @user_may_delete_media not implicate @require_active_login?
@@ -309,6 +316,9 @@ def user_collection(request, page, url_user=None):
get_creator=url_user,
slug=request.matchdict['collection']).first()
+ if not collection:
+ return render_404(request)
+
cursor = collection.get_collection_items()
pagination = Pagination(page, cursor)
@@ -515,6 +525,8 @@ def collection_atom_feed(request):
collection = Collection.query.filter_by(
creator=user.id,
slug=request.matchdict['collection']).first()
+ if not collection:
+ return render_404(request)
cursor = CollectionItem.query.filter_by(
collection=collection.id) \
@@ -539,14 +551,16 @@ def collection_atom_feed(request):
'href': push_url})
feed = AtomFeed(
- "MediaGoblin: Feed for %s's collection %s" % (request.matchdict['user'], collection.title),
- feed_url=request.url,
- id='tag:{host},{year}:collection.user-{user}.title-{title}'.format(
- host=request.host,
- year=datetime.datetime.today().strftime('%Y'),
- user=request.matchdict['user'],
- title=collection.title),
- links=atomlinks)
+ "MediaGoblin: Feed for %s's collection %s" %
+ (request.matchdict['user'], collection.title),
+ feed_url=request.url,
+ id=u'tag:{host},{year}:gnu-mediagoblin.{user}.collection.{slug}'\
+ .format(
+ host=request.host,
+ year=collection.created.strftime('%Y'),
+ user=request.matchdict['user'],
+ slug=collection.slug),
+ links=atomlinks)
for item in cursor:
entry = item.get_media_entry
diff --git a/runtests.sh b/runtests.sh
index a4ceec2e..382e2fa6 100755
--- a/runtests.sh
+++ b/runtests.sh
@@ -26,37 +26,50 @@ then
exit 1
fi
-if [ -x "$basedir/bin/nosetests" ]; then
- export NOSETESTS="$basedir/bin/nosetests";
- echo "Using $NOSETESTS";
-elif which nosetests > /dev/null; then
- echo "Using nosetests from \$PATH";
- export NOSETESTS="nosetests";
+if [ -x "$basedir/bin/py.test" ]; then
+ export PYTEST="$basedir/bin/py.test";
+ echo "Using $PYTEST";
+elif which py.test > /dev/null; then
+ echo "Using py.test from \$PATH";
+ export PYTEST="py.test";
else
- echo "nosetests not found. X_X";
+ echo "py.test not found. X_X";
echo "Please install 'nose'. Exiting.";
exit 1
fi
+
+CELERY_CONFIG_MODULE=mediagoblin.init.celery.from_tests
+export CELERY_CONFIG_MODULE
+echo "+ CELERY_CONFIG_MODULE=$CELERY_CONFIG_MODULE"
+
+# Look to see if the user has specified a specific directory/file to
+# run tests out of. If not we'll need to pass along
+# mediagoblin/tests/ later very specifically. Otherwise py.test
+# will try to read all directories, and this turns into a mess!
+
need_arg=1
+ignore_next=0
for i in "$@"
do
+ if [ "$ignore_next" = 1 ]
+ then
+ ignore_next=0
+ continue
+ fi
case "$i" in
+ -n) ignore_next=1;;
-*) ;;
*) need_arg=0; break ;;
esac
done
-CELERY_CONFIG_MODULE=mediagoblin.init.celery.from_tests
-export CELERY_CONFIG_MODULE
-echo "+ CELERY_CONFIG_MODULE=$CELERY_CONFIG_MODULE"
-
if [ "$need_arg" = 1 ]
then
testdir="$basedir/mediagoblin/tests"
set -x
- exec "$NOSETESTS" "$@" "$testdir"
+ exec "$PYTEST" "$@" "$testdir" --boxed
else
set -x
- exec "$NOSETESTS" "$@"
+ exec "$PYTEST" "$@" --boxed
fi
diff --git a/setup.py b/setup.py
index 12284f26..4b983e3f 100644
--- a/setup.py
+++ b/setup.py
@@ -46,7 +46,8 @@ setup(
'beaker',
'wtforms',
'py-bcrypt',
- 'nose',
+ 'pytest',
+ 'pytest-xdist',
'werkzeug>=0.7',
'celery==2.5.3',
'kombu==2.1.7',
@@ -54,11 +55,12 @@ setup(
'sphinx',
'Babel',
'argparse',
- 'webtest',
+ 'webtest<2',
'ConfigObj',
'Markdown',
'sqlalchemy>=0.7.0',
'sqlalchemy-migrate',
+ 'mock',
## This is optional!
# 'translitcodec',
## For now we're expecting that users will install this from