diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 00000000..e6a7464c
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,6 @@
+[submodule "pdf.js"]
+ path = pdf.js
+ url = git://github.com/mozilla/pdf.js.git
+[submodule "extlib/pdf.js"]
+ path = extlib/pdf.js
+ url = git://github.com/mozilla/pdf.js.git
diff --git a/AUTHORS b/AUTHORS
index 76e16b86..b6dd1cf2 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -8,31 +8,60 @@ variety of different ways and this software wouldn't exist without them.
Thank you!
* Aaron Williamson
+* 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
* Deb Nicholson
+* Derek Moore
+* Duncan Paterson
* Elrond of Samba TNG
+* Emily O'Leary
+* Greg Grossmeier
* Jakob Kramer
* Jef van Schendel
+* Jessica Tallon
+* 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!
+
+
+We also are currently borrowing an image in
+mediagoblin/static/images/media_thumbs/image.png from the wonderful
+people at http://tango.freedesktop.org/ which is in the public
+domain... thanks Tango folks!
\ No newline at end of file
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 9300c698..0a39ce84 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -1,5 +1,11 @@
-recursive-include mediagoblin/templates *.html *.txt
-recursive-include mediagoblin/static *.js *.css *.png *.svg *.ico
-recursive-include mediagoblin/tests *.ini
+recursive-include mediagoblin/i18n *.mo
+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
similarity index 69%
rename from docs/source/siteadmin/codebase.rst
rename to docs/source/devel/codebase.rst
index 3ef91290..122a3297 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 `_.
+see `the wiki `_, and specifically, go
+through the
+`Hacking HOWTO `_
+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
@@ -45,7 +119,7 @@ Software Stack
* `Python `_: the language we're using to write
this
- * `Nose `_:
+ * `Py.Test `_:
for unit tests
* `virtualenv `_: for setting up an
@@ -65,13 +139,11 @@ Software Stack
`Paste Script `_: we'll use this for
configuring and launching the application
- * `WebOb `_: nice abstraction layer
+ * `werkzeug `_: nice abstraction layer
from HTTP requests, responses and WSGI bits
- * `Routes `_: for URL routing
-
- * `Beaker `_: for handling sessions and
- caching
+ * `itsdangerous `_:
+ for handling sessions
* `Jinja2 `_: the templating engine
@@ -109,52 +181,3 @@ Software Stack
* `JQuery `_: 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 `_, 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 `_ for details.
+
+
diff --git a/docs/source/devel/storage.rst b/docs/source/devel/storage.rst
new file mode 100644
index 00000000..215f9579
--- /dev/null
+++ b/docs/source/devel/storage.rst
@@ -0,0 +1,125 @@
+=========
+ Storage
+=========
+
+The storage systems attached to your app
+----------------------------------------
+
+Dynamic content: queue_store and public_store
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Two instances of the StorageInterface come attached to your app. These
+are:
+
++ **queue_store:** When a user submits a fresh piece of media for
+ their gallery, before the Processing stage, that piece of media sits
+ here in the queue_store. (It's possible that we'll rename this to
+ "private_store" and start storing more non-publicly-stored stuff in
+ the future...). This is a StorageInterface implementation
+ instance. Visitors to your site probably cannot see it... it isn't
+ designed to be seen, anyway.
+
++ **public_store:** After your media goes through processing it gets
+ moved to the public store. This is also a StorageInterface
+ implelementation, and is for stuff that's intended to be seen by
+ site visitors.
+
+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
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+On top of all that, there is some static media that comes bundled with your
+application. This stuff is kept in:
+
+ mediagoblin/static/
+
+These files are for mediagoblin base assets. Things like the CSS files,
+logos, etc. You can mount these at whatever location is appropriate to you
+(see the direct_remote_path option in the config file) so if your users
+are keeping their static assets at http://static.mgoblin.example.org/ but
+their actual site is at http://mgoblin.example.org/, you need to be able
+to get your static files in a where-it's-mounted agnostic way. There's a
+"staticdirector" attached to the request object. It's pretty easy to use;
+just look at this bit taken from the
+mediagoblin/templates/mediagoblin/base.html main template:
+
+
+
+see? Not too hard. As expected, if you configured direct_remote_path to be
+http://static.mgoblin.example.org/ you'll get back
+http://static.mgoblin.example.org/css/extlib/text.css just as you'd
+probably expect.
+
+StorageInterface and implementations
+------------------------------------
+
+The guts of StorageInterface and friends
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+So, the StorageInterface!
+
+So, the public and queue stores both use StorageInterface implementations
+... but what does that mean? It's not too hard.
+
+Open up:
+
+ mediagoblin/storage.py
+
+In here you'll see a couple of things. First of all, there's the
+StorageInterface class. What you'll see is that this is just a very simple
+python class. A few of the methods actually implement things, but for the
+most part, they don't. What really matters about this class is the
+docstrings. Each expected method is documented as to how it should be
+constructed. Want to make a new StorageInterface? Simply subclass it. Want
+to know how to use the methods of your storage system? Read these docs,
+they span all implementations.
+
+There are a couple of implementations of these classes bundled in
+storage.py as well. The most simple of these is BasicFileStorage, which is
+also the default storage system used. As expected, this stores files
+locally on your machine.
+
+There's also a CloudFileStorage system. This provides a mapping to
+[OpenStack's swift http://swift.openstack.org/] storage system (used by
+RackSpace Cloud files and etc).
+
+Between these two examples you should be able to get a pretty good idea of
+how to write your own storage systems, for storing data across your
+beowulf cluster of radioactive monkey brains, whatever.
+
+Writing code to store stuff
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+So what does coding for StorageInterface implementations actually look
+like? It's pretty simple, really. For one thing, the design is fairly
+inspired by [Django's file storage API
+https://docs.djangoproject.com/en/dev/ref/files/storage/]... with some
+differences.
+
+Basically, you access files on "file paths", which aren't exactly like
+unix file paths, but are close. If you wanted to store a file on a path
+like dir1/dir2/filename.jpg you'd actually write that file path like:
+
+['dir1', 'dir2', 'filename.jpg']
+
+This way we can be *sure* that each component is actually a component of
+the path that's expected... we do some filename cleaning on each component.
+
+Your StorageInterface should pass in and out "file like objects". In other
+words, they should provide .read() and .write() at minimum, and probably
+also .seek() and .close().
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/plugindocs/trim_whitespace.rst b/docs/source/plugindocs/trim_whitespace.rst
new file mode 100644
index 00000000..eb38e0e5
--- /dev/null
+++ b/docs/source/plugindocs/trim_whitespace.rst
@@ -0,0 +1 @@
+.. include:: ../../../mediagoblin/plugins/trim_whitespace/README.rst
diff --git a/docs/source/pluginwriter/api.rst b/docs/source/pluginwriter/api.rst
new file mode 100644
index 00000000..5e0568fd
--- /dev/null
+++ b/docs/source/pluginwriter/api.rst
@@ -0,0 +1,127 @@
+.. 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
+ .
+
+
+==========
+Plugin API
+==========
+
+This documents the general plugin API.
+
+Please note, at this point OUR PLUGIN HOOKS MAY AND WILL CHANGE.
+Authors are encouraged to develop plugins and work with the
+MediaGoblin community to keep them up to date, but this API will be a
+moving target for a few releases.
+
+Please check the release notes for updates!
+
+:mod:`pluginapi` Module
+-----------------------
+
+.. automodule:: mediagoblin.tools.pluginapi
+ :members: get_config, register_routes, register_template_path,
+ register_template_hooks, get_hook_templates,
+ hook_handle, hook_runall, hook_transform
+
+Configuration
+-------------
+
+Your plugin may define its own configuration defaults.
+
+Simply add to the directory of your plugin a config_spec.ini file. An
+example might look like::
+
+ [plugin_spec]
+ some_string = string(default="blork")
+ some_int = integer(default=50)
+
+This means that when people enable your plugin in their config you'll
+be able to provide defaults as well as type validation.
+
+
+Context Hooks
+-------------
+
+View specific hooks
++++++++++++++++++++
+
+You can hook up to almost any template called by any specific view
+fairly easily. As long as the view directly or indirectly uses the
+method ``render_to_response`` you can access the context via a hook
+that has a key in the format of the tuple::
+
+ (view_symbolic_name, view_template_path)
+
+Where the "view symbolic name" is the same parameter used in
+``request.urlgen()`` to look up the view. So say we're wanting to add
+something to the context of the user's homepage. We look in
+mediagoblin/user_pages/routing.py and see::
+
+ add_route('mediagoblin.user_pages.user_home',
+ '/u//',
+ 'mediagoblin.user_pages.views:user_home')
+
+Aha! That means that the name is ``mediagoblin.user_pages.user_home``.
+Okay, so then we look at the view at the
+``mediagoblin.user_pages.user_home`` method::
+
+ @uses_pagination
+ def user_home(request, page):
+ # [...] whole bunch of stuff here
+ return render_to_response(
+ request,
+ 'mediagoblin/user_pages/user.html',
+ {'user': user,
+ 'user_gallery_url': user_gallery_url,
+ 'media_entries': media_entries,
+ 'pagination': pagination})
+
+Nice! So the template appears to be
+``mediagoblin/user_pages/user.html``. Cool, that means that the key
+is::
+
+ ("mediagoblin.user_pages.user_home",
+ "mediagoblin/user_pages/user.html")
+
+The context hook uses ``hook_transform()`` so that means that if we're
+hooking into it, our hook will both accept one argument, ``context``,
+and should return that modified object, like so::
+
+ def add_to_user_home_context(context):
+ context['foo'] = 'bar'
+ return context
+
+ hooks = {
+ ("mediagoblin.user_pages.user_home",
+ "mediagoblin/user_pages/user.html"): add_to_user_home_context}
+
+
+Global context hooks
+++++++++++++++++++++
+
+If you need to add something to the context of *every* view, it is not
+hard; there are two hooks hook that also uses hook_transform (like the
+above) but make available what you are providing to *every* view.
+
+Note that there is a slight, but critical, difference between the two.
+
+The most general one is the ``'template_global_context'`` hook. This
+one is run only once, and is read into the global context... all views
+will get access to what are in this dict.
+
+The slightly more expensive but more powerful one is
+``'template_context_prerender'``. This one is not added to the global
+context... it is added to the actual context of each individual
+template render right before it is run! Because of this you also can
+do some powerful and crazy things, such as checking the request object
+or other parts of the context before passing them on.
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
+ .
+
+
+========
+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 a270c723..9bcc0637 100644
--- a/docs/source/siteadmin/deploying.rst
+++ b/docs/source/siteadmin/deploying.rst
@@ -32,6 +32,11 @@ GNU/Linux distro.
install. If instead you want to join in as a contributor, see our
`Hacking HOWTO `_ instead.
+ There are also many ways to install servers... for the sake of
+ simplicity, our instructions below describe installing with nginx.
+ For more recipes, including Apache, see
+ `our wiki `_.
+
Prepare System
--------------
@@ -165,7 +170,7 @@ And set up the in-package virtualenv::
If you have problems here, consider trying to install virtualenv
with the ``--distribute`` or ``--no-site-packages`` options. If
- your system's default Python is in the 3.x series you man need to
+ your system's default Python is in the 3.x series you may need to
run ``virtualenv`` with the ``--python=python2.7`` or
``--python=python2.6`` options.
@@ -173,22 +178,50 @@ The above provides an in-package install of ``virtualenv``. While this
is counter to the conventional ``virtualenv`` configuration, it is
more reliable and considerably easier to configure and illustrate. If
you're familiar with Python packaging you may consider deploying with
-your preferred the method.
+your preferred method.
Assuming you are going to deploy with FastCGI, you should also install
flup::
./bin/easy_install flup
+(Sometimes this breaks because flup's site is flakey. If it does for
+you, try)::
+
+ ./bin/easy_install https://pypi.python.org/pypi/flup/1.0.3.dev-20110405
+
This concludes the initial configuration of the development
environment. In the future, when you update your
codebase, you should also run::
./bin/python setup.py develop --upgrade && ./bin/gmg dbupdate
+Note: If you are running an active site, depending on your server
+configuration, you may need to stop it first or the dbupdate command
+may hang (and it's certainly a good idea to restart it after the
+update)
+
+
Deploy MediaGoblin Services
---------------------------
+Edit site configuration
+~~~~~~~~~~~~~~~~~~~~~~~
+
+A few basic properties must be set before MediaGoblin will work. First
+make a copy of ``mediagoblin.ini`` for editing so the original config
+file isn't lost::
+
+ cp mediagoblin.ini mediagoblin_local.ini
+
+Then:
+ - Set ``email_sender_address`` to the address you wish to be used as
+ the sender for system-generated emails
+ - Edit ``direct_remote_path``, ``base_dir``, and ``base_url`` if
+ your mediagoblin directory is not the root directory of your
+ vhost.
+
+
Configure MediaGoblin to use the PostgreSQL database
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -224,11 +257,11 @@ browser to confirm that the service is operable.
.. _webserver-config:
-Connect the Webserver to MediaGoblin with FastCGI
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-This section describes how to configure MediaGoblin to work via
-FastCGI. Our configuration example will use nginx, however, you may
+FastCGI and nginx
+~~~~~~~~~~~~~~~~~
+
+This configuration example will use nginx, however, you may
use any webserver of your choice as long as it supports the FastCGI
protocol. If you do not already have a web server, consider nginx, as
the configuration files may be more clear than the
@@ -271,6 +304,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;
@@ -325,3 +362,24 @@ Visit the site you've set up in your browser by visiting
smaller deployments. However, for larger production deployments
with larger processing requirements, see the
":doc:`production-deployments`" documentation.
+
+
+Apache
+~~~~~~
+
+Instructions and scripts for running MediaGoblin on an Apache server
+can be found on the `MediaGoblin wiki `_.
+
+
+Security Considerations
+~~~~~~~~~~~~~~~~~~~~~~~
+
+.. warning::
+
+ The directory ``user_dev/crypto/`` contains some very
+ sensitive files.
+ Especially the ``itsdangeroussecret.bin`` is very important
+ for session security. Make sure not to leak its contents anywhere.
+ If the contents gets leaked nevertheless, delete your file
+ and restart the server, so that it creates a new secret key.
+ All previous sessions will be invalifated then.
diff --git a/docs/source/siteadmin/media-types.rst b/docs/source/siteadmin/media-types.rst
index 5653217f..210094b9 100644
--- a/docs/source/siteadmin/media-types.rst
+++ b/docs/source/siteadmin/media-types.rst
@@ -43,6 +43,15 @@ video media types, then the list would look like this::
media_types = mediagoblin.media_types.image, mediagoblin.media_types.video
+Note that after enabling new media types, you must run dbupdate like so::
+
+ ./bin/gmg dbupdate
+
+If you are running an active site, depending on your server
+configuration, you may need to stop it first (and it's certainly a
+good idea to restart it after the update).
+
+
How does MediaGoblin decide which media type to use for a file?
===============================================================
@@ -62,12 +71,27 @@ 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
+
+.. code-block:: bash
+
+ ./bin/gmg dbupdate
+
Now you should be able to submit videos, and mediagoblin should
transcode them.
@@ -92,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
@@ -108,8 +134,15 @@ Then install ``scikits.audiolab`` for the spectrograms::
./bin/pip install scikits.audiolab
Add ``mediagoblin.media_types.audio`` to the ``media_types`` list in your
-``mediagoblin_local.ini`` and restart MediaGoblin. You should now be able to
-upload and listen to audio files!
+``mediagoblin_local.ini`` and restart MediaGoblin.
+
+Run
+
+.. code-block:: bash
+
+ ./bin/gmg dbupdate
+
+You should now be able to upload and listen to audio files!
Ascii art
@@ -117,7 +150,9 @@ Ascii art
To enable ascii art support, first install the
`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
@@ -131,4 +166,69 @@ the list would look like this::
media_types = mediagoblin.media_types.image, mediagoblin.media_types.ascii
+Run
+
+.. code-block:: bash
+
+ ./bin/gmg dbupdate
+
Now any .txt file you uploaded will be processed as ascii art!
+
+
+STL / 3d model support
+======================
+
+To enable the "STL" 3d model support plugin, first make sure you have
+a recentish `Blender `_ installed and available on
+your execution path. This feature has been tested with Blender 2.63.
+It may work on some earlier versions, but that is not guaranteed (and
+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
+
+.. code-block:: bash
+
+ ./bin/gmg dbupdate
+
+You should now be able to upload .obj and .stl files and MediaGoblin
+will be able to present them to your wide audience of admirers!
+
+PDF and Document
+================
+
+To enable the "PDF and Document" support plugin, you need pdftocairo, pdfinfo,
+unoconv with headless support. All executables must be on your execution path.
+
+To install this on Fedora:
+
+.. code-block:: bash
+
+ sudo yum install -y poppler-utils unoconv libreoffice-headless
+
+pdf.js relies on git submodules, so be sure you have fetched them:
+
+.. code-block:: bash
+
+ git submodule init
+ git submodule update
+
+This feature has been tested on Fedora with:
+ poppler-utils-0.20.2-9.fc18.x86_64
+ unoconv-0.5-2.fc18.noarch
+ libreoffice-headless-3.6.5.2-8.fc18.x86_64
+
+It may work on some earlier versions, but that is not guaranteed.
+
+Add ``mediagoblin.media_types.pdf`` to the ``media_types`` list in your
+``mediagoblin_local.ini`` and restart MediaGoblin.
+
+Run
+
+.. code-block:: bash
+
+ ./bin/gmg dbupdate
+
+
diff --git a/docs/source/siteadmin/plugins.rst b/docs/source/siteadmin/plugins.rst
index 75562d4b..baca381d 100644
--- a/docs/source/siteadmin/plugins.rst
+++ b/docs/source/siteadmin/plugins.rst
@@ -44,29 +44,33 @@ If the plugin is available on the `Python Package Index
pip install
For example, if we wanted to install the plugin named
-"mediagoblin-restrictfive", we would do::
+"mediagoblin-licenses" (which allows you to customize the licenses you
+offer for your media), we would do::
- pip install mediagoblin-restrictfive
+ pip install mediagoblin-licenses
.. Note::
If you're using a virtual environment, make sure to activate the
- virtual environment before installing with pip. Otherwise the
- plugin may get installed in a different environment than the one
- MediaGoblin is installed in.
+ virtual environment before installing with pip. Otherwise the plugin
+ may get installed in a different environment than the one MediaGoblin
+ is installed in. Also make sure, you use e.g. pip-2.7 if your default
+ python (and thus pip) is python 3 (e.g. in Ubuntu).
Once you've installed the plugin software, you need to tell
MediaGoblin that this is a plugin you want MediaGoblin to use. To do
that, you edit the ``mediagoblin.ini`` file and add the plugin as a
subsection of the plugin section.
-For example, say the "mediagoblin-restrictfive" plugin had the Python
-package path ``restrictfive``, then you would add ``restrictfive`` to
+For example, say the "mediagoblin-licenses" plugin has the Python
+package path ``mediagoblin_licenses``, then you would add ``mediagoblin_licenses`` to
the ``plugins`` section as a subsection::
[plugins]
- [[restrictfive]]
+ [[mediagoblin_licenses]]
+ license_01=abbrev1, name1, http://url1
+ license_02=abbrev2, name1, http://url2
Configuring plugins
@@ -112,7 +116,7 @@ Removing plugins
To remove a plugin, use ``pip uninstall``. For example::
- pip uninstall mediagoblin-restrictfive
+ pip uninstall mediagoblin-licenses
.. Note::
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 1b70b31c..04863ec6 100644
--- a/docs/source/siteadmin/relnotes.rst
+++ b/docs/source/siteadmin/relnotes.rst
@@ -19,6 +19,166 @@ 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.
+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 `_
+(IRC is often best).
+
+**New features**
+
+* 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 requiring the "webob" package anymore.
+
+* And many small fixes/improvements, too numerous to list!
+
+
+0.3.2
+=====
+
+This will be the last release that is capable of converting from an earlier
+MongoDB-based MediaGoblin instance to the newer SQL-based system.
+
+**Do this to upgrade**
+
+ # directory of your mediagoblin install
+ cd /srv/mediagoblin.example.org
+
+ # copy source for this release
+ git fetch
+ git checkout tags/v0.3.2
+
+ # perform any needed database updates
+ bin/gmg dbupdate
+
+ # restart your servers however you do that, e.g.,
+ sudo service mediagoblin-paster restart
+ sudo service mediagoblin-celeryd restart
+
+
+**New features**
+
+* **3d model support!**
+
+ You can now upload STL and OBJ files and display them in
+ MediaGoblin. Requires a recent-ish Blender; for details see:
+ :ref:`deploying-chapter`
+
+* **trim_whitespace**
+
+ We bundle the optional plugin trim_whitespace which reduces the size
+ of the delivered html output by reducing redundant whitespace.
+
+ See :ref:`core-plugin-section` for plugin documentation
+
+* **A new API!**
+
+ It isn't well documented yet but we do have an API. There is an
+ `android application in progress `_
+ which makes use of it, and there are some demo applications between
+ `automgtic `_, an
+ automatic media uploader for your desktop
+ and `OMGMG `_, an example of
+ a web application hooking up to the API.
+
+ This is a plugin, so you have to enable it in your mediagoblin
+ config file by adding a section under [plugins] like::
+
+ [plugins]
+ [[mediagoblin.plugins.api]]
+
+ Note that the API works but is not nailed down... the way it is
+ called may change in future releases.
+
+* **OAuth login support**
+
+ For applications that use OAuth to connect to the API.
+
+ This is a plugin, so you have to enable it in your mediagoblin
+ config file by adding a section under [plugins] like::
+
+ [plugins]
+ [[mediagoblin.plugins.oauth]]
+
+* **Collections**
+
+ We now have user-curated collections support. These are arbitrary
+ galleries that are customizable by users. You can add media to
+ these by clicking on the paperclip icon when logged in and looking
+ at a media entry.
+
+* **OpenStreetMap licensing display improvements**
+
+ More accurate display of OSM licensing, and less disruptive: you
+ click to "expand" the display of said licensing.
+
+ Geolocation is also now on by default.
+
+* **Miscelaneous visual improvements**
+
+ We've made a number of small visual improvements including newer and
+ nicer looking thumbnails and improved checkbox placement.
+
+
0.3.1
=====
diff --git a/extlib/README b/extlib/README
index c690beac..45ee5b46 100644
--- a/extlib/README
+++ b/extlib/README
@@ -17,7 +17,7 @@ unwittingly interfere with other software that depends on the
canonical release versions of those same libraries!
Forking upstream software for trivial reasons makes us bad citizens in
-the Open Source community and adds unnecessary heartache for our
+the Free Software community and adds unnecessary heartache for our
users. Don't make us "that" project.
@@ -63,6 +63,19 @@ FAQ
This is a last resort; consult with the rest of the dev group
before taking this radical step.
+:Q: What about submodules?
+
+:A: pdf.js is supplied as a submodule, and other software may use that too,
+ to add a new submodule:
+ git submodule add extlib/fun-project
+
+ Use it just like a snapshotted extlib directory. When a new clone of mediagoblin
+ is made you need to run
+
+ git submodule init
+ git submodule update
+
+ As noted in HackingHowto
Thanks
======
diff --git a/extlib/exif/EXIF.py b/extlib/exif/EXIF.py
index ed4192af..a188154e 100755
--- a/extlib/exif/EXIF.py
+++ b/extlib/exif/EXIF.py
@@ -1,8 +1,10 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
-# Library to extract EXIF information from digital camera image files
-# http://sourceforge.net/projects/exif-py/
+#
+# Library to extract EXIF information from digital camera image files.
+# https://github.com/ianare/exif-py
+#
#
# VERSION 1.1.0
#
@@ -22,7 +24,6 @@
#
# These 2 are useful when you are retrieving a large list of images
#
-#
# To return an error on invalid tags,
# pass the -s or --strict argument, or as
# tags = EXIF.process_file(f, strict=True)
@@ -48,7 +49,7 @@
# 'EXIF DateTimeOriginal', 'Image Orientation', 'MakerNote FocusMode'
#
# Copyright (c) 2002-2007 Gene Cash All rights reserved
-# Copyright (c) 2007-2008 Ianaré Sévi All rights reserved
+# Copyright (c) 2007-2012 Ianaré Sévi All rights reserved
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
@@ -102,7 +103,7 @@ def make_string_uc(seq):
seq = seq[8:]
# Of course, this is only correct if ASCII, and the standard explicitly
# allows JIS and Unicode.
- return make_string(seq)
+ return make_string( make_string(seq) )
# field type descriptions as (length, abbreviation, full name) tuples
FIELD_TYPES = (
@@ -171,9 +172,9 @@ EXIF_TAGS = {
3: 'Rotated 180',
4: 'Mirrored vertical',
5: 'Mirrored horizontal then rotated 90 CCW',
- 6: 'Rotated 90 CW',
+ 6: 'Rotated 90 CCW',
7: 'Mirrored horizontal then rotated 90 CW',
- 8: 'Rotated 90 CCW'}),
+ 8: 'Rotated 90 CW'}),
0x0115: ('SamplesPerPixel', ),
0x0116: ('RowsPerStrip', ),
0x0117: ('StripByteCounts', ),
@@ -251,40 +252,54 @@ EXIF_TAGS = {
2: 'CenterWeightedAverage',
3: 'Spot',
4: 'MultiSpot',
- 5: 'Pattern'}),
+ 5: 'Pattern',
+ 6: 'Partial',
+ 255: 'other'}),
0x9208: ('LightSource',
{0: 'Unknown',
1: 'Daylight',
2: 'Fluorescent',
- 3: 'Tungsten',
- 9: 'Fine Weather',
- 10: 'Flash',
+ 3: 'Tungsten (incandescent light)',
+ 4: 'Flash',
+ 9: 'Fine weather',
+ 10: 'Cloudy weather',
11: 'Shade',
- 12: 'Daylight Fluorescent',
- 13: 'Day White Fluorescent',
- 14: 'Cool White Fluorescent',
- 15: 'White Fluorescent',
- 17: 'Standard Light A',
- 18: 'Standard Light B',
- 19: 'Standard Light C',
+ 12: 'Daylight fluorescent (D 5700 - 7100K)',
+ 13: 'Day white fluorescent (N 4600 - 5400K)',
+ 14: 'Cool white fluorescent (W 3900 - 4500K)',
+ 15: 'White fluorescent (WW 3200 - 3700K)',
+ 17: 'Standard light A',
+ 18: 'Standard light B',
+ 19: 'Standard light C',
20: 'D55',
21: 'D65',
22: 'D75',
- 255: 'Other'}),
+ 23: 'D50',
+ 24: 'ISO studio tungsten',
+ 255: 'other light source',}),
0x9209: ('Flash',
- {0: 'No',
- 1: 'Fired',
- 5: 'Fired (?)', # no return sensed
- 7: 'Fired (!)', # return sensed
- 9: 'Fill Fired',
- 13: 'Fill Fired (?)',
- 15: 'Fill Fired (!)',
- 16: 'Off',
- 24: 'Auto Off',
- 25: 'Auto Fired',
- 29: 'Auto Fired (?)',
- 31: 'Auto Fired (!)',
- 32: 'Not Available'}),
+ {0: 'Flash did not fire',
+ 1: 'Flash fired',
+ 5: 'Strobe return light not detected',
+ 7: 'Strobe return light detected',
+ 9: 'Flash fired, compulsory flash mode',
+ 13: 'Flash fired, compulsory flash mode, return light not detected',
+ 15: 'Flash fired, compulsory flash mode, return light detected',
+ 16: 'Flash did not fire, compulsory flash mode',
+ 24: 'Flash did not fire, auto mode',
+ 25: 'Flash fired, auto mode',
+ 29: 'Flash fired, auto mode, return light not detected',
+ 31: 'Flash fired, auto mode, return light detected',
+ 32: 'No flash function',
+ 65: 'Flash fired, red-eye reduction mode',
+ 69: 'Flash fired, red-eye reduction mode, return light not detected',
+ 71: 'Flash fired, red-eye reduction mode, return light detected',
+ 73: 'Flash fired, compulsory flash mode, red-eye reduction mode',
+ 77: 'Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected',
+ 79: 'Flash fired, compulsory flash mode, red-eye reduction mode, return light detected',
+ 89: 'Flash fired, auto mode, red-eye reduction mode',
+ 93: 'Flash fired, auto mode, return light not detected, red-eye reduction mode',
+ 95: 'Flash fired, auto mode, return light detected, red-eye reduction mode'}),
0x920A: ('FocalLength', ),
0x9214: ('SubjectArea', ),
0x927C: ('MakerNote', ),
@@ -410,7 +425,10 @@ GPS_TAGS = {
0x0018: ('GPSDestBearing', ),
0x0019: ('GPSDestDistanceRef', ),
0x001A: ('GPSDestDistance', ),
+ 0x001B: ('GPSProcessingMethod', ),
+ 0x001C: ('GPSAreaInformation', ),
0x001D: ('GPSDate', ),
+ 0x001E: ('GPSDifferential', ),
}
# Ignore these tags when quick processing
@@ -1231,10 +1249,17 @@ class IFD_Tag:
return self.printable
def __repr__(self):
- return '(0x%04X) %s=%s @ %d' % (self.tag,
+ try:
+ s= '(0x%04X) %s=%s @ %d' % (self.tag,
FIELD_TYPES[self.field_type][2],
self.printable,
self.field_offset)
+ except:
+ s= '(%s) %s=%s @ %s' % (str(self.tag),
+ FIELD_TYPES[self.field_type][2],
+ self.printable,
+ str(self.field_offset))
+ return s
# class that handles an EXIF header
class EXIF_header:
@@ -1283,7 +1308,11 @@ class EXIF_header:
# return pointer to next IFD
def next_IFD(self, ifd):
entries=self.s2n(ifd, 2)
- return self.s2n(ifd+2+12*entries, 4)
+ next_ifd = self.s2n(ifd+2+12*entries, 4)
+ if next_ifd == ifd:
+ return 0
+ else:
+ return next_ifd
# return list of IFDs in header
def list_IFDs(self):
@@ -1348,14 +1377,15 @@ class EXIF_header:
# special case: null-terminated ASCII string
# XXX investigate
# sometimes gets too big to fit in int value
- if count != 0 and count < (2**31):
- self.file.seek(self.offset + offset)
- values = self.file.read(count)
- #print values
- # Drop any garbage after a null.
- values = values.split('\x00', 1)[0]
- else:
- values = ''
+ if count != 0: # and count < (2**31): # 2E31 is hardware dependant. --gd
+ try:
+ self.file.seek(self.offset + offset)
+ values = self.file.read(count)
+ #print values
+ # Drop any garbage after a null.
+ values = values.split('\x00', 1)[0]
+ except OverflowError:
+ values = ''
else:
values = []
signed = (field_type in [6, 8, 9, 10])
@@ -1567,7 +1597,8 @@ class EXIF_header:
dict=MAKERNOTE_CANON_TAGS)
for i in (('MakerNote Tag 0x0001', MAKERNOTE_CANON_TAG_0x001),
('MakerNote Tag 0x0004', MAKERNOTE_CANON_TAG_0x004)):
- self.canon_decode_tag(self.tags[i[0]].values, i[1])
+ if i[0] in self.tags:
+ self.canon_decode_tag(self.tags[i[0]].values, i[1])
return
@@ -1613,26 +1644,124 @@ def process_file(f, stop_tag='UNDEF', details=True, strict=False, debug=False):
offset = 0
elif data[0:2] == '\xFF\xD8':
# it's a JPEG file
+ if debug: print "JPEG format recognized data[0:2] == '0xFFD8'."
+ base = 2
while data[2] == '\xFF' and data[6:10] in ('JFIF', 'JFXX', 'OLYM', 'Phot'):
+ if debug: print "data[2] == 0xxFF data[3]==%x and data[6:10] = %s"%(ord(data[3]),data[6:10])
length = ord(data[4])*256+ord(data[5])
+ if debug: print "Length offset is",length
f.read(length-8)
# fake an EXIF beginning of file
+ # I don't think this is used. --gd
data = '\xFF\x00'+f.read(10)
fake_exif = 1
- if data[2] == '\xFF' and data[6:10] == 'Exif':
+ if base>2:
+ if debug: print "added to base "
+ base = base + length + 4 -2
+ else:
+ if debug: print "added to zero "
+ base = length + 4
+ if debug: print "Set segment base to",base
+
+ # Big ugly patch to deal with APP2 (or other) data coming before APP1
+ f.seek(0)
+ data = f.read(base+4000) # in theory, this could be insufficient since 64K is the maximum size--gd
+ # base = 2
+ while 1:
+ if debug: print "Segment base 0x%X" % base
+ if data[base:base+2]=='\xFF\xE1':
+ # APP1
+ if debug: print "APP1 at base",hex(base)
+ if debug: print "Length",hex(ord(data[base+2])), hex(ord(data[base+3]))
+ if debug: print "Code",data[base+4:base+8]
+ if data[base+4:base+8] == "Exif":
+ if debug: print "Decrement base by",2,"to get to pre-segment header (for compatibility with later code)"
+ base = base-2
+ break
+ if debug: print "Increment base by",ord(data[base+2])*256+ord(data[base+3])+2
+ base=base+ord(data[base+2])*256+ord(data[base+3])+2
+ elif data[base:base+2]=='\xFF\xE0':
+ # APP0
+ if debug: print "APP0 at base",hex(base)
+ if debug: print "Length",hex(ord(data[base+2])), hex(ord(data[base+3]))
+ if debug: print "Code",data[base+4:base+8]
+ if debug: print "Increment base by",ord(data[base+2])*256+ord(data[base+3])+2
+ base=base+ord(data[base+2])*256+ord(data[base+3])+2
+ elif data[base:base+2]=='\xFF\xE2':
+ # APP2
+ if debug: print "APP2 at base",hex(base)
+ if debug: print "Length",hex(ord(data[base+2])), hex(ord(data[base+3]))
+ if debug: print "Code",data[base+4:base+8]
+ if debug: print "Increment base by",ord(data[base+2])*256+ord(data[base+3])+2
+ base=base+ord(data[base+2])*256+ord(data[base+3])+2
+ elif data[base:base+2]=='\xFF\xEE':
+ # APP14
+ if debug: print "APP14 Adobe segment at base",hex(base)
+ if debug: print "Length",hex(ord(data[base+2])), hex(ord(data[base+3]))
+ if debug: print "Code",data[base+4:base+8]
+ if debug: print "Increment base by",ord(data[base+2])*256+ord(data[base+3])+2
+ print "There is useful EXIF-like data here, but we have no parser for it."
+ base=base+ord(data[base+2])*256+ord(data[base+3])+2
+ elif data[base:base+2]=='\xFF\xDB':
+ if debug: print "JPEG image data at base",hex(base),"No more segments are expected."
+ # sys.exit(0)
+ break
+ elif data[base:base+2]=='\xFF\xD8':
+ # APP12
+ if debug: print "FFD8 segment at base",hex(base)
+ if debug: print "Got",hex(ord(data[base])), hex(ord(data[base+1])),"and", data[4+base:10+base], "instead."
+ if debug: print "Length",hex(ord(data[base+2])), hex(ord(data[base+3]))
+ if debug: print "Code",data[base+4:base+8]
+ if debug: print "Increment base by",ord(data[base+2])*256+ord(data[base+3])+2
+ base=base+ord(data[base+2])*256+ord(data[base+3])+2
+ elif data[base:base+2]=='\xFF\xEC':
+ # APP12
+ if debug: print "APP12 XMP (Ducky) or Pictureinfo segment at base",hex(base)
+ if debug: print "Got",hex(ord(data[base])), hex(ord(data[base+1])),"and", data[4+base:10+base], "instead."
+ if debug: print "Length",hex(ord(data[base+2])), hex(ord(data[base+3]))
+ if debug: print "Code",data[base+4:base+8]
+ if debug: print "Increment base by",ord(data[base+2])*256+ord(data[base+3])+2
+ print "There is useful EXIF-like data here (quality, comment, copyright), but we have no parser for it."
+ base=base+ord(data[base+2])*256+ord(data[base+3])+2
+ else:
+ try:
+ if debug: print "Unexpected/unhandled segment type or file content."
+ if debug: print "Got",hex(ord(data[base])), hex(ord(data[base+1])),"and", data[4+base:10+base], "instead."
+ if debug: print "Increment base by",ord(data[base+2])*256+ord(data[base+3])+2
+ except: pass
+ try: base=base+ord(data[base+2])*256+ord(data[base+3])+2
+ except: pass
+
+ f.seek(base+12)
+ if data[2+base] == '\xFF' and data[6+base:10+base] == 'Exif':
# detected EXIF header
offset = f.tell()
endian = f.read(1)
+ #HACK TEST: endian = 'M'
+ elif data[2+base] == '\xFF' and data[6+base:10+base+1] == 'Ducky':
+ # detected Ducky header.
+ if debug: print "EXIF-like header (normally 0xFF and code):",hex(ord(data[2+base])) , "and", data[6+base:10+base+1]
+ offset = f.tell()
+ endian = f.read(1)
+ elif data[2+base] == '\xFF' and data[6+base:10+base+1] == 'Adobe':
+ # detected APP14 (Adobe)
+ if debug: print "EXIF-like header (normally 0xFF and code):",hex(ord(data[2+base])) , "and", data[6+base:10+base+1]
+ offset = f.tell()
+ endian = f.read(1)
else:
# no EXIF information
+ if debug: print "No EXIF header expected data[2+base]==0xFF and data[6+base:10+base]===Exif (or Duck)"
+ if debug: print " but got",hex(ord(data[2+base])) , "and", data[6+base:10+base+1]
return {}
else:
# file format not recognized
+ if debug: print "file format not recognized"
return {}
# deal with the EXIF info we found
if debug:
- print {'I': 'Intel', 'M': 'Motorola'}[endian], 'format'
+ print "Endian format is ",endian
+ print {'I': 'Intel', 'M': 'Motorola', '\x01':'Adobe Ducky', 'd':'XMP/Adobe unknown' }[endian], 'format'
hdr = EXIF_header(f, endian, offset, fake_exif, strict, debug)
ifd_list = hdr.list_IFDs()
ctr = 0
diff --git a/extlib/exif/changes.txt b/extlib/exif/changes.txt
new file mode 100644
index 00000000..d1b18e6c
--- /dev/null
+++ b/extlib/exif/changes.txt
@@ -0,0 +1,131 @@
+~ EXIF.py Changelog ~
+
+2012-11-30 - Gregory Dudek (date of merge).
+Patches and changes:
+ Overflow error fixes added (related to 2**31 size)
+ GPS tags added.
+
+2012-09-26 - Ianaré Sévi
+Merge patches:
+ Add GPS tags
+ Add better endian debug info
+
+2012-06-13 - Ianaré Sévi
+Merge patches:
+ Support malformed last IFD by fhats
+ Light source, Flash and Metering mode dictionaries update by gryfik
+
+2008-07-31 - Ianaré Sévi
+Wikipedia Commons hunt for suitable test case images,
+testing new code additions.
+
+2008-07-09 - Stephen H. Olson
+Fix a problem with reading MakerNotes out of NEF files.
+Add some more Nikon MakerNote tags.
+
+2008-07-08 - Stephen H. Olson
+An error check for large tags totally borked MakerNotes.
+ With Nikon anyway, valid MakerNotes can be pretty big.
+Add error check for a crash caused by nikon_ev_bias being
+ called with the wrong args.
+Drop any garbage after a null character in string
+ (patch from Andrew McNabb ).
+
+2008-02-12 - Ianaré Sévi
+Fix crash on invalid MakerNote
+Fix crash on huge Makernote (temp fix)
+Add printIM tag 0xC4A5, needs decoding info
+Add 0x9C9B-F range of tags
+Add a bunch of tag definitions from:
+ http://owl.phy.queensu.ca/~phil/exiftool/TagNames/EXIF.html
+Add 'strict' variable and command line option
+
+2008-01-18 - Gunter Ohrner
+Add 'GPSDate' tag
+
+2007-12-12 - Ianaré Sévi
+Fix quick option on certain image types
+Add note on tag naming in documentation
+
+2007-11-30 - Ianaré Sévi
+Changed -s option to -t
+Put changelog into separate file
+
+2007-10-28 - Ianaré Sévi
+Merged changes from MoinMoin:ReimarBauer
+Added command line option for debug, stop
+processing on tag.
+
+2007-09-27 - Ianaré Sévi
+Add some Olympus Makernote tags.
+
+2007-09-26 - Stephen H. Olson
+Don't error out on invalid Olympus 'SpecialMode'.
+Add a few more Olympus/Minolta tags.
+
+2007-09-22 - Stephen H. Olson
+Don't error on invalid string
+Improved Nikon MakerNote support
+
+2007-05-03 - Martin Stone
+Fix for inverted detailed flag and Photoshop header
+
+2007-03-24 - Ianaré Sévi
+Can now ignore MakerNotes Tags for faster processing.
+
+2007-01-18 - Ianaré Sévi
+Fixed a couple errors and assuming maintenance of the library.
+
+2006-08-04 MoinMoin:ReimarBauer
+Added an optional parameter name to process_file and dump_IFD. Using this parameter the
+loop is breaked after that tag_name is processed.
+some PEP8 changes
+
+---------------------------- original notices -------------------------
+
+Contains code from "exifdump.py" originally written by Thierry Bousch
+ and released into the public domain.
+
+Updated and turned into general-purpose library by Gene Cash
+
+Patch Contributors:
+* Simon J. Gerraty
+s2n fix & orientation decode
+* John T. Riedl
+Added support for newer Nikon type 3 Makernote format for D70 and some
+other Nikon cameras.
+* Joerg Schaefer
+Fixed subtle bug when faking an EXIF header, which affected maker notes
+using relative offsets, and a fix for Nikon D100.
+
+1999-08-21 TB Last update by Thierry Bousch to his code.
+
+2002-01-17 CEC Discovered code on web.
+ Commented everything.
+ Made small code improvements.
+ Reformatted for readability.
+
+2002-01-19 CEC Added ability to read TIFFs and JFIF-format JPEGs.
+ Added ability to extract JPEG formatted thumbnail.
+ Added ability to read GPS IFD (not tested).
+ Converted IFD data structure to dictionaries indexed by
+ tag name.
+ Factored into library returning dictionary of IFDs plus
+ thumbnail, if any.
+
+2002-01-20 CEC Added MakerNote processing logic.
+ Added Olympus MakerNote.
+ Converted data structure to single-level dictionary, avoiding
+ tag name collisions by prefixing with IFD name. This makes
+ it much easier to use.
+2002-01-23 CEC Trimmed nulls from end of string values.
+
+2002-01-25 CEC Discovered JPEG thumbnail in Olympus TIFF MakerNote.
+
+2002-01-26 CEC Added ability to extract TIFF thumbnails.
+ Added Nikon, Fujifilm, Casio MakerNotes.
+
+2003-11-30 CEC Fixed problem with canon_decode_tag() not creating an
+ IFD_Tag() object.
+
+2004-02-15 CEC Finally fixed bit shift warning by converting Y to 0L.
diff --git a/extlib/freesound/audioprocessing.py b/extlib/freesound/audioprocessing.py
index c1dfe2eb..2c2b35b5 100644
--- a/extlib/freesound/audioprocessing.py
+++ b/extlib/freesound/audioprocessing.py
@@ -20,7 +20,7 @@
# Bram de Jong
# 2012, Joar Wandborg
-import Image, ImageDraw, ImageColor #@UnresolvedImport
+from PIL import Image, ImageDraw, ImageColor #@UnresolvedImport
from functools import partial
import math
import numpy
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)
-
-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="",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"].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
similarity index 93%
rename from extlib/jquery/MIT.txt
rename to 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)
+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/extlib/pdf.js b/extlib/pdf.js
new file mode 160000
index 00000000..369b81b6
--- /dev/null
+++ b/extlib/pdf.js
@@ -0,0 +1 @@
+Subproject commit 369b81b63f560b5d729da26752ca541503d81510
diff --git a/extlib/thingiview.js/LICENSE b/extlib/thingiview.js/LICENSE
new file mode 100644
index 00000000..65c5ca88
--- /dev/null
+++ b/extlib/thingiview.js/LICENSE
@@ -0,0 +1,165 @@
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+ This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+ 0. Additional Definitions.
+
+ As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+ "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+ An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+ A "Combined Work" is a work produced by combining or linking an
+Application with the Library. The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+ The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+ The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+ 1. Exception to Section 3 of the GNU GPL.
+
+ You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+ 2. Conveying Modified Versions.
+
+ If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+ a) under this License, provided that you make a good faith effort to
+ ensure that, in the event an Application does not supply the
+ function or data, the facility still operates, and performs
+ whatever part of its purpose remains meaningful, or
+
+ b) under the GNU GPL, with none of the additional permissions of
+ this License applicable to that copy.
+
+ 3. Object Code Incorporating Material from Library Header Files.
+
+ The object code form of an Application may incorporate material from
+a header file that is part of the Library. You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+ a) Give prominent notice with each copy of the object code that the
+ Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the object code with a copy of the GNU GPL and this license
+ document.
+
+ 4. Combined Works.
+
+ You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+ a) Give prominent notice with each copy of the Combined Work that
+ the Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the Combined Work with a copy of the GNU GPL and this license
+ document.
+
+ c) For a Combined Work that displays copyright notices during
+ execution, include the copyright notice for the Library among
+ these notices, as well as a reference directing the user to the
+ copies of the GNU GPL and this license document.
+
+ d) Do one of the following:
+
+ 0) Convey the Minimal Corresponding Source under the terms of this
+ License, and the Corresponding Application Code in a form
+ suitable for, and under terms that permit, the user to
+ recombine or relink the Application with a modified version of
+ the Linked Version to produce a modified Combined Work, in the
+ manner specified by section 6 of the GNU GPL for conveying
+ Corresponding Source.
+
+ 1) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (a) uses at run time
+ a copy of the Library already present on the user's computer
+ system, and (b) will operate properly with a modified version
+ of the Library that is interface-compatible with the Linked
+ Version.
+
+ e) Provide Installation Information, but only if you would otherwise
+ be required to provide such information under section 6 of the
+ GNU GPL, and only to the extent that such information is
+ necessary to install and execute a modified version of the
+ Combined Work produced by recombining or relinking the
+ Application with a modified version of the Linked Version. (If
+ you use option 4d0, the Installation Information must accompany
+ the Minimal Corresponding Source and Corresponding Application
+ Code. If you use option 4d1, you must provide the Installation
+ Information in the manner specified by section 6 of the GNU GPL
+ for conveying Corresponding Source.)
+
+ 5. Combined Libraries.
+
+ You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+ a) Accompany the combined library with a copy of the same work based
+ on the Library, uncombined with any other library facilities,
+ conveyed under the terms of this License.
+
+ b) Give prominent notice with the combined library that part of it
+ is a work based on the Library, and explaining where to find the
+ accompanying uncombined form of the same work.
+
+ 6. Revised Versions of the GNU Lesser General Public License.
+
+ The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+ If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
diff --git a/extlib/thingiview.js/Three.js b/extlib/thingiview.js/Three.js
new file mode 100644
index 00000000..5c21380c
--- /dev/null
+++ b/extlib/thingiview.js/Three.js
@@ -0,0 +1,202 @@
+// Three.js r32 - http://github.com/mrdoob/three.js
+var THREE=THREE||{};THREE.Color=function(a){this.autoUpdate=true;this.setHex(a)};
+THREE.Color.prototype={setRGB:function(a,c,d){this.r=a;this.g=c;this.b=d;if(this.autoUpdate){this.updateHex();this.updateStyleString()}},setHex:function(a){this.hex=~~a&16777215;if(this.autoUpdate){this.updateRGBA();this.updateStyleString()}},updateHex:function(){this.hex=~~(this.r*255)<<16^~~(this.g*255)<<8^~~(this.b*255)},updateRGBA:function(){this.r=(this.hex>>16&255)/255;this.g=(this.hex>>8&255)/255;this.b=(this.hex&255)/255},updateStyleString:function(){this.__styleString="rgb("+~~(this.r*255)+
+","+~~(this.g*255)+","+~~(this.b*255)+")"},clone:function(){return new THREE.Color(this.hex)},toString:function(){return"THREE.Color ( r: "+this.r+", g: "+this.g+", b: "+this.b+", hex: "+this.hex+" )"}};THREE.Vector2=function(a,c){this.x=a||0;this.y=c||0};
+THREE.Vector2.prototype={set:function(a,c){this.x=a;this.y=c;return this},copy:function(a){this.x=a.x;this.y=a.y;return this},addSelf:function(a){this.x+=a.x;this.y+=a.y;return this},add:function(a,c){this.x=a.x+c.x;this.y=a.y+c.y;return this},subSelf:function(a){this.x-=a.x;this.y-=a.y;return this},sub:function(a,c){this.x=a.x-c.x;this.y=a.y-c.y;return this},multiplyScalar:function(a){this.x*=a;this.y*=a;return this},unit:function(){this.multiplyScalar(1/this.length());return this},length:function(){return Math.sqrt(this.x*
+this.x+this.y*this.y)},lengthSq:function(){return this.x*this.x+this.y*this.y},negate:function(){this.x=-this.x;this.y=-this.y;return this},clone:function(){return new THREE.Vector2(this.x,this.y)},toString:function(){return"THREE.Vector2 ("+this.x+", "+this.y+")"}};THREE.Vector3=function(a,c,d){this.x=a||0;this.y=c||0;this.z=d||0};
+THREE.Vector3.prototype={set:function(a,c,d){this.x=a;this.y=c;this.z=d;return this},copy:function(a){this.x=a.x;this.y=a.y;this.z=a.z;return this},add:function(a,c){this.x=a.x+c.x;this.y=a.y+c.y;this.z=a.z+c.z;return this},addSelf:function(a){this.x+=a.x;this.y+=a.y;this.z+=a.z;return this},addScalar:function(a){this.x+=a;this.y+=a;this.z+=a;return this},sub:function(a,c){this.x=a.x-c.x;this.y=a.y-c.y;this.z=a.z-c.z;return this},subSelf:function(a){this.x-=a.x;this.y-=a.y;this.z-=a.z;return this},
+cross:function(a,c){this.x=a.y*c.z-a.z*c.y;this.y=a.z*c.x-a.x*c.z;this.z=a.x*c.y-a.y*c.x;return this},crossSelf:function(a){var c=this.x,d=this.y,e=this.z;this.x=d*a.z-e*a.y;this.y=e*a.x-c*a.z;this.z=c*a.y-d*a.x;return this},multiply:function(a,c){this.x=a.x*c.x;this.y=a.y*c.y;this.z=a.z*c.z;return this},multiplySelf:function(a){this.x*=a.x;this.y*=a.y;this.z*=a.z;return this},multiplyScalar:function(a){this.x*=a;this.y*=a;this.z*=a;return this},divideSelf:function(a){this.x/=a.x;this.y/=a.y;this.z/=
+a.z;return this},divideScalar:function(a){this.x/=a;this.y/=a;this.z/=a;return this},dot:function(a){return this.x*a.x+this.y*a.y+this.z*a.z},distanceTo:function(a){var c=this.x-a.x,d=this.y-a.y;a=this.z-a.z;return Math.sqrt(c*c+d*d+a*a)},distanceToSquared:function(a){var c=this.x-a.x,d=this.y-a.y;a=this.z-a.z;return c*c+d*d+a*a},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},negate:function(){this.x=
+-this.x;this.y=-this.y;this.z=-this.z;return this},normalize:function(){var a=Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z);a>0?this.multiplyScalar(1/a):this.set(0,0,0);return this},setLength:function(a){return this.normalize().multiplyScalar(a)},isZero:function(){return Math.abs(this.x)<1.0E-4&&Math.abs(this.y)<1.0E-4&&Math.abs(this.z)<1.0E-4},clone:function(){return new THREE.Vector3(this.x,this.y,this.z)},toString:function(){return"THREE.Vector3 ( "+this.x+", "+this.y+", "+this.z+" )"}};
+THREE.Vector4=function(a,c,d,e){this.x=a||0;this.y=c||0;this.z=d||0;this.w=e||1};
+THREE.Vector4.prototype={set:function(a,c,d,e){this.x=a;this.y=c;this.z=d;this.w=e;return this},copy:function(a){this.x=a.x;this.y=a.y;this.z=a.z;this.w=a.w||1;return this},add:function(a,c){this.x=a.x+c.x;this.y=a.y+c.y;this.z=a.z+c.z;this.w=a.w+c.w;return this},addSelf:function(a){this.x+=a.x;this.y+=a.y;this.z+=a.z;this.w+=a.w;return this},sub:function(a,c){this.x=a.x-c.x;this.y=a.y-c.y;this.z=a.z-c.z;this.w=a.w-c.w;return this},subSelf:function(a){this.x-=a.x;this.y-=a.y;this.z-=a.z;this.w-=a.w;
+return this},multiplyScalar:function(a){this.x*=a;this.y*=a;this.z*=a;this.w*=a;return this},divideScalar:function(a){this.x/=a;this.y/=a;this.z/=a;this.w/=a;return this},lerpSelf:function(a,c){this.x+=(a.x-this.x)*c;this.y+=(a.y-this.y)*c;this.z+=(a.z-this.z)*c;this.w+=(a.w-this.w)*c},clone:function(){return new THREE.Vector4(this.x,this.y,this.z,this.w)},toString:function(){return"THREE.Vector4 ("+this.x+", "+this.y+", "+this.z+", "+this.w+")"}};
+THREE.Ray=function(a,c){this.origin=a||new THREE.Vector3;this.direction=c||new THREE.Vector3};
+THREE.Ray.prototype={intersectScene:function(a){var c,d,e=a.objects,g=[];a=0;for(c=e.length;a0&&K>0&&j+K<1}var d,e,g,h,o,b,i,k,y,z,
+u,x=a.geometry,H=x.vertices,J=[];d=0;for(e=x.faces.length;di?e:i;g=g>k?
+g:k}a()};this.add3Points=function(i,k,y,z,u,x){if(b){b=false;c=iy?i>u?i:u:y>u?y:u;g=k>z?k>x?k:x:z>x?z:x}else{c=iy?i>u?i>e?i:e:u>e?u:e:y>u?y>e?y:e:u>e?u:e;g=k>z?k>x?k>g?k:g:x>g?x:g:z>x?z>g?z:g:x>g?x:g}a()};this.addRectangle=function(i){if(b){b=false;c=i.getLeft();d=i.getTop();e=i.getRight();g=i.getBottom()}else{c=ci.getRight()?e:i.getRight();g=g>i.getBottom()?g:i.getBottom()}a()};this.inflate=function(i){c-=i;d-=i;e+=i;g+=i;a()};this.minSelf=function(i){c=c>i.getLeft()?c:i.getLeft();d=d>i.getTop()?d:i.getTop();e=e=0&&Math.min(g,i.getBottom())-Math.max(d,i.getTop())>=0};this.empty=function(){b=true;g=e=d=c=0;a()};this.isEmpty=function(){return b};this.toString=
+function(){return"THREE.Rectangle ( left: "+c+", right: "+e+", top: "+d+", bottom: "+g+", width: "+h+", height: "+o+" )"}};THREE.Matrix3=function(){this.m=[]};THREE.Matrix3.prototype={transpose:function(){var a,c=this.m;a=c[1];c[1]=c[3];c[3]=a;a=c[2];c[2]=c[6];c[6]=a;a=c[5];c[5]=c[7];c[7]=a;return this}};
+THREE.Matrix4=function(a,c,d,e,g,h,o,b,i,k,y,z,u,x,H,J){this.n11=a||1;this.n12=c||0;this.n13=d||0;this.n14=e||0;this.n21=g||0;this.n22=h||1;this.n23=o||0;this.n24=b||0;this.n31=i||0;this.n32=k||0;this.n33=y||1;this.n34=z||0;this.n41=u||0;this.n42=x||0;this.n43=H||0;this.n44=J||1;this.flat=Array(16);this.m33=new THREE.Matrix3};
+THREE.Matrix4.prototype={identity:function(){this.n11=1;this.n21=this.n14=this.n13=this.n12=0;this.n22=1;this.n32=this.n31=this.n24=this.n23=0;this.n33=1;this.n43=this.n42=this.n41=this.n34=0;this.n44=1;return this},set:function(a,c,d,e,g,h,o,b,i,k,y,z,u,x,H,J){this.n11=a;this.n12=c;this.n13=d;this.n14=e;this.n21=g;this.n22=h;this.n23=o;this.n24=b;this.n31=i;this.n32=k;this.n33=y;this.n34=z;this.n41=u;this.n42=x;this.n43=H;this.n44=J;return this},copy:function(a){this.n11=a.n11;this.n12=a.n12;this.n13=
+a.n13;this.n14=a.n14;this.n21=a.n21;this.n22=a.n22;this.n23=a.n23;this.n24=a.n24;this.n31=a.n31;this.n32=a.n32;this.n33=a.n33;this.n34=a.n34;this.n41=a.n41;this.n42=a.n42;this.n43=a.n43;this.n44=a.n44;return this},lookAt:function(a,c,d){var e=THREE.Matrix4.__tmpVec1,g=THREE.Matrix4.__tmpVec2,h=THREE.Matrix4.__tmpVec3;h.sub(a,c).normalize();e.cross(d,h).normalize();g.cross(h,e).normalize();this.n11=e.x;this.n12=e.y;this.n13=e.z;this.n14=-e.dot(a);this.n21=g.x;this.n22=g.y;this.n23=g.z;this.n24=-g.dot(a);
+this.n31=h.x;this.n32=h.y;this.n33=h.z;this.n34=-h.dot(a);this.n43=this.n42=this.n41=0;this.n44=1;return this},multiplyVector3:function(a){var c=a.x,d=a.y,e=a.z,g=1/(this.n41*c+this.n42*d+this.n43*e+this.n44);a.x=(this.n11*c+this.n12*d+this.n13*e+this.n14)*g;a.y=(this.n21*c+this.n22*d+this.n23*e+this.n24)*g;a.z=(this.n31*c+this.n32*d+this.n33*e+this.n34)*g;return a},multiplyVector4:function(a){var c=a.x,d=a.y,e=a.z,g=a.w;a.x=this.n11*c+this.n12*d+this.n13*e+this.n14*g;a.y=this.n21*c+this.n22*d+this.n23*
+e+this.n24*g;a.z=this.n31*c+this.n32*d+this.n33*e+this.n34*g;a.w=this.n41*c+this.n42*d+this.n43*e+this.n44*g;return a},crossVector:function(a){var c=new THREE.Vector4;c.x=this.n11*a.x+this.n12*a.y+this.n13*a.z+this.n14*a.w;c.y=this.n21*a.x+this.n22*a.y+this.n23*a.z+this.n24*a.w;c.z=this.n31*a.x+this.n32*a.y+this.n33*a.z+this.n34*a.w;c.w=a.w?this.n41*a.x+this.n42*a.y+this.n43*a.z+this.n44*a.w:1;return c},multiply:function(a,c){var d=a.n11,e=a.n12,g=a.n13,h=a.n14,o=a.n21,b=a.n22,i=a.n23,k=a.n24,y=a.n31,
+z=a.n32,u=a.n33,x=a.n34,H=a.n41,J=a.n42,K=a.n43,p=a.n44,U=c.n11,F=c.n12,f=c.n13,j=c.n14,q=c.n21,l=c.n22,r=c.n23,C=c.n24,m=c.n31,t=c.n32,v=c.n33,s=c.n34,n=c.n41,E=c.n42,A=c.n43,O=c.n44;this.n11=d*U+e*q+g*m+h*n;this.n12=d*F+e*l+g*t+h*E;this.n13=d*f+e*r+g*v+h*A;this.n14=d*j+e*C+g*s+h*O;this.n21=o*U+b*q+i*m+k*n;this.n22=o*F+b*l+i*t+k*E;this.n23=o*f+b*r+i*v+k*A;this.n24=o*j+b*C+i*s+k*O;this.n31=y*U+z*q+u*m+x*n;this.n32=y*F+z*l+u*t+x*E;this.n33=y*f+z*r+u*v+x*A;this.n34=y*j+z*C+u*s+x*O;this.n41=H*U+J*q+
+K*m+p*n;this.n42=H*F+J*l+K*t+p*E;this.n43=H*f+J*r+K*v+p*A;this.n44=H*j+J*C+K*s+p*O;return this},multiplySelf:function(a){var c=this.n11,d=this.n12,e=this.n13,g=this.n14,h=this.n21,o=this.n22,b=this.n23,i=this.n24,k=this.n31,y=this.n32,z=this.n33,u=this.n34,x=this.n41,H=this.n42,J=this.n43,K=this.n44,p=a.n11,U=a.n21,F=a.n31,f=a.n41,j=a.n12,q=a.n22,l=a.n32,r=a.n42,C=a.n13,m=a.n23,t=a.n33,v=a.n43,s=a.n14,n=a.n24,E=a.n34;a=a.n44;this.n11=c*p+d*U+e*F+g*f;this.n12=c*j+d*q+e*l+g*r;this.n13=c*C+d*m+e*t+g*
+v;this.n14=c*s+d*n+e*E+g*a;this.n21=h*p+o*U+b*F+i*f;this.n22=h*j+o*q+b*l+i*r;this.n23=h*C+o*m+b*t+i*v;this.n24=h*s+o*n+b*E+i*a;this.n31=k*p+y*U+z*F+u*f;this.n32=k*j+y*q+z*l+u*r;this.n33=k*C+y*m+z*t+u*v;this.n34=k*s+y*n+z*E+u*a;this.n41=x*p+H*U+J*F+K*f;this.n42=x*j+H*q+J*l+K*r;this.n43=x*C+H*m+J*t+K*v;this.n44=x*s+H*n+J*E+K*a;return this},multiplyScalar:function(a){this.n11*=a;this.n12*=a;this.n13*=a;this.n14*=a;this.n21*=a;this.n22*=a;this.n23*=a;this.n24*=a;this.n31*=a;this.n32*=a;this.n33*=a;this.n34*=
+a;this.n41*=a;this.n42*=a;this.n43*=a;this.n44*=a;return this},determinant:function(){var a=this.n11,c=this.n12,d=this.n13,e=this.n14,g=this.n21,h=this.n22,o=this.n23,b=this.n24,i=this.n31,k=this.n32,y=this.n33,z=this.n34,u=this.n41,x=this.n42,H=this.n43,J=this.n44;return e*o*k*u-d*b*k*u-e*h*y*u+c*b*y*u+d*h*z*u-c*o*z*u-e*o*i*x+d*b*i*x+e*g*y*x-a*b*y*x-d*g*z*x+a*o*z*x+e*h*i*H-c*b*i*H-e*g*k*H+a*b*k*H+c*g*z*H-a*h*z*H-d*h*i*J+c*o*i*J+d*g*k*J-a*o*k*J-c*g*y*J+a*h*y*J},transpose:function(){function a(c,d,
+e){var g=c[d];c[d]=c[e];c[e]=g}a(this,"n21","n12");a(this,"n31","n13");a(this,"n32","n23");a(this,"n41","n14");a(this,"n42","n24");a(this,"n43","n34");return this},clone:function(){var a=new THREE.Matrix4;a.n11=this.n11;a.n12=this.n12;a.n13=this.n13;a.n14=this.n14;a.n21=this.n21;a.n22=this.n22;a.n23=this.n23;a.n24=this.n24;a.n31=this.n31;a.n32=this.n32;a.n33=this.n33;a.n34=this.n34;a.n41=this.n41;a.n42=this.n42;a.n43=this.n43;a.n44=this.n44;return a},flatten:function(){var a=this.flat;a[0]=this.n11;
+a[1]=this.n21;a[2]=this.n31;a[3]=this.n41;a[4]=this.n12;a[5]=this.n22;a[6]=this.n32;a[7]=this.n42;a[8]=this.n13;a[9]=this.n23;a[10]=this.n33;a[11]=this.n43;a[12]=this.n14;a[13]=this.n24;a[14]=this.n34;a[15]=this.n44;return a},setTranslation:function(a,c,d){this.set(1,0,0,a,0,1,0,c,0,0,1,d,0,0,0,1);return this},setScale:function(a,c,d){this.set(a,0,0,0,0,c,0,0,0,0,d,0,0,0,0,1);return this},setRotX:function(a){var c=Math.cos(a);a=Math.sin(a);this.set(1,0,0,0,0,c,-a,0,0,a,c,0,0,0,0,1);return this},setRotY:function(a){var c=
+Math.cos(a);a=Math.sin(a);this.set(c,0,a,0,0,1,0,0,-a,0,c,0,0,0,0,1);return this},setRotZ:function(a){var c=Math.cos(a);a=Math.sin(a);this.set(c,-a,0,0,a,c,0,0,0,0,1,0,0,0,0,1);return this},setRotAxis:function(a,c){var d=Math.cos(c),e=Math.sin(c),g=1-d,h=a.x,o=a.y,b=a.z,i=g*h,k=g*o;this.set(i*h+d,i*o-e*b,i*b+e*o,0,i*o+e*b,k*o+d,k*b-e*h,0,i*b-e*o,k*b+e*h,g*b*b+d,0,0,0,0,1);return this},toString:function(){return"| "+this.n11+" "+this.n12+" "+this.n13+" "+this.n14+" |\n| "+this.n21+" "+this.n22+" "+
+this.n23+" "+this.n24+" |\n| "+this.n31+" "+this.n32+" "+this.n33+" "+this.n34+" |\n| "+this.n41+" "+this.n42+" "+this.n43+" "+this.n44+" |"}};THREE.Matrix4.translationMatrix=function(a,c,d){var e=new THREE.Matrix4;e.setTranslation(a,c,d);return e};THREE.Matrix4.scaleMatrix=function(a,c,d){var e=new THREE.Matrix4;e.setScale(a,c,d);return e};THREE.Matrix4.rotationXMatrix=function(a){var c=new THREE.Matrix4;c.setRotX(a);return c};
+THREE.Matrix4.rotationYMatrix=function(a){var c=new THREE.Matrix4;c.setRotY(a);return c};THREE.Matrix4.rotationZMatrix=function(a){var c=new THREE.Matrix4;c.setRotZ(a);return c};THREE.Matrix4.rotationAxisAngleMatrix=function(a,c){var d=new THREE.Matrix4;d.setRotAxis(a,c);return d};
+THREE.Matrix4.makeInvert=function(a){var c=a.n11,d=a.n12,e=a.n13,g=a.n14,h=a.n21,o=a.n22,b=a.n23,i=a.n24,k=a.n31,y=a.n32,z=a.n33,u=a.n34,x=a.n41,H=a.n42,J=a.n43,K=a.n44,p=new THREE.Matrix4;p.n11=b*u*H-i*z*H+i*y*J-o*u*J-b*y*K+o*z*K;p.n12=g*z*H-e*u*H-g*y*J+d*u*J+e*y*K-d*z*K;p.n13=e*i*H-g*b*H+g*o*J-d*i*J-e*o*K+d*b*K;p.n14=g*b*y-e*i*y-g*o*z+d*i*z+e*o*u-d*b*u;p.n21=i*z*x-b*u*x-i*k*J+h*u*J+b*k*K-h*z*K;p.n22=e*u*x-g*z*x+g*k*J-c*u*J-e*k*K+c*z*K;p.n23=g*b*x-e*i*x-g*h*J+c*i*J+e*h*K-c*b*K;p.n24=e*i*k-g*b*k+
+g*h*z-c*i*z-e*h*u+c*b*u;p.n31=o*u*x-i*y*x+i*k*H-h*u*H-o*k*K+h*y*K;p.n32=g*y*x-d*u*x-g*k*H+c*u*H+d*k*K-c*y*K;p.n33=e*i*x-g*o*x+g*h*H-c*i*H-d*h*K+c*o*K;p.n34=g*o*k-d*i*k-g*h*y+c*i*y+d*h*u-c*o*u;p.n41=b*y*x-o*z*x-b*k*H+h*z*H+o*k*J-h*y*J;p.n42=d*z*x-e*y*x+e*k*H-c*z*H-d*k*J+c*y*J;p.n43=e*o*x-d*b*x-e*h*H+c*b*H+d*h*J-c*o*J;p.n44=d*b*k-e*o*k+e*h*y-c*b*y-d*h*z+c*o*z;p.multiplyScalar(1/a.determinant());return p};
+THREE.Matrix4.makeInvert3x3=function(a){var c=a.flatten();a=a.m33;var d=a.m,e=c[10]*c[5]-c[6]*c[9],g=-c[10]*c[1]+c[2]*c[9],h=c[6]*c[1]-c[2]*c[5],o=-c[10]*c[4]+c[6]*c[8],b=c[10]*c[0]-c[2]*c[8],i=-c[6]*c[0]+c[2]*c[4],k=c[9]*c[4]-c[5]*c[8],y=-c[9]*c[0]+c[1]*c[8],z=c[5]*c[0]-c[1]*c[4];c=c[0]*e+c[1]*o+c[2]*k;if(c==0)throw"matrix not invertible";c=1/c;d[0]=c*e;d[1]=c*g;d[2]=c*h;d[3]=c*o;d[4]=c*b;d[5]=c*i;d[6]=c*k;d[7]=c*y;d[8]=c*z;return a};
+THREE.Matrix4.makeFrustum=function(a,c,d,e,g,h){var o,b,i;o=new THREE.Matrix4;b=2*g/(c-a);i=2*g/(e-d);a=(c+a)/(c-a);d=(e+d)/(e-d);e=-(h+g)/(h-g);g=-2*h*g/(h-g);o.n11=b;o.n12=0;o.n13=a;o.n14=0;o.n21=0;o.n22=i;o.n23=d;o.n24=0;o.n31=0;o.n32=0;o.n33=e;o.n34=g;o.n41=0;o.n42=0;o.n43=-1;o.n44=0;return o};THREE.Matrix4.makePerspective=function(a,c,d,e){var g;a=d*Math.tan(a*Math.PI/360);g=-a;return THREE.Matrix4.makeFrustum(g*c,a*c,g,a,d,e)};
+THREE.Matrix4.makeOrtho=function(a,c,d,e,g,h){var o,b,i,k;o=new THREE.Matrix4;b=c-a;i=d-e;k=h-g;a=(c+a)/b;d=(d+e)/i;g=(h+g)/k;o.n11=2/b;o.n12=0;o.n13=0;o.n14=-a;o.n21=0;o.n22=2/i;o.n23=0;o.n24=-d;o.n31=0;o.n32=0;o.n33=-2/k;o.n34=-g;o.n41=0;o.n42=0;o.n43=0;o.n44=1;return o};THREE.Matrix4.__tmpVec1=new THREE.Vector3;THREE.Matrix4.__tmpVec2=new THREE.Vector3;THREE.Matrix4.__tmpVec3=new THREE.Vector3;
+THREE.Vertex=function(a,c){this.position=a||new THREE.Vector3;this.positionWorld=new THREE.Vector3;this.positionScreen=new THREE.Vector4;this.normal=c||new THREE.Vector3;this.normalWorld=new THREE.Vector3;this.normalScreen=new THREE.Vector3;this.tangent=new THREE.Vector4;this.__visible=true};THREE.Vertex.prototype={toString:function(){return"THREE.Vertex ( position: "+this.position+", normal: "+this.normal+" )"}};
+THREE.Face3=function(a,c,d,e,g){this.a=a;this.b=c;this.c=d;this.centroid=new THREE.Vector3;this.normal=e instanceof THREE.Vector3?e:new THREE.Vector3;this.vertexNormals=e instanceof Array?e:[];this.materials=g instanceof Array?g:[g]};THREE.Face3.prototype={toString:function(){return"THREE.Face3 ( "+this.a+", "+this.b+", "+this.c+" )"}};
+THREE.Face4=function(a,c,d,e,g,h){this.a=a;this.b=c;this.c=d;this.d=e;this.centroid=new THREE.Vector3;this.normal=g instanceof THREE.Vector3?g:new THREE.Vector3;this.vertexNormals=g instanceof Array?g:[];this.materials=h instanceof Array?h:[h]};THREE.Face4.prototype={toString:function(){return"THREE.Face4 ( "+this.a+", "+this.b+", "+this.c+" "+this.d+" )"}};THREE.UV=function(a,c){this.u=a||0;this.v=c||0};
+THREE.UV.prototype={copy:function(a){this.u=a.u;this.v=a.v},toString:function(){return"THREE.UV ("+this.u+", "+this.v+")"}};THREE.Geometry=function(){this.vertices=[];this.faces=[];this.uvs=[];this.boundingSphere=this.boundingBox=null;this.geometryChunks={};this.hasTangents=false};
+THREE.Geometry.prototype={computeCentroids:function(){var a,c,d;a=0;for(c=this.faces.length;a0){this.boundingBox={x:[this.vertices[0].position.x,this.vertices[0].position.x],y:[this.vertices[0].position.y,this.vertices[0].position.y],
+z:[this.vertices[0].position.z,this.vertices[0].position.z]};for(var c=1,d=this.vertices.length;cthis.boundingBox.x[1])this.boundingBox.x[1]=a.position.x;if(a.position.ythis.boundingBox.y[1])this.boundingBox.y[1]=a.position.y;if(a.position.z
+this.boundingBox.z[1])this.boundingBox.z[1]=a.position.z}}},computeBoundingSphere:function(){for(var a=this.boundingSphere===null?0:this.boundingSphere.radius,c=0,d=this.vertices.length;c65535){k[b].counter+=1;i=k[b].hash+"_"+k[b].counter;if(this.geometryChunks[i]==undefined)this.geometryChunks[i]={faces:[],materials:o,vertices:0}}this.geometryChunks[i].faces.push(e);this.geometryChunks[i].vertices+=h}},toString:function(){return"THREE.Geometry ( vertices: "+
+this.vertices+", faces: "+this.faces+", uvs: "+this.uvs+" )"}};
+THREE.Camera=function(a,c,d,e){this.fov=a;this.aspect=c;this.near=d;this.far=e;this.position=new THREE.Vector3;this.target={position:new THREE.Vector3};this.autoUpdateMatrix=true;this.projectionMatrix=null;this.matrix=new THREE.Matrix4;this.up=new THREE.Vector3(0,1,0);this.tmpVec=new THREE.Vector3;this.translateX=function(g){this.tmpVec.sub(this.target.position,this.position).normalize().multiplyScalar(g);this.tmpVec.crossSelf(this.up);this.position.addSelf(this.tmpVec);this.target.position.addSelf(this.tmpVec)};
+this.translateZ=function(g){this.tmpVec.sub(this.target.position,this.position).normalize().multiplyScalar(g);this.position.subSelf(this.tmpVec);this.target.position.subSelf(this.tmpVec)};this.updateMatrix=function(){this.matrix.lookAt(this.position,this.target.position,this.up)};this.updateProjectionMatrix=function(){this.projectionMatrix=THREE.Matrix4.makePerspective(this.fov,this.aspect,this.near,this.far)};this.updateProjectionMatrix()};
+THREE.Camera.prototype={toString:function(){return"THREE.Camera ( "+this.position+", "+this.target.position+" )"}};THREE.Light=function(a){this.color=new THREE.Color(a)};THREE.AmbientLight=function(a){THREE.Light.call(this,a)};THREE.AmbientLight.prototype=new THREE.Light;THREE.AmbientLight.prototype.constructor=THREE.AmbientLight;THREE.DirectionalLight=function(a,c){THREE.Light.call(this,a);this.position=new THREE.Vector3(0,1,0);this.intensity=c||1};THREE.DirectionalLight.prototype=new THREE.Light;
+THREE.DirectionalLight.prototype.constructor=THREE.DirectionalLight;THREE.PointLight=function(a,c){THREE.Light.call(this,a);this.position=new THREE.Vector3;this.intensity=c||1};THREE.PointLight.prototype=new THREE.Light;THREE.PointLight.prototype.constructor=THREE.PointLight;
+THREE.Object3D=function(){this.id=THREE.Object3DCounter.value++;this.position=new THREE.Vector3;this.rotation=new THREE.Vector3;this.scale=new THREE.Vector3(1,1,1);this.matrix=new THREE.Matrix4;this.rotationMatrix=new THREE.Matrix4;this.tmpMatrix=new THREE.Matrix4;this.screen=new THREE.Vector3;this.visible=this.autoUpdateMatrix=true};
+THREE.Object3D.prototype={updateMatrix:function(){var a=this.position,c=this.rotation,d=this.scale,e=this.tmpMatrix;this.matrix.setTranslation(a.x,a.y,a.z);this.rotationMatrix.setRotX(c.x);if(c.y!=0){e.setRotY(c.y);this.rotationMatrix.multiplySelf(e)}if(c.z!=0){e.setRotZ(c.z);this.rotationMatrix.multiplySelf(e)}this.matrix.multiplySelf(this.rotationMatrix);if(d.x!=0||d.y!=0||d.z!=0){e.setScale(d.x,d.y,d.z);this.matrix.multiplySelf(e)}}};THREE.Object3DCounter={value:0};
+THREE.Particle=function(a){THREE.Object3D.call(this);this.materials=a instanceof Array?a:[a];this.autoUpdateMatrix=false};THREE.Particle.prototype=new THREE.Object3D;THREE.Particle.prototype.constructor=THREE.Particle;THREE.ParticleSystem=function(a,c){THREE.Object3D.call(this);this.geometry=a;this.materials=c instanceof Array?c:[c];this.autoUpdateMatrix=false};THREE.ParticleSystem.prototype=new THREE.Object3D;THREE.ParticleSystem.prototype.constructor=THREE.ParticleSystem;
+THREE.Line=function(a,c,d){THREE.Object3D.call(this);this.geometry=a;this.materials=c instanceof Array?c:[c];this.type=d!=undefined?d:THREE.LineStrip};THREE.LineStrip=0;THREE.LinePieces=1;THREE.Line.prototype=new THREE.Object3D;THREE.Line.prototype.constructor=THREE.Line;THREE.Mesh=function(a,c){THREE.Object3D.call(this);this.geometry=a;this.materials=c instanceof Array?c:[c];this.overdraw=this.doubleSided=this.flipSided=false;this.geometry.boundingSphere||this.geometry.computeBoundingSphere()};
+THREE.Mesh.prototype=new THREE.Object3D;THREE.Mesh.prototype.constructor=THREE.Mesh;THREE.FlatShading=0;THREE.SmoothShading=1;THREE.NormalBlending=0;THREE.AdditiveBlending=1;THREE.SubtractiveBlending=2;
+THREE.LineBasicMaterial=function(a){this.color=new THREE.Color(16777215);this.opacity=1;this.blending=THREE.NormalBlending;this.linewidth=1;this.linejoin=this.linecap="round";if(a){a.color!==undefined&&this.color.setHex(a.color);if(a.opacity!==undefined)this.opacity=a.opacity;if(a.blending!==undefined)this.blending=a.blending;if(a.linewidth!==undefined)this.linewidth=a.linewidth;if(a.linecap!==undefined)this.linecap=a.linecap;if(a.linejoin!==undefined)this.linejoin=a.linejoin}};
+THREE.LineBasicMaterial.prototype={toString:function(){return"THREE.LineBasicMaterial ( color: "+this.color+" opacity: "+this.opacity+" blending: "+this.blending+" linewidth: "+this.linewidth+" linecap: "+this.linecap+" linejoin: "+this.linejoin+" )"}};
+THREE.MeshBasicMaterial=function(a){this.id=THREE.MeshBasicMaterialCounter.value++;this.color=new THREE.Color(16777215);this.env_map=this.map=null;this.combine=THREE.MultiplyOperation;this.reflectivity=1;this.refraction_ratio=0.98;this.fog=true;this.opacity=1;this.shading=THREE.SmoothShading;this.blending=THREE.NormalBlending;this.wireframe=false;this.wireframe_linewidth=1;this.wireframe_linejoin=this.wireframe_linecap="round";if(a){a.color!==undefined&&this.color.setHex(a.color);if(a.map!==undefined)this.map=
+a.map;if(a.env_map!==undefined)this.env_map=a.env_map;if(a.combine!==undefined)this.combine=a.combine;if(a.reflectivity!==undefined)this.reflectivity=a.reflectivity;if(a.refraction_ratio!==undefined)this.refraction_ratio=a.refraction_ratio;if(a.fog!==undefined)this.fog=a.fog;if(a.opacity!==undefined)this.opacity=a.opacity;if(a.shading!==undefined)this.shading=a.shading;if(a.blending!==undefined)this.blending=a.blending;if(a.wireframe!==undefined)this.wireframe=a.wireframe;if(a.wireframe_linewidth!==
+undefined)this.wireframe_linewidth=a.wireframe_linewidth;if(a.wireframe_linecap!==undefined)this.wireframe_linecap=a.wireframe_linecap;if(a.wireframe_linejoin!==undefined)this.wireframe_linejoin=a.wireframe_linejoin}};
+THREE.MeshBasicMaterial.prototype={toString:function(){return"THREE.MeshBasicMaterial ( id: "+this.id+" color: "+this.color+" map: "+this.map+" env_map: "+this.env_map+" combine: "+this.combine+" reflectivity: "+this.reflectivity+" refraction_ratio: "+this.refraction_ratio+" opacity: "+this.opacity+" blending: "+this.blending+" wireframe: "+this.wireframe+" wireframe_linewidth: "+this.wireframe_linewidth+" wireframe_linecap: "+this.wireframe_linecap+
+" wireframe_linejoin: "+this.wireframe_linejoin+" )"}};THREE.MeshBasicMaterialCounter={value:0};
+THREE.MeshLambertMaterial=function(a){this.id=THREE.MeshLambertMaterialCounter.value++;this.color=new THREE.Color(16777215);this.env_map=this.map=null;this.combine=THREE.MultiplyOperation;this.reflectivity=1;this.refraction_ratio=0.98;this.fog=true;this.opacity=1;this.shading=THREE.SmoothShading;this.blending=THREE.NormalBlending;this.wireframe=false;this.wireframe_linewidth=1;this.wireframe_linejoin=this.wireframe_linecap="round";if(a){a.color!==undefined&&this.color.setHex(a.color);if(a.map!==undefined)this.map=
+a.map;if(a.env_map!==undefined)this.env_map=a.env_map;if(a.combine!==undefined)this.combine=a.combine;if(a.reflectivity!==undefined)this.reflectivity=a.reflectivity;if(a.refraction_ratio!==undefined)this.refraction_ratio=a.refraction_ratio;if(a.fog!==undefined)this.fog=a.fog;if(a.opacity!==undefined)this.opacity=a.opacity;if(a.shading!==undefined)this.shading=a.shading;if(a.blending!==undefined)this.blending=a.blending;if(a.wireframe!==undefined)this.wireframe=a.wireframe;if(a.wireframe_linewidth!==
+undefined)this.wireframe_linewidth=a.wireframe_linewidth;if(a.wireframe_linecap!==undefined)this.wireframe_linecap=a.wireframe_linecap;if(a.wireframe_linejoin!==undefined)this.wireframe_linejoin=a.wireframe_linejoin}};
+THREE.MeshLambertMaterial.prototype={toString:function(){return"THREE.MeshLambertMaterial ( id: "+this.id+" color: "+this.color+" map: "+this.map+" env_map: "+this.env_map+" combine: "+this.combine+" reflectivity: "+this.reflectivity+" refraction_ratio: "+this.refraction_ratio+" opacity: "+this.opacity+" shading: "+this.shading+" blending: "+this.blending+" wireframe: "+this.wireframe+" wireframe_linewidth: "+this.wireframe_linewidth+" wireframe_linecap: "+
+this.wireframe_linecap+" wireframe_linejoin: "+this.wireframe_linejoin+" )"}};THREE.MeshLambertMaterialCounter={value:0};
+THREE.MeshPhongMaterial=function(a){this.id=THREE.MeshPhongMaterialCounter.value++;this.color=new THREE.Color(16777215);this.ambient=new THREE.Color(328965);this.specular=new THREE.Color(1118481);this.shininess=30;this.env_map=this.specular_map=this.map=null;this.combine=THREE.MultiplyOperation;this.reflectivity=1;this.refraction_ratio=0.98;this.fog=true;this.opacity=1;this.shading=THREE.SmoothShading;this.blending=THREE.NormalBlending;this.wireframe=false;this.wireframe_linewidth=1;this.wireframe_linejoin=
+this.wireframe_linecap="round";if(a){if(a.color!==undefined)this.color=new THREE.Color(a.color);if(a.ambient!==undefined)this.ambient=new THREE.Color(a.ambient);if(a.specular!==undefined)this.specular=new THREE.Color(a.specular);if(a.shininess!==undefined)this.shininess=a.shininess;if(a.map!==undefined)this.map=a.map;if(a.specular_map!==undefined)this.specular_map=a.specular_map;if(a.env_map!==undefined)this.env_map=a.env_map;if(a.combine!==undefined)this.combine=a.combine;if(a.reflectivity!==undefined)this.reflectivity=
+a.reflectivity;if(a.refraction_ratio!==undefined)this.refraction_ratio=a.refraction_ratio;if(a.fog!==undefined)this.fog=a.fog;if(a.opacity!==undefined)this.opacity=a.opacity;if(a.shading!==undefined)this.shading=a.shading;if(a.blending!==undefined)this.blending=a.blending;if(a.wireframe!==undefined)this.wireframe=a.wireframe;if(a.wireframe_linewidth!==undefined)this.wireframe_linewidth=a.wireframe_linewidth;if(a.wireframe_linecap!==undefined)this.wireframe_linecap=a.wireframe_linecap;if(a.wireframe_linejoin!==
+undefined)this.wireframe_linejoin=a.wireframe_linejoin}};
+THREE.MeshPhongMaterial.prototype={toString:function(){return"THREE.MeshPhongMaterial ( id: "+this.id+" color: "+this.color+" ambient: "+this.ambient+" specular: "+this.specular+" shininess: "+this.shininess+" map: "+this.map+" specular_map: "+this.specular_map+" env_map: "+this.env_map+" combine: "+this.combine+" reflectivity: "+this.reflectivity+" refraction_ratio: "+this.refraction_ratio+" opacity: "+this.opacity+" shading: "+this.shading+" wireframe: "+
+this.wireframe+" wireframe_linewidth: "+this.wireframe_linewidth+" wireframe_linecap: "+this.wireframe_linecap+" wireframe_linejoin: "+this.wireframe_linejoin+" )"}};THREE.MeshPhongMaterialCounter={value:0};
+THREE.MeshDepthMaterial=function(a){this.opacity=1;this.shading=THREE.SmoothShading;this.blending=THREE.NormalBlending;this.wireframe=false;this.wireframe_linewidth=1;this.wireframe_linejoin=this.wireframe_linecap="round";if(a){if(a.opacity!==undefined)this.opacity=a.opacity;if(a.blending!==undefined)this.blending=a.blending}};THREE.MeshDepthMaterial.prototype={toString:function(){return"THREE.MeshDepthMaterial"}};
+THREE.MeshNormalMaterial=function(a){this.opacity=1;this.shading=THREE.FlatShading;this.blending=THREE.NormalBlending;if(a){if(a.opacity!==undefined)this.opacity=a.opacity;if(a.shading!==undefined)this.shading=a.shading;if(a.blending!==undefined)this.blending=a.blending}};THREE.MeshNormalMaterial.prototype={toString:function(){return"THREE.MeshNormalMaterial"}};THREE.MeshFaceMaterial=function(){};THREE.MeshFaceMaterial.prototype={toString:function(){return"THREE.MeshFaceMaterial"}};
+THREE.MeshShaderMaterial=function(a){this.id=THREE.MeshShaderMaterialCounter.value++;this.vertex_shader=this.fragment_shader="void main() {}";this.uniforms={};this.opacity=1;this.shading=THREE.SmoothShading;this.blending=THREE.NormalBlending;this.wireframe=false;this.wireframe_linewidth=1;this.wireframe_linejoin=this.wireframe_linecap="round";if(a){if(a.fragment_shader!==undefined)this.fragment_shader=a.fragment_shader;if(a.vertex_shader!==undefined)this.vertex_shader=a.vertex_shader;if(a.uniforms!==
+undefined)this.uniforms=a.uniforms;if(a.shading!==undefined)this.shading=a.shading;if(a.blending!==undefined)this.blending=a.blending;if(a.wireframe!==undefined)this.wireframe=a.wireframe;if(a.wireframe_linewidth!==undefined)this.wireframe_linewidth=a.wireframe_linewidth;if(a.wireframe_linecap!==undefined)this.wireframe_linecap=a.wireframe_linecap;if(a.wireframe_linejoin!==undefined)this.wireframe_linejoin=a.wireframe_linejoin}};
+THREE.MeshShaderMaterial.prototype={toString:function(){return"THREE.MeshShaderMaterial ( id: "+this.id+" blending: "+this.blending+" wireframe: "+this.wireframe+" wireframe_linewidth: "+this.wireframe_linewidth+" wireframe_linecap: "+this.wireframe_linecap+" wireframe_linejoin: "+this.wireframe_linejoin+" )"}};THREE.MeshShaderMaterialCounter={value:0};
+THREE.ParticleBasicMaterial=function(a){this.color=new THREE.Color(16777215);this.map=null;this.opacity=1;this.blending=THREE.NormalBlending;this.offset=new THREE.Vector2;if(a){a.color!==undefined&&this.color.setHex(a.color);if(a.map!==undefined)this.map=a.map;if(a.opacity!==undefined)this.opacity=a.opacity;if(a.blending!==undefined)this.blending=a.blending}};
+THREE.ParticleBasicMaterial.prototype={toString:function(){return"THREE.ParticleBasicMaterial ( color: "+this.color+" map: "+this.map+" opacity: "+this.opacity+" blending: "+this.blending+" )"}};THREE.ParticleCircleMaterial=function(a){this.color=new THREE.Color(16777215);this.opacity=1;this.blending=THREE.NormalBlending;if(a){a.color!==undefined&&this.color.setHex(a.color);if(a.opacity!==undefined)this.opacity=a.opacity;if(a.blending!==undefined)this.blending=a.blending}};
+THREE.ParticleCircleMaterial.prototype={toString:function(){return"THREE.ParticleCircleMaterial ( color: "+this.color+" opacity: "+this.opacity+" blending: "+this.blending+" )"}};THREE.ParticleDOMMaterial=function(a){this.domElement=a};THREE.ParticleDOMMaterial.prototype={toString:function(){return"THREE.ParticleDOMMaterial ( domElement: "+this.domElement+" )"}};
+THREE.Texture=function(a,c,d,e,g,h){this.image=a;this.mapping=c!==undefined?c:new THREE.UVMapping;this.wrap_s=d!==undefined?d:THREE.ClampToEdgeWrapping;this.wrap_t=e!==undefined?e:THREE.ClampToEdgeWrapping;this.mag_filter=g!==undefined?g:THREE.LinearFilter;this.min_filter=h!==undefined?h:THREE.LinearMipMapLinearFilter};
+THREE.Texture.prototype={clone:function(){return new THREE.Texture(this.image,this.mapping,this.wrap_s,this.wrap_t,this.mag_filter,this.min_filter)},toString:function(){return"THREE.Texture ( image: "+this.image+" wrap_s: "+this.wrap_s+" wrap_t: "+this.wrap_t+" mag_filter: "+this.mag_filter+" min_filter: "+this.min_filter+" )"}};THREE.MultiplyOperation=0;THREE.MixOperation=1;THREE.RepeatWrapping=0;THREE.ClampToEdgeWrapping=1;THREE.MirroredRepeatWrapping=2;
+THREE.NearestFilter=3;THREE.NearestMipMapNearestFilter=4;THREE.NearestMipMapLinearFilter=5;THREE.LinearFilter=6;THREE.LinearMipMapNearestFilter=7;THREE.LinearMipMapLinearFilter=8;THREE.ByteType=9;THREE.UnsignedByteType=10;THREE.ShortType=11;THREE.UnsignedShortType=12;THREE.IntType=13;THREE.UnsignedIntType=14;THREE.FloatType=15;THREE.AlphaFormat=16;THREE.RGBFormat=17;THREE.RGBAFormat=18;THREE.LuminanceFormat=19;THREE.LuminanceAlphaFormat=20;
+THREE.RenderTarget=function(a,c,d){this.width=a;this.height=c;d=d||{};this.wrap_s=d.wrap_s!==undefined?d.wrap_s:THREE.ClampToEdgeWrapping;this.wrap_t=d.wrap_t!==undefined?d.wrap_t:THREE.ClampToEdgeWrapping;this.mag_filter=d.mag_filter!==undefined?d.mag_filter:THREE.LinearFilter;this.min_filter=d.min_filter!==undefined?d.min_filter:THREE.LinearMipMapLinearFilter;this.format=d.format!==undefined?d.format:THREE.RGBFormat;this.type=d.type!==undefined?d.type:THREE.UnsignedByteType};
+var Uniforms={clone:function(a){var c,d,e,g={};for(c in a){g[c]={};for(d in a[c]){e=a[c][d];g[c][d]=e instanceof THREE.Color||e instanceof THREE.Vector3||e instanceof THREE.Texture?e.clone():e}}return g},merge:function(a){var c,d,e,g={};for(c=0;c=0&&v>=0&&s>=0&&n>=0)return true;else if(t<0&&v<0||s<0&&n<0)return false;else{if(t<0)C=Math.max(C,t/(t-v));else if(v<0)m=Math.min(m,t/(t-v));if(s<0)C=Math.max(C,s/(s-n));else if(n<0)m=Math.min(m,s/(s-n));if(mt&&A.z0&&K.z<1){u=H[x]=H[x]||new THREE.RenderableParticle;u.x=K.x/K.w;u.y=K.y/K.w;u.z=K.z;u.rotation=G.rotation.z;u.scale.x=G.scale.x*Math.abs(u.x-(K.x+r.projectionMatrix.n11)/(K.w+r.projectionMatrix.n14));
+u.scale.y=G.scale.y*Math.abs(u.y-(K.y+r.projectionMatrix.n22)/(K.w+r.projectionMatrix.n24));u.materials=G.materials;m.push(u);x++}}}}C&&m.sort(a);return m};this.unprojectVector=function(l,r){var C=THREE.Matrix4.makeInvert(r.matrix);C.multiplySelf(THREE.Matrix4.makeInvert(r.projectionMatrix));C.multiplyVector3(l);return l}};
+THREE.DOMRenderer=function(){THREE.Renderer.call(this);var a=null,c=new THREE.Projector,d,e,g,h;this.domElement=document.createElement("div");this.setSize=function(o,b){d=o;e=b;g=d/2;h=e/2};this.render=function(o,b){var i,k,y,z,u,x,H,J;a=c.projectScene(o,b);i=0;for(k=a.length;i0){D.r+=ca.r*$;D.g+=ca.g*$;D.b+=ca.b*$}}else if($ instanceof THREE.PointLight){Y.sub($.position,X);Y.normalize();$=T.dot(Y)*ga;if($>0){D.r+=ca.r*$;D.g+=ca.g*$;D.b+=ca.b*$}}}}function Na(B,X,T){if(T.opacity!=0){a(T.opacity);c(T.blending);var D,
+R,$,ca,ga,ia;if(T instanceof THREE.ParticleBasicMaterial){if(T.map){ca=T.map;ga=ca.width>>1;ia=ca.height>>1;R=X.scale.x*b;$=X.scale.y*i;T=R*ga;D=$*ia;w.set(B.x-T,B.y-D,B.x+T,B.y+D);if(V.instersects(w)){k.save();k.translate(B.x,B.y);k.rotate(-X.rotation);k.scale(R,-$);k.translate(-ga,-ia);k.drawImage(ca,0,0);k.restore()}}}else if(T instanceof THREE.ParticleCircleMaterial){if(M){Q.r=da.r+ba.r+Z.r;Q.g=da.g+ba.g+Z.g;Q.b=da.b+ba.b+Z.b;m.r=T.color.r*Q.r;m.g=T.color.g*Q.g;m.b=T.color.b*Q.b;m.updateStyleString()}else m.__styleString=
+T.color.__styleString;T=X.scale.x*b;D=X.scale.y*i;w.set(B.x-T,B.y-D,B.x+T,B.y+D);if(V.instersects(w)){R=m.__styleString;if(J!=R)k.fillStyle=J=R;k.save();k.translate(B.x,B.y);k.rotate(-X.rotation);k.scale(T,D);k.beginPath();k.arc(0,0,1,0,ja,true);k.closePath();k.fill();k.restore()}}}}function Oa(B,X,T,D){if(D.opacity!=0){a(D.opacity);c(D.blending);k.beginPath();k.moveTo(B.positionScreen.x,B.positionScreen.y);k.lineTo(X.positionScreen.x,X.positionScreen.y);k.closePath();if(D instanceof THREE.LineBasicMaterial){m.__styleString=
+D.color.__styleString;B=D.linewidth;if(K!=B)k.lineWidth=K=B;B=m.__styleString;if(H!=B)k.strokeStyle=H=B;k.stroke();w.inflate(D.linewidth*2)}}}function Ia(B,X,T,D,R,$){if(R.opacity!=0){a(R.opacity);c(R.blending);f=B.positionScreen.x;j=B.positionScreen.y;q=X.positionScreen.x;l=X.positionScreen.y;r=T.positionScreen.x;C=T.positionScreen.y;k.beginPath();k.moveTo(f,j);k.lineTo(q,l);k.lineTo(r,C);k.lineTo(f,j);k.closePath();if(R instanceof THREE.MeshBasicMaterial)if(R.map)R.map.image.loaded&&R.map.mapping instanceof
+THREE.UVMapping&&xa(f,j,q,l,r,C,R.map.image,D.uvs[0].u,D.uvs[0].v,D.uvs[1].u,D.uvs[1].v,D.uvs[2].u,D.uvs[2].v);else if(R.env_map){if(R.env_map.image.loaded)if(R.env_map.mapping instanceof THREE.SphericalReflectionMapping){B=ra.matrix;Y.copy(D.vertexNormalsWorld[0]);N=(Y.x*B.n11+Y.y*B.n12+Y.z*B.n13)*0.5+0.5;G=-(Y.x*B.n21+Y.y*B.n22+Y.z*B.n23)*0.5+0.5;Y.copy(D.vertexNormalsWorld[1]);W=(Y.x*B.n11+Y.y*B.n12+Y.z*B.n13)*0.5+0.5;P=-(Y.x*B.n21+Y.y*B.n22+Y.z*B.n23)*0.5+0.5;Y.copy(D.vertexNormalsWorld[2]);I=
+(Y.x*B.n11+Y.y*B.n12+Y.z*B.n13)*0.5+0.5;L=-(Y.x*B.n21+Y.y*B.n22+Y.z*B.n23)*0.5+0.5;xa(f,j,q,l,r,C,R.env_map.image,N,G,W,P,I,L)}}else R.wireframe?Ba(R.color.__styleString,R.wireframe_linewidth):Ca(R.color.__styleString);else if(R instanceof THREE.MeshLambertMaterial){if(R.map&&!R.wireframe){R.map.mapping instanceof THREE.UVMapping&&xa(f,j,q,l,r,C,R.map.image,D.uvs[0].u,D.uvs[0].v,D.uvs[1].u,D.uvs[1].v,D.uvs[2].u,D.uvs[2].v);c(THREE.SubtractiveBlending)}if(M)if(!R.wireframe&&R.shading==THREE.SmoothShading&&
+D.vertexNormalsWorld.length==3){t.r=v.r=s.r=da.r;t.g=v.g=s.g=da.g;t.b=v.b=s.b=da.b;Aa($,D.v1.positionWorld,D.vertexNormalsWorld[0],t);Aa($,D.v2.positionWorld,D.vertexNormalsWorld[1],v);Aa($,D.v3.positionWorld,D.vertexNormalsWorld[2],s);n.r=(v.r+s.r)*0.5;n.g=(v.g+s.g)*0.5;n.b=(v.b+s.b)*0.5;O=Ja(t,v,s,n);xa(f,j,q,l,r,C,O,0,0,1,0,0,1)}else{Q.r=da.r;Q.g=da.g;Q.b=da.b;Aa($,D.centroidWorld,D.normalWorld,Q);m.r=R.color.r*Q.r;m.g=R.color.g*Q.g;m.b=R.color.b*Q.b;m.updateStyleString();R.wireframe?Ba(m.__styleString,
+R.wireframe_linewidth):Ca(m.__styleString)}else R.wireframe?Ba(R.color.__styleString,R.wireframe_linewidth):Ca(R.color.__styleString)}else if(R instanceof THREE.MeshDepthMaterial){E=ra.near;A=ra.far;t.r=t.g=t.b=1-Ea(B.positionScreen.z,E,A);v.r=v.g=v.b=1-Ea(X.positionScreen.z,E,A);s.r=s.g=s.b=1-Ea(T.positionScreen.z,E,A);n.r=(v.r+s.r)*0.5;n.g=(v.g+s.g)*0.5;n.b=(v.b+s.b)*0.5;O=Ja(t,v,s,n);xa(f,j,q,l,r,C,O,0,0,1,0,0,1)}else if(R instanceof THREE.MeshNormalMaterial){m.r=Fa(D.normalWorld.x);m.g=Fa(D.normalWorld.y);
+m.b=Fa(D.normalWorld.z);m.updateStyleString();R.wireframe?Ba(m.__styleString,R.wireframe_linewidth):Ca(m.__styleString)}}}function Ba(B,X){if(H!=B)k.strokeStyle=H=B;if(K!=X)k.lineWidth=K=X;k.stroke();w.inflate(X*2)}function Ca(B){if(J!=B)k.fillStyle=J=B;k.fill()}function xa(B,X,T,D,R,$,ca,ga,ia,na,la,oa,ya){var ta,pa;ta=ca.width-1;pa=ca.height-1;ga*=ta;ia*=pa;na*=ta;la*=pa;oa*=ta;ya*=pa;T-=B;D-=X;R-=B;$-=X;na-=ga;la-=ia;oa-=ga;ya-=ia;pa=1/(na*ya-oa*la);ta=(ya*T-la*R)*pa;la=(ya*D-la*$)*pa;T=(na*R-
+oa*T)*pa;D=(na*$-oa*D)*pa;B=B-ta*ga-T*ia;X=X-la*ga-D*ia;k.save();k.transform(ta,la,T,D,B,X);k.clip();k.drawImage(ca,0,0);k.restore()}function Ja(B,X,T,D){var R=~~(B.r*255),$=~~(B.g*255);B=~~(B.b*255);var ca=~~(X.r*255),ga=~~(X.g*255);X=~~(X.b*255);var ia=~~(T.r*255),na=~~(T.g*255);T=~~(T.b*255);var la=~~(D.r*255),oa=~~(D.g*255);D=~~(D.b*255);ha[0]=R<0?0:R>255?255:R;ha[1]=$<0?0:$>255?255:$;ha[2]=B<0?0:B>255?255:B;ha[4]=ca<0?0:ca>255?255:ca;ha[5]=ga<0?0:ga>255?255:ga;ha[6]=X<0?0:X>255?255:X;ha[8]=ia<
+0?0:ia>255?255:ia;ha[9]=na<0?0:na>255?255:na;ha[10]=T<0?0:T>255?255:T;ha[12]=la<0?0:la>255?255:la;ha[13]=oa<0?0:oa>255?255:oa;ha[14]=D<0?0:D>255?255:D;ka.putImageData(fa,0,0);ua.drawImage(qa,0,0);return sa}function Ea(B,X,T){B=(B-X)/(T-X);return B*B*(3-2*B)}function Fa(B){B=(B+1)*0.5;return B<0?0:B>1?1:B}function Ga(B,X){var T=X.x-B.x,D=X.y-B.y,R=1/Math.sqrt(T*T+D*D);T*=R;D*=R;X.x+=T;X.y+=D;B.x-=T;B.y-=D}var Da,Ka,aa,ma,wa,Ha,La,za;k.setTransform(1,0,0,-1,b,i);this.autoClear&&this.clear();d=e.projectScene(ea,
+ra,this.sortElements);(M=ea.lights.length>0)&&Ma(ea);Da=0;for(Ka=d.length;Da0){W.r+=L.color.r*V;W.g+=L.color.g*V;W.b+=L.color.b*V}}else if(L instanceof THREE.PointLight){C.sub(L.position,G.centroidWorld);C.normalize();V=G.normalWorld.dot(C)*L.intensity;if(V>0){W.r+=L.color.r*V;W.g+=L.color.g*V;W.b+=L.color.b*V}}}}function c(N,G,W,P,I,L){s=e(n++);s.setAttribute("d","M "+N.positionScreen.x+
+" "+N.positionScreen.y+" L "+G.positionScreen.x+" "+G.positionScreen.y+" L "+W.positionScreen.x+","+W.positionScreen.y+"z");if(I instanceof THREE.MeshBasicMaterial)F.__styleString=I.color.__styleString;else if(I instanceof THREE.MeshLambertMaterial)if(U){f.r=j.r;f.g=j.g;f.b=j.b;a(L,P,f);F.r=I.color.r*f.r;F.g=I.color.g*f.g;F.b=I.color.b*f.b;F.updateStyleString()}else F.__styleString=I.color.__styleString;else if(I instanceof THREE.MeshDepthMaterial){r=1-I.__2near/(I.__farPlusNear-P.z*I.__farMinusNear);
+F.setRGB(r,r,r)}else I instanceof THREE.MeshNormalMaterial&&F.setRGB(g(P.normalWorld.x),g(P.normalWorld.y),g(P.normalWorld.z));I.wireframe?s.setAttribute("style","fill: none; stroke: "+F.__styleString+"; stroke-width: "+I.wireframe_linewidth+"; stroke-opacity: "+I.opacity+"; stroke-linecap: "+I.wireframe_linecap+"; stroke-linejoin: "+I.wireframe_linejoin):s.setAttribute("style","fill: "+F.__styleString+"; fill-opacity: "+I.opacity);b.appendChild(s)}function d(N,G,W,P,I,L,V){s=e(n++);s.setAttribute("d",
+"M "+N.positionScreen.x+" "+N.positionScreen.y+" L "+G.positionScreen.x+" "+G.positionScreen.y+" L "+W.positionScreen.x+","+W.positionScreen.y+" L "+P.positionScreen.x+","+P.positionScreen.y+"z");if(L instanceof THREE.MeshBasicMaterial)F.__styleString=L.color.__styleString;else if(L instanceof THREE.MeshLambertMaterial)if(U){f.r=j.r;f.g=j.g;f.b=j.b;a(V,I,f);F.r=L.color.r*f.r;F.g=L.color.g*f.g;F.b=L.color.b*f.b;F.updateStyleString()}else F.__styleString=L.color.__styleString;else if(L instanceof THREE.MeshDepthMaterial){r=
+1-L.__2near/(L.__farPlusNear-I.z*L.__farMinusNear);F.setRGB(r,r,r)}else L instanceof THREE.MeshNormalMaterial&&F.setRGB(g(I.normalWorld.x),g(I.normalWorld.y),g(I.normalWorld.z));L.wireframe?s.setAttribute("style","fill: none; stroke: "+F.__styleString+"; stroke-width: "+L.wireframe_linewidth+"; stroke-opacity: "+L.opacity+"; stroke-linecap: "+L.wireframe_linecap+"; stroke-linejoin: "+L.wireframe_linejoin):s.setAttribute("style","fill: "+F.__styleString+"; fill-opacity: "+L.opacity);b.appendChild(s)}
+function e(N){if(m[N]==null){m[N]=document.createElementNS("http://www.w3.org/2000/svg","path");O==0&&m[N].setAttribute("shape-rendering","crispEdges");return m[N]}return m[N]}function g(N){return N<0?Math.min((1+N)*0.5,0.5):0.5+Math.min(N*0.5,0.5)}var h=null,o=new THREE.Projector,b=document.createElementNS("http://www.w3.org/2000/svg","svg"),i,k,y,z,u,x,H,J,K=new THREE.Rectangle,p=new THREE.Rectangle,U=false,F=new THREE.Color(16777215),f=new THREE.Color(16777215),j=new THREE.Color(0),q=new THREE.Color(0),
+l=new THREE.Color(0),r,C=new THREE.Vector3,m=[],t=[],v=[],s,n,E,A,O=1;this.domElement=b;this.sortElements=this.sortObjects=this.autoClear=true;this.setQuality=function(N){switch(N){case "high":O=1;break;case "low":O=0}};this.setSize=function(N,G){i=N;k=G;y=i/2;z=k/2;b.setAttribute("viewBox",-y+" "+-z+" "+i+" "+k);b.setAttribute("width",i);b.setAttribute("height",k);K.set(-y,-z,y,z)};this.clear=function(){for(;b.childNodes.length>0;)b.removeChild(b.childNodes[0])};this.render=function(N,G){var W,P,
+I,L,V,S,w,M;this.autoClear&&this.clear();h=o.projectScene(N,G,this.sortElements);A=E=n=0;if(U=N.lights.length>0){w=N.lights;j.setRGB(0,0,0);q.setRGB(0,0,0);l.setRGB(0,0,0);W=0;for(P=w.length;W
"
+
+ alertBox.innerHTML = msg;
+ alertBox.style.display = 'block';
+
+ // log(msg);
+ }
+
+ function loadPlaneGeometry() {
+ // TODO: switch to lines instead of the Plane object so we can get rid of the horizontal lines in canvas renderer...
+ plane = new THREE.Mesh(new Plane(100, 100, 10, 10), new THREE.MeshBasicMaterial({color:0xafafaf,wireframe:true}));
+ scene.addObject(plane);
+ }
+
+ function loadObjectGeometry() {
+ if (scene && geometry) {
+ if (objectMaterial == 'wireframe') {
+ // material = new THREE.MeshColorStrokeMaterial(objectColor, 1, 1);
+ material = new THREE.MeshBasicMaterial({color:objectColor,wireframe:true});
+ } else {
+ if (isWebGl) {
+ // material = new THREE.MeshPhongMaterial(objectColor, objectColor, 0xffffff, 50, 1.0);
+ // material = new THREE.MeshColorFillMaterial(objectColor);
+ // material = new THREE.MeshLambertMaterial({color:objectColor});
+ material = new THREE.MeshLambertMaterial({color:objectColor, shading: THREE.FlatShading});
+ } else {
+ // material = new THREE.MeshColorFillMaterial(objectColor);
+ material = new THREE.MeshLambertMaterial({color:objectColor, shading: THREE.FlatShading});
+ }
+ }
+
+ // scene.removeObject(object);
+
+ if (object) {
+ // shouldn't be needed, but this fixes a bug with webgl not removing previous object when loading a new one dynamically
+ object.materials = [new THREE.MeshBasicMaterial({color:0xffffff, opacity:0})];
+ scene.removeObject(object);
+ // object.geometry = geometry;
+ // object.materials = [material];
+ }
+
+ object = new THREE.Mesh(geometry, material);
+ scene.addObject(object);
+
+ if (objectMaterial != 'wireframe') {
+ object.overdraw = true;
+ object.doubleSided = true;
+ }
+
+ object.updateMatrix();
+
+ targetXRotation = 0;
+ targetYRotation = 0;
+
+ sceneLoop();
+ }
+ }
+
+};
+
+var STLGeometry = function(stlArray) {
+ // log("building geometry...");
+ THREE.Geometry.call(this);
+
+ var scope = this;
+
+ // var vertexes = stlArray[0];
+ // var normals = stlArray[1];
+ // var faces = stlArray[2];
+
+ for (var i=0; i 0){
+ theworker.postToWorkerFunction(callings[0]);
+ callings.shift();
+ }
+ };
+ document.body.appendChild(scr);
+
+ var binaryscr = document.createElement("SCRIPT");
+ binaryscr.src = thingiurlbase + '/binaryReader.js';
+ binaryscr.type = "text/javascript";
+ document.body.appendChild(binaryscr);
+
+ return theworker;
+ };
+ that.fake = true;
+ that.add = function(pth, worker){
+ workers[pth] = worker;
+ return function(param){
+ masters[pth].onmessage({"data": param});
+ };
+ };
+ that.toString = function(){
+ return "FakeWorker('"+path+"')";
+ };
+ return that;
+ }());
+}
+
+/* Then just use WorkerFacade instead of Worker (or alias it)
+
+The Worker code must should use a custom function (name it how you want) instead of postMessage.
+Put this at the end of the Worker:
+
+if(typeof(window) === "undefined"){
+ onmessage = nameOfWorkerFunction;
+ customPostMessage = postMessage;
+} else {
+ customPostMessage = WorkerFacade.add("path/to/thisworker.js", nameOfWorkerFunction);
+}
+
+*/
diff --git a/extlib/video-js/LGPLv3-LICENSE.txt b/extlib/video-js/LGPLv3-LICENSE.txt
new file mode 100644
index 00000000..65c5ca88
--- /dev/null
+++ b/extlib/video-js/LGPLv3-LICENSE.txt
@@ -0,0 +1,165 @@
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+ This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+ 0. Additional Definitions.
+
+ As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+ "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+ An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+ A "Combined Work" is a work produced by combining or linking an
+Application with the Library. The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+ The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+ The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+ 1. Exception to Section 3 of the GNU GPL.
+
+ You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+ 2. Conveying Modified Versions.
+
+ If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+ a) under this License, provided that you make a good faith effort to
+ ensure that, in the event an Application does not supply the
+ function or data, the facility still operates, and performs
+ whatever part of its purpose remains meaningful, or
+
+ b) under the GNU GPL, with none of the additional permissions of
+ this License applicable to that copy.
+
+ 3. Object Code Incorporating Material from Library Header Files.
+
+ The object code form of an Application may incorporate material from
+a header file that is part of the Library. You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+ a) Give prominent notice with each copy of the object code that the
+ Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the object code with a copy of the GNU GPL and this license
+ document.
+
+ 4. Combined Works.
+
+ You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+ a) Give prominent notice with each copy of the Combined Work that
+ the Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the Combined Work with a copy of the GNU GPL and this license
+ document.
+
+ c) For a Combined Work that displays copyright notices during
+ execution, include the copyright notice for the Library among
+ these notices, as well as a reference directing the user to the
+ copies of the GNU GPL and this license document.
+
+ d) Do one of the following:
+
+ 0) Convey the Minimal Corresponding Source under the terms of this
+ License, and the Corresponding Application Code in a form
+ suitable for, and under terms that permit, the user to
+ recombine or relink the Application with a modified version of
+ the Linked Version to produce a modified Combined Work, in the
+ manner specified by section 6 of the GNU GPL for conveying
+ Corresponding Source.
+
+ 1) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (a) uses at run time
+ a copy of the Library already present on the user's computer
+ system, and (b) will operate properly with a modified version
+ of the Library that is interface-compatible with the Linked
+ Version.
+
+ e) Provide Installation Information, but only if you would otherwise
+ be required to provide such information under section 6 of the
+ GNU GPL, and only to the extent that such information is
+ necessary to install and execute a modified version of the
+ Combined Work produced by recombining or relinking the
+ Application with a modified version of the Linked Version. (If
+ you use option 4d0, the Installation Information must accompany
+ the Minimal Corresponding Source and Corresponding Application
+ Code. If you use option 4d1, you must provide the Installation
+ Information in the manner specified by section 6 of the GNU GPL
+ for conveying Corresponding Source.)
+
+ 5. Combined Libraries.
+
+ You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+ a) Accompany the combined library with a copy of the same work based
+ on the Library, uncombined with any other library facilities,
+ conveyed under the terms of this License.
+
+ b) Give prominent notice with the combined library that part of it
+ is a work based on the Library, and explaining where to find the
+ accompanying uncombined form of the same work.
+
+ 6. Revised Versions of the GNU Lesser General Public License.
+
+ The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+ If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
diff --git a/extlib/video-js/demo.html b/extlib/video-js/demo.html
deleted file mode 100644
index a8393af0..00000000
--- a/extlib/video-js/demo.html
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
- Video.js | HTML5 Video Player
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/extlib/video-js/video-js.css b/extlib/video-js/video-js.css
deleted file mode 100644
index a1a18a00..00000000
--- a/extlib/video-js/video-js.css
+++ /dev/null
@@ -1,427 +0,0 @@
-/*
-VideoJS Default Styles (http://videojs.com)
-Version 3.1.0
-*/
-
-/*
-REQUIRED STYLES (be careful overriding)
-================================================================================ */
-/* When loading the player, the video tag is replaced with a DIV,
- that will hold the video tag or object tag for other playback methods.
- The div contains the video playback element (Flash or HTML5) and controls, and sets the width and height of the video.
-
- ** If you want to add some kind of border/padding (e.g. a frame), or special positioning, use another containing element.
- Otherwise you risk messing up control positioning and full window mode. **
-*/
-.video-js {
- background-color: #000; position: relative; padding: 0;
-
- /* Start with 10px for base font size so other dimensions can be em based and easily calculable. */
- font-size: 10px;
-
- /* Allow poster to be vertially aligned. */
- vertical-align: middle;
- /* display: table-cell; */ /*This works in Safari but not Firefox.*/
-}
-
-/* Playback technology elements expand to the width/height of the containing div.
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:60
+msgid ""
+"There doesn't seem to be a page at this address. Sorry!
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:23
+msgid "Comment"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use Markdown 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 ""
@@ -962,74 +1106,69 @@ msgstr ""
msgid "commented on your post"
msgstr ""
-#: mediagoblin/user_pages/views.py:161
+#: mediagoblin/user_pages/views.py:166
msgid "Oops, your comment was empty."
msgstr ""
-#: mediagoblin/user_pages/views.py:167
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
msgstr ""
-#: mediagoblin/user_pages/views.py:235
+#: 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:243
+#: mediagoblin/user_pages/views.py:248
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:258
+#: mediagoblin/user_pages/views.py:264
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:266
-msgid "Please check your entries and try again."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:297
-msgid ""
-"Some of the files with this entry seem to be missing. Deleting anyway."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:302
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
msgstr ""
-#: mediagoblin/user_pages/views.py:309
+#: 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:317
+#: 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:379
+#: mediagoblin/user_pages/views.py:375
msgid "You deleted the item from the collection."
msgstr ""
-#: mediagoblin/user_pages/views.py:383
+#: 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:393
+#: 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:426
+#: mediagoblin/user_pages/views.py:422
#, python-format
msgid "You deleted the collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:433
+#: 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:443
+#: 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 89fde97f..495ef726 100644
Binary files a/mediagoblin/i18n/ca/LC_MESSAGES/mediagoblin.mo and b/mediagoblin/i18n/ca/LC_MESSAGES/mediagoblin.mo differ
diff --git a/mediagoblin/i18n/ca/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/ca/LC_MESSAGES/mediagoblin.po
index ee4a0aca..28bdca82 100644
--- a/mediagoblin/i18n/ca/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/ca/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:
# Al fred , 2011.
# , 2011.
+# , 2012.
msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://issues.mediagoblin.org/\n"
-"POT-Creation-Date: 2012-09-24 14:01-0500\n"
-"PO-Revision-Date: 2012-09-24 18:57+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 \n"
"Language-Team: LANGUAGE \n"
"MIME-Version: 1.0\n"
@@ -20,97 +21,111 @@ 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 ""
+msgstr "Nom d'usuari o correu"
-#: 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 "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 ""
+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 ""
+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 ""
+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 ""
-"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 ""
+
+#: 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:271
msgid ""
"Could not send password recovery email as your username is inactive or your "
"account's email address has not been verified."
-msgstr ""
+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 ""
-
-#: mediagoblin/auth/views.py:333
+#: mediagoblin/auth/views.py:328
msgid "You can now log in using your new password."
-msgstr ""
+msgstr "Ara et pots conectar amb la teva nova contrasenya."
-#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:83
+#: 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"
#: mediagoblin/edit/forms.py:28 mediagoblin/submit/forms.py:31
msgid "Description of this work"
-msgstr ""
+msgstr "Descripció d'aquest treball."
#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:52
-#: mediagoblin/edit/forms.py:87 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"
" \n"
" Markdown for formatting."
-msgstr ""
+msgstr "Pots utilitzar⏎ ⏎ Markdown per donar-li format"
#: mediagoblin/edit/forms.py:33 mediagoblin/submit/forms.py:36
msgid "Tags"
@@ -118,26 +133,26 @@ msgstr "Etiquetes"
#: mediagoblin/edit/forms.py:35 mediagoblin/submit/forms.py:38
msgid "Separate tags by commas."
-msgstr ""
+msgstr "Separa els tags amb comes."
-#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:91
+#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:101
msgid "Slug"
-msgstr ""
+msgstr "Llimac"
-#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:92
+#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:102
msgid "The slug can't be empty"
-msgstr ""
+msgstr "El llimac no pot ésser buit"
#: mediagoblin/edit/forms.py:40
msgid ""
"The title part of this media's address. You usually don't need to change "
"this."
-msgstr ""
+msgstr "El títol de l'adreça d'aquest mitjà. Normalment no necessites modificar això."
#: mediagoblin/edit/forms.py:44 mediagoblin/submit/forms.py:41
#: mediagoblin/templates/mediagoblin/utils/license.html:20
msgid "License"
-msgstr ""
+msgstr "Llicència"
#: mediagoblin/edit/forms.py:50
msgid "Bio"
@@ -149,80 +164,101 @@ msgstr "Lloc web"
#: mediagoblin/edit/forms.py:58
msgid "This address contains errors"
-msgstr ""
+msgstr "Aquesta adreça conté errors"
#: mediagoblin/edit/forms.py:63
msgid "Old password"
-msgstr ""
+msgstr "Contrasenya antiga"
#: mediagoblin/edit/forms.py:64
msgid "Enter your old password to prove you own this account."
-msgstr ""
+msgstr "Introdueix la teva contrasenya antiga per comprovar que aquest compte és teu."
#: mediagoblin/edit/forms.py:67
msgid "New password"
+msgstr "Nova contrasenya"
+
+#: mediagoblin/edit/forms.py:74
+msgid "License preference"
msgstr ""
-#: mediagoblin/edit/forms.py:72
+#: 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 ""
+msgstr "Envia'm correu quan d'altres comentin al meu mitjà"
-#: mediagoblin/edit/forms.py:84
+#: mediagoblin/edit/forms.py:94
msgid "The title can't be empty"
-msgstr ""
+msgstr "El títol no pot ser buit"
-#: mediagoblin/edit/forms.py:86 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 "Descripció d'aquesta col.lecció"
-#: mediagoblin/edit/forms.py:93
+#: mediagoblin/edit/forms.py:103
msgid ""
"The title part of this collection's address. You usually don't need to "
"change this."
-msgstr ""
+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 ""
+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:155
+#, python-format
+msgid "You added the attachment %s!"
+msgstr ""
+
#: 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:198
+#: mediagoblin/edit/views.py:204
msgid "Profile changes saved"
-msgstr ""
+msgstr "Els canvis al perfil s'han guardat"
-#: mediagoblin/edit/views.py:227 mediagoblin/edit/views.py:247
-msgid "Account settings saved"
-msgstr ""
+#: mediagoblin/edit/views.py:241
+msgid "Wrong password"
+msgstr "Contrasenya errònia"
#: mediagoblin/edit/views.py:252
-msgid "Wrong password"
+msgid "Account settings saved"
+msgstr "Els detalls del compte s'han guardat"
+
+#: mediagoblin/edit/views.py:286
+msgid "You need to confirm the deletion of your account."
msgstr ""
-#: mediagoblin/edit/views.py:288 mediagoblin/submit/views.py:211
-#: mediagoblin/user_pages/views.py:215
+#: 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 "Ja tens una col.lecció anomenada \"%s\"!"
-#: mediagoblin/edit/views.py:292
+#: mediagoblin/edit/views.py:326
msgid "A collection with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:309
+#: mediagoblin/edit/views.py:343
msgid "You are editing another user's collection. Proceed with caution."
-msgstr ""
+msgstr "Estas editant la col.lecció d'un altre usuari. Prossegueix amb cautela."
#: mediagoblin/gmg_commands/theme.py:58
msgid "Cannot link theme... no theme set\n"
-msgstr ""
+msgstr "No es pot enllaçar el tema... no hi ha tema establert\n"
#: mediagoblin/gmg_commands/theme.py:71
msgid "No asset directory for this theme\n"
@@ -230,56 +266,64 @@ msgstr ""
#: mediagoblin/gmg_commands/theme.py:74
msgid "However, old link directory symlink found; removed.\n"
+msgstr "Tot i així, l'enllaç antic al directori s'ha trobat; eliminat.\n"
+
+#: mediagoblin/meddleware/csrf.py:134
+msgid ""
+"CSRF cookie not present. This is most likely the result of a cookie blocker "
+"or somesuch. Make sure to permit the settings of cookies for this "
+"domain."
msgstr ""
-#: mediagoblin/media_types/__init__.py:60
-#: mediagoblin/media_types/__init__.py:120
+#: mediagoblin/media_types/__init__.py:61
+#: mediagoblin/media_types/__init__.py:102
msgid "Sorry, I don't support that file type :("
-msgstr ""
+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 ""
+msgstr "La transformació del vídeo ha fallat"
-#: mediagoblin/plugins/oauth/forms.py:26
-msgid "Client ID"
-msgstr ""
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
+msgid "Location"
+msgstr "Ubicació"
-#: 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 OpenStreetMap"
+msgstr "Veure a OpenStreetMap"
+
+#: mediagoblin/plugins/oauth/forms.py:29
+msgid "Allow"
+msgstr "Permetre"
#: mediagoblin/plugins/oauth/forms.py:30
-msgid "Allow"
-msgstr ""
-
-#: mediagoblin/plugins/oauth/forms.py:31
msgid "Deny"
-msgstr ""
+msgstr "Denegar"
+
+#: mediagoblin/plugins/oauth/forms.py:34
+msgid "Name"
+msgstr "Nom"
#: mediagoblin/plugins/oauth/forms.py:35
-msgid "Name"
-msgstr ""
+msgid "The name of the OAuth client"
+msgstr "El nom del client OAuth"
#: mediagoblin/plugins/oauth/forms.py:36
-msgid "The name of the OAuth client"
-msgstr ""
-
-#: mediagoblin/plugins/oauth/forms.py:37
msgid "Description"
-msgstr ""
+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 ""
+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 ""
+msgstr "Tipus"
-#: mediagoblin/plugins/oauth/forms.py:46
+#: mediagoblin/plugins/oauth/forms.py:45
msgid ""
"Confidential - The client can\n"
" make requests to the GNU MediaGoblin instance that can not be\n"
@@ -287,27 +331,42 @@ msgid ""
" Public - The client can't make confidential\n"
" requests to the GNU MediaGoblin instance (e.g. client-side\n"
" JavaScript client)."
-msgstr ""
+msgstr "Confidencial - 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). \n Public - 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 ""
+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 required for public clients."
-msgstr ""
+msgstr "La URI de redirecció per les aplicacions, aquest camp\n és requeriment 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 ""
+msgstr "Aquest camp és requeriment per a clients públics"
#: mediagoblin/plugins/oauth/views.py:59
msgid "The client {0} has been registered!"
+msgstr "El client {0} ha sigut enregistrat!"
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/connections.html:22
+msgid "OAuth client connections"
msgstr ""
-#: 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 "Afegir"
+
+#: mediagoblin/processing/__init__.py:172
msgid "Invalid file given for media type."
msgstr "Aquest tipus de fitxer no és vàlid."
@@ -315,118 +374,45 @@ 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 ""
+msgstr "S'ha afegit la col.leccio \"%s\"!"
-#: mediagoblin/templates/mediagoblin/404.html:24
-msgid "Image of 404 goblin stressing out"
-msgstr "Imatge de la pantalla 404, el goblin no sap què fer..."
-
-#: mediagoblin/templates/mediagoblin/404.html:25
-msgid "Oops!"
-msgstr "Ups!"
-
-#: mediagoblin/templates/mediagoblin/404.html:26
-msgid "There doesn't seem to be a page at this address. Sorry!"
-msgstr "Sembla que no hi ha cap pàgina en aquesta adreça. Ho sentim."
-
-#: mediagoblin/templates/mediagoblin/404.html:28
-msgid ""
-"If you're sure the address is correct, maybe the page you're looking for has"
-" been moved or deleted."
-msgstr "Si esteu convençut que l'adreça és correcta, pot ser que la pàgina que cerqueu s'hagi canviat d'ubicació o s'hagi eliminat."
-
-#: mediagoblin/templates/mediagoblin/base.html:50
-msgid "MediaGoblin logo"
-msgstr "Logo de mediagoblin"
-
-#: mediagoblin/templates/mediagoblin/base.html:60
+#: mediagoblin/templates/mediagoblin/base.html:64
msgid "Verify your email!"
-msgstr ""
+msgstr "Verifica el teu correu electrònic"
-#: mediagoblin/templates/mediagoblin/base.html:66
-msgid "+ Add media"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:67
-msgid "+ Add collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:69
-msgid "View your profile"
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "log out"
msgstr ""
#: mediagoblin/templates/mediagoblin/base.html:70
-msgid "Log out"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:75
#: 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:89
-msgid ""
-"Powered by MediaGoblin, a GNU project."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:92
+#: mediagoblin/templates/mediagoblin/base.html:79
#, python-format
-msgid ""
-"Released under the AGPL. Source code available."
+msgid "%(user_name)s's account"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:24
-msgid "Explore"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:26
-msgid "Hi there, welcome to this MediaGoblin site!"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:28
-msgid ""
-"This site is running MediaGoblin, an "
-"extraordinarily great piece of media hosting software."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:29
-msgid ""
-"To add your own media, place comments, and more, you can log in with your "
-"MediaGoblin account."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:31
-msgid "Don't have one yet? It's easy!"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:32
-#, python-format
-msgid ""
-"Create an account at this site\n"
-" or\n"
-" Set up MediaGoblin on your own server"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:40
-msgid "Most recent media"
-msgstr ""
+#: 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
@@ -434,10 +420,79 @@ msgstr ""
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:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:156
+msgid "Add media"
+msgstr "Tots els fitxers"
+
+#: 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 MediaGoblin, a GNU project."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:125
+#, python-format
+msgid ""
+"Released under the AGPL. Source code available."
+msgstr "Alliberat segons la AGPL. Codi font disponible."
+
+#: mediagoblin/templates/mediagoblin/error.html:24
+msgid "Image of goblin stressing out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/root.html:31
+msgid "Explore"
+msgstr "Explorar"
+
+#: 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:35
+msgid ""
+"This site is running MediaGoblin, an "
+"extraordinarily great piece of media hosting software."
+msgstr "El lloc esta usant MediaGoblin, una gran i extraordinària peça de software per allotjar mitjans."
+
+#: 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:38
+msgid "Don't have one yet? It's easy!"
+msgstr "No en tens una encara? Es fàcil!"
+
+#: mediagoblin/templates/mediagoblin/root.html:39
+#, python-format
+msgid ""
+"Create an account at this site\n"
+" or\n"
+" Set up MediaGoblin on your own server"
+msgstr "Crear un compte a aquest lloc \no\n Preparar MediaGoblin al teu propi servidor"
+
+#: mediagoblin/templates/mediagoblin/root.html:47
+msgid "Most recent media"
+msgstr "Mitjans més recents"
+
#: mediagoblin/templates/mediagoblin/admin/panel.html:29
msgid ""
"Here you can track the state of media being processed on this instance."
-msgstr ""
+msgstr "Aqui pots seguir l'estat del mitjà que s'està processant a aquesta instància."
#: mediagoblin/templates/mediagoblin/admin/panel.html:32
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:32
@@ -447,7 +502,7 @@ msgstr "S'està processant el fitxer"
#: mediagoblin/templates/mediagoblin/admin/panel.html:58
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
msgid "No media in-processing"
-msgstr ""
+msgstr "No s'està processant cap mitjà"
#: mediagoblin/templates/mediagoblin/admin/panel.html:61
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:59
@@ -457,34 +512,34 @@ msgstr "No s'han pogut penjar els següents fitxers:"
#: mediagoblin/templates/mediagoblin/admin/panel.html:90
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
msgid "No failed entries!"
-msgstr ""
+msgstr "Sense entrades fallades!"
#: mediagoblin/templates/mediagoblin/admin/panel.html:92
msgid "Last 10 successful uploads"
-msgstr ""
+msgstr "Les últimes 10 pujades correctes"
#: mediagoblin/templates/mediagoblin/admin/panel.html:112
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
msgid "No processed entries, yet!"
-msgstr ""
+msgstr "Encara no hi ha entrades processades!"
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:28
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:36
msgid "Set your new password"
-msgstr ""
+msgstr "Estableix la teva nova contrasenya"
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:39
msgid "Set password"
-msgstr ""
+msgstr "Establir contrasenya"
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:23
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:31
msgid "Recover password"
-msgstr ""
+msgstr "Recuperar contrasenya"
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:34
msgid "Send instructions"
-msgstr ""
+msgstr "Enviar instruccions"
#: mediagoblin/templates/mediagoblin/auth/fp_verification_email.txt:19
#, python-format
@@ -498,7 +553,7 @@ msgid ""
"\n"
"If you think this is an error, just ignore this email and continue being\n"
"a happy goblin!"
-msgstr ""
+msgstr "Hola %(username)s,⏎ ⏎ per cambiar la teva contrasenya de GNU MediaGoblin, obre la següent URL al ⏎ teu navegador:⏎ ⏎ %(verification_url)s⏎ ⏎ Si creus que hi ha un error, ignora el correu i continua essent⏎ un goblin feliç!"
#: mediagoblin/templates/mediagoblin/auth/login.html:39
msgid "Logging in failed!"
@@ -514,7 +569,7 @@ msgstr "Creeu-ne un aquí!"
#: mediagoblin/templates/mediagoblin/auth/login.html:51
msgid "Forgot your password?"
-msgstr ""
+msgstr "Has oblidat la teva contrasenya?"
#: mediagoblin/templates/mediagoblin/auth/register.html:28
#: mediagoblin/templates/mediagoblin/auth/register.html:36
@@ -536,50 +591,88 @@ 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: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:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
+msgid "Add attachment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr "Cancel·la"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
+#: mediagoblin/templates/mediagoblin/edit/edit.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
+msgid "Save changes"
+msgstr "Desa els canvis"
+
+#: mediagoblin/templates/mediagoblin/edit/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
msgid "Editing %(media_title)s"
msgstr "Edició %(media_title)s "
-#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: 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:53
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Cancel"
-msgstr "Cancel·la"
-
-#: mediagoblin/templates/mediagoblin/edit/edit.html:43
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
-msgid "Save changes"
-msgstr "Desa els canvis"
-
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
#, python-format
msgid "Changing %(username)s's account settings"
+msgstr "Modificant els detalls del compte de %(username)s"
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:59
+msgid "Delete my account"
msgstr ""
#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:29
#, python-format
msgid "Editing %(collection_title)s"
-msgstr ""
+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 ""
+msgstr "Editant perfil de %(username)s"
#: mediagoblin/templates/mediagoblin/listings/collection.html:30
#: mediagoblin/templates/mediagoblin/listings/collection.html:35
@@ -587,122 +680,162 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/listings/tag.html:35
#, python-format
msgid "Media tagged with: %(tag_name)s"
-msgstr ""
+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/image.html:23
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
-msgstr ""
+msgstr "Descarregar"
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:27
msgid "Original"
-msgstr ""
+msgstr "Original"
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:44
msgid ""
"Sorry, this audio will not work because \n"
"\tyour web browser does not support HTML5 \n"
"\taudio."
-msgstr ""
+msgstr "Ho sento, aquest audiothis àudio no funcionarà perque \n »el teu navegador web no contempla suport d'àudio \n »HTML5."
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:47
msgid ""
"You can get a modern web browser that \n"
"\tcan play the audio at \n"
"\t http://getfirefox.com!"
-msgstr ""
+msgstr "Pots obtenir un navegador web modern que \n »podrà reproduir l'àudio, a \n » http://getfirefox.com!"
#: 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 "Arxiu original"
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:63
msgid "WebM file (Vorbis codec)"
+msgstr "Arxiu WebM (Vorbis codec)"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:87
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:93
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:99
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:105
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:65
+#, python-format
+msgid "Image for %(media_title)s"
+msgstr "Imatge per %(media_title)s"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:112
+msgid "Toggle Rotate"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:113
+msgid "Perspective"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:116
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
+msgid "Front"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:121
+msgid "Top"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:124
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:125
+msgid "Side"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:130
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
+msgid "WebGL"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:138
+msgid "Download model"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
+msgid "File Format"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
+msgid "Object Height"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html: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 \n"
-"\t http://getfirefox.com!"
+" can play this video at \n"
+" http://getfirefox.com!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:69
msgid "WebM file (640p; VP8/Vorbis)"
-msgstr ""
+msgstr "Arxiu 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:83
-msgid "Add"
-msgstr ""
+msgstr "Afegir a la col.lecció"
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
msgid "Add your media"
-msgstr ""
+msgstr "Afegeix el teu mitjà"
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:30
#, python-format
msgid "%(collection_title)s (%(username)s's collection)"
-msgstr ""
+msgstr "%(collection_title)s (la col.lecció de %(username)s)"
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:39
#, python-format
msgid "%(collection_title)s by %(username)s"
-msgstr ""
+msgstr "%(collection_title)s per a %(username)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 ""
+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 ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:59
-#, python-format
-msgid ""
-"
\n"
-" %(collection_description)s\n"
-"
"
-msgstr ""
+msgstr "Esborrar"
#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:30
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
#, python-format
msgid "Really delete %(title)s?"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:47
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:50
-msgid "Delete permanently"
-msgstr ""
+msgstr "Realment vols esborrar %(title)s?"
#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:31
#, python-format
msgid "Really remove %(media_title)s from %(collection_title)s?"
+msgstr "Relment eliminar %(media_title)s de %(collection_title)s?"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:53
+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_item_confirm_remove.html:54
-msgid "Remove"
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:28
+#, python-format
+msgid "%(username)s's collections"
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/comment_email.txt:19
@@ -710,91 +843,77 @@ msgstr ""
msgid ""
"Hi %(username)s,\n"
"%(comment_author)s commented on your post (%(comment_url)s) at %(instance_name)s\n"
-msgstr ""
+msgstr "Hola %(username)s,\n%(comment_author)s ha comentat el teu post (%(comment_url)s) a %(instance_name)s\n"
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
#, python-format
msgid "%(username)s's media"
+msgstr "Mitjà de %(username)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:38
+#, python-format
+msgid ""
+"%(username)s's media with tag %(tag)s"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:37
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
#, python-format
msgid "%(username)s's media"
msgstr "%(username)s's media"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
#, python-format
msgid "❖ Browsing media by %(username)s"
-msgstr ""
+msgstr "❖ Navegant mitjà per a %(username)s"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:67
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
-#, python-format
-msgid "Image for %(media_title)s"
-msgstr ""
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:94
+msgid "Add a comment"
+msgstr "Afegeix un comentari"
#: mediagoblin/templates/mediagoblin/user_pages/media.html:102
-msgid "Add a comment"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:109
-msgid ""
-"You can use Markdown for"
-" formatting."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:113
msgid "Add this comment"
-msgstr ""
+msgstr "Afegir aquest comentari"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:132
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:123
msgid "at"
-msgstr ""
+msgstr "a"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:152
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:144
#, python-format
msgid ""
"
Added on
\n"
"
%(date)s
"
-msgstr ""
+msgstr "
Afegit el
\n
%(date)s
"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
-msgid "Attachments"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
-msgid "Add attachment"
-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:52
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
-msgstr ""
+msgstr "+"
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
-msgstr ""
+msgstr "Afegir una nova col.lecció"
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
msgid ""
"You can track the state of media being processed for your gallery here."
-msgstr ""
+msgstr "Aqui pots seguir l'estat del mitjà que s'està processant per la teva galeria"
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:89
msgid "Your last 10 successful uploads"
-msgstr ""
+msgstr "Les teves 10 últimes pujades correctes"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:31
#: mediagoblin/templates/mediagoblin/user_pages/user.html:89
#, python-format
msgid "%(username)s's profile"
-msgstr ""
+msgstr "Perfil de %(username)s"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:43
msgid "Sorry, no such user found."
@@ -837,198 +956,218 @@ msgstr "Si siu aqeust usuari però heu perdut el correu de verificació, podeu <
#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
msgid "Here's a spot to tell others about yourself."
-msgstr ""
+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:125
-msgid "Change account settings"
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:124
+msgid "Browse collections"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:138
+#: 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:151
+#: 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 ""
+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
-msgid "Add media"
-msgstr "Tots els fitxers"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:163
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:87
-#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:72
+#: 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 "Sembla que no hi ha cap mitjà aqui encara..."
+
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
+msgid "(remove)"
msgstr ""
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:39
-#, python-format
-msgid ""
-" \n"
-" %(note)s"
+#: mediagoblin/templates/mediagoblin/utils/collections.html:21
+msgid "Collected in"
msgstr ""
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:47
-#, python-format
-msgid " (remove)"
-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 "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 ""
-
-#: mediagoblin/templates/mediagoblin/utils/geolocation_map.html:38
-#, python-format
-msgid "View on OpenStreetMap"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
-msgstr ""
+msgstr "Tots els drets reservats"
#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
msgid "← Newer"
-msgstr ""
+msgstr "← Més nou"
#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
msgid "Older →"
-msgstr ""
+msgstr "Més antic →"
#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
msgid "Go to page:"
-msgstr ""
+msgstr "Anar a la pàgina:"
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:28
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:33
msgid "newer"
-msgstr ""
+msgstr "més nou"
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:39
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:44
msgid "older"
-msgstr ""
+msgstr "més antic"
#: mediagoblin/templates/mediagoblin/utils/tags.html:20
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:35
+msgid "Oops!"
+msgstr "Ups!"
+
+#: mediagoblin/tools/response.py:36
+msgid "An error occured"
msgstr ""
-#: mediagoblin/user_pages/forms.py:28
+#: mediagoblin/tools/response.py:51
+msgid "Operation not allowed"
+msgstr ""
+
+#: mediagoblin/tools/response.py:52
+msgid ""
+"Sorry Dave, I can't let you do that!
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:60
+msgid ""
+"There doesn't seem to be a page at this address. Sorry!
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:23
+msgid "Comment"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use Markdown for"
+" formatting."
+msgstr "Pots usar Markdown per donar format."
+
+#: mediagoblin/user_pages/forms.py:31
msgid "I am sure I want to delete this"
-msgstr ""
-
-#: mediagoblin/user_pages/forms.py:32
-msgid "I am sure I want to remove this item from the collection"
-msgstr ""
+msgstr "Estic segur que vull esborrar això"
#: mediagoblin/user_pages/forms.py:35
-msgid "-- Select --"
+msgid "I am sure I want to remove this item from the collection"
+msgstr "Estic segur que vull esborrar aquest element de la col.lecció"
+
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
msgstr ""
-#: mediagoblin/user_pages/forms.py:37
+#: mediagoblin/user_pages/forms.py:40
+msgid "-- Select --"
+msgstr "-- Sel.leccionar --"
+
+#: mediagoblin/user_pages/forms.py:42
msgid "Include a note"
-msgstr ""
+msgstr "Incluir una nota"
#: mediagoblin/user_pages/lib.py:56
msgid "commented on your post"
-msgstr ""
+msgstr "comentat al teu post"
-#: mediagoblin/user_pages/views.py:161
+#: mediagoblin/user_pages/views.py:166
msgid "Oops, your comment was empty."
-msgstr ""
+msgstr "Uups, el teu comentari era buit."
-#: mediagoblin/user_pages/views.py:167
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
-msgstr ""
+msgstr "El teu comentari s'ha publicat!"
-#: mediagoblin/user_pages/views.py:235
+#: 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 ""
+msgstr "Has de sel.leccionar o afegir una col.lecció"
-#: mediagoblin/user_pages/views.py:243
+#: mediagoblin/user_pages/views.py:248
#, python-format
msgid "\"%s\" already in collection \"%s\""
-msgstr ""
+msgstr "\"%s\" ja és a la col.lecció \"%s\""
-#: mediagoblin/user_pages/views.py:258
+#: mediagoblin/user_pages/views.py:264
#, python-format
msgid "\"%s\" added to collection \"%s\""
-msgstr ""
+msgstr "\"%s\" afegir a la col.lecció \"%s\""
-#: mediagoblin/user_pages/views.py:266
-msgid "Please check your entries and try again."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:297
-msgid ""
-"Some of the files with this entry seem to be missing. Deleting anyway."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:302
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
-msgstr ""
+msgstr "Has esborrat el mitjà"
-#: mediagoblin/user_pages/views.py:309
+#: mediagoblin/user_pages/views.py:293
msgid "The media was not deleted because you didn't check that you were sure."
-msgstr ""
+msgstr "El mitjà no s'ha esborrat perque no has marcat que n'estiguessis segur."
-#: mediagoblin/user_pages/views.py:317
+#: mediagoblin/user_pages/views.py:301
msgid "You are about to delete another user's media. Proceed with caution."
-msgstr ""
+msgstr "Ets a punt d'esborrar el mitjà d'un altre usuari. Prossegueix amb cautela."
+
+#: 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:379
-msgid "You deleted the item from the collection."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:383
msgid "The item was not removed because you didn't check that you were sure."
-msgstr ""
+msgstr "L'element no s'ha eliminat perque no has marcat que n'estiguessis segur."
-#: mediagoblin/user_pages/views.py:393
+#: mediagoblin/user_pages/views.py:389
msgid ""
"You are about to delete an item from another user's collection. Proceed with"
" caution."
-msgstr ""
+msgstr "Ets a punt d'esborrar un element de la col.lecció d'un altre usuari. Prossegueix amb cautela."
-#: mediagoblin/user_pages/views.py:426
+#: mediagoblin/user_pages/views.py:422
#, python-format
msgid "You deleted the collection \"%s\""
-msgstr ""
+msgstr "Has esborrat la col.lecció \"%s\""
-#: mediagoblin/user_pages/views.py:433
+#: mediagoblin/user_pages/views.py:429
msgid ""
"The collection was not deleted because you didn't check that you were sure."
-msgstr ""
+msgstr "La col.lecció no s'ha esborrat perquè no has marcat que n'estiguessis segur."
-#: mediagoblin/user_pages/views.py:443
+#: mediagoblin/user_pages/views.py:439
msgid ""
"You are about to delete another user's collection. Proceed with caution."
-msgstr ""
+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 23685f41..6b6827f0 100644
Binary files a/mediagoblin/i18n/da/LC_MESSAGES/mediagoblin.mo and b/mediagoblin/i18n/da/LC_MESSAGES/mediagoblin.mo differ
diff --git a/mediagoblin/i18n/da/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/da/LC_MESSAGES/mediagoblin.po
index 0426e9ed..8494aa60 100644
--- a/mediagoblin/i18n/da/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/da/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:
# Morten Juhl-Johansen Zölde-Fejér , 2012.
# Olle Jonsson , 2012.
+# Tanja Trudslev , 2012.
msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://issues.mediagoblin.org/\n"
-"POT-Creation-Date: 2012-09-24 14:01-0500\n"
-"PO-Revision-Date: 2012-09-24 18:57+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 \n"
"Language-Team: LANGUAGE \n"
"MIME-Version: 1.0\n"
@@ -20,111 +21,125 @@ 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 ""
+msgstr "Brugernavn eller 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 ""
+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 ""
+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 ""
+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 ""
+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 ""
+msgstr "Bekræftelsesnøglen eller brugerid er forkert"
+
+#: 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:206
-msgid "You must be logged in so we know who to send the email to!"
-msgstr ""
-
-#: mediagoblin/auth/views.py:214
msgid "You've already verified your email address!"
-msgstr ""
+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 ""
-"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 ""
+
+#: 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:271
msgid ""
"Could not send password recovery email as your username is inactive or your "
"account's email address has not been verified."
-msgstr ""
+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 ""
-
-#: mediagoblin/auth/views.py:333
+#: mediagoblin/auth/views.py:328
msgid "You can now log in using your new password."
-msgstr ""
+msgstr "Du kan nu logge ind med dit nye kodeord."
-#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:83
+#: 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"
#: mediagoblin/edit/forms.py:28 mediagoblin/submit/forms.py:31
msgid "Description of this work"
-msgstr ""
+msgstr "Beskrivelse af arbejdet"
#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:52
-#: mediagoblin/edit/forms.py:87 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"
" \n"
" Markdown for formatting."
-msgstr ""
+msgstr "Du kan bruge\n \n Markdown til formattering."
#: mediagoblin/edit/forms.py:33 mediagoblin/submit/forms.py:36
msgid "Tags"
-msgstr ""
+msgstr "Tags"
#: mediagoblin/edit/forms.py:35 mediagoblin/submit/forms.py:38
msgid "Separate tags by commas."
-msgstr ""
+msgstr "Separer tags med kommaer."
-#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:91
+#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:101
msgid "Slug"
msgstr ""
-#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:92
+#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:102
msgid "The slug can't be empty"
msgstr ""
@@ -132,16 +147,16 @@ msgstr ""
msgid ""
"The title part of this media's address. You usually don't need to change "
"this."
-msgstr ""
+msgstr "Titeldelen af dette medie's adresse. Du behøver normalt ikke ændre dette."
#: mediagoblin/edit/forms.py:44 mediagoblin/submit/forms.py:41
#: mediagoblin/templates/mediagoblin/utils/license.html:20
msgid "License"
-msgstr ""
+msgstr "Licens"
#: mediagoblin/edit/forms.py:50
msgid "Bio"
-msgstr ""
+msgstr "Bio"
#: mediagoblin/edit/forms.py:56
msgid "Website"
@@ -149,80 +164,101 @@ msgstr "Websted"
#: mediagoblin/edit/forms.py:58
msgid "This address contains errors"
-msgstr ""
+msgstr "Denne adresse indeholder fejl"
#: mediagoblin/edit/forms.py:63
msgid "Old password"
-msgstr ""
+msgstr "Gammelt kodeord"
#: mediagoblin/edit/forms.py:64
msgid "Enter your old password to prove you own this account."
-msgstr ""
+msgstr "Skriv dit gamle kodeord for at bevise det er din konto."
#: mediagoblin/edit/forms.py:67
msgid "New password"
+msgstr "Ny kodeord"
+
+#: mediagoblin/edit/forms.py:74
+msgid "License preference"
msgstr ""
-#: mediagoblin/edit/forms.py:72
+#: 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 ""
+msgstr "Email mig når andre kommenterer på mine medier"
-#: mediagoblin/edit/forms.py:84
+#: mediagoblin/edit/forms.py:94
msgid "The title can't be empty"
-msgstr ""
+msgstr "Titlen kan ikke være tom"
-#: mediagoblin/edit/forms.py:86 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 "Beskrivelse af denne samling"
-#: mediagoblin/edit/forms.py:93
+#: mediagoblin/edit/forms.py:103
msgid ""
"The title part of this collection's address. You usually don't need to "
"change this."
-msgstr ""
+msgstr "Titeldelen af denne samlings's adresse. Du behøver normalt ikke ændre dette."
-#: mediagoblin/edit/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:155
+#, python-format
+msgid "You added the attachment %s!"
msgstr ""
#: 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 ""
+msgstr "Du er ved at ændre en bruger's profil. Pas på."
-#: mediagoblin/edit/views.py:198
+#: mediagoblin/edit/views.py:204
msgid "Profile changes saved"
-msgstr ""
+msgstr "Profilændringer gemt"
-#: mediagoblin/edit/views.py:227 mediagoblin/edit/views.py:247
-msgid "Account settings saved"
-msgstr ""
+#: mediagoblin/edit/views.py:241
+msgid "Wrong password"
+msgstr "Forkert kodeord"
#: mediagoblin/edit/views.py:252
-msgid "Wrong password"
+msgid "Account settings saved"
+msgstr "Kontoindstillinger gemt"
+
+#: mediagoblin/edit/views.py:286
+msgid "You need to confirm the deletion of your account."
msgstr ""
-#: mediagoblin/edit/views.py:288 mediagoblin/submit/views.py:211
-#: mediagoblin/user_pages/views.py:215
+#: 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 "Du har allerede en samling ved navn \"%s\"!"
-#: mediagoblin/edit/views.py:292
+#: mediagoblin/edit/views.py:326
msgid "A collection with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:309
+#: mediagoblin/edit/views.py:343
msgid "You are editing another user's collection. Proceed with caution."
-msgstr ""
+msgstr "Du er ved at ændre en anden bruger's samling. Pas på."
#: mediagoblin/gmg_commands/theme.py:58
msgid "Cannot link theme... no theme set\n"
-msgstr ""
+msgstr "Kan ikke linke til tema... intet tema sat\n"
#: mediagoblin/gmg_commands/theme.py:71
msgid "No asset directory for this theme\n"
@@ -232,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:120
-msgid "Sorry, I don't support that file type :("
+#: mediagoblin/meddleware/csrf.py:134
+msgid ""
+"CSRF cookie not present. This is most likely the result of a cookie blocker "
+"or somesuch. Make sure to permit the settings of cookies for this "
+"domain."
msgstr ""
-#: mediagoblin/media_types/video/processing.py:35
+#: 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: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 OpenStreetMap"
msgstr ""
+#: mediagoblin/plugins/oauth/forms.py:29
+msgid "Allow"
+msgstr "Tillad"
+
#: mediagoblin/plugins/oauth/forms.py:30
-msgid "Allow"
-msgstr ""
-
-#: mediagoblin/plugins/oauth/forms.py:31
msgid "Deny"
-msgstr ""
+msgstr "Forbyd"
+
+#: mediagoblin/plugins/oauth/forms.py:34
+msgid "Name"
+msgstr "Navn"
#: mediagoblin/plugins/oauth/forms.py:35
-msgid "Name"
-msgstr ""
+msgid "The name of the OAuth client"
+msgstr "Navnet af OAuth klienten"
#: mediagoblin/plugins/oauth/forms.py:36
-msgid "The name of the OAuth client"
-msgstr ""
-
-#: mediagoblin/plugins/oauth/forms.py:37
msgid "Description"
-msgstr ""
+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 ""
+msgstr "Type"
-#: mediagoblin/plugins/oauth/forms.py:46
+#: mediagoblin/plugins/oauth/forms.py:45
msgid ""
"Confidential - The client can\n"
" make requests to the GNU MediaGoblin instance that can not be\n"
@@ -289,101 +333,115 @@ 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 required 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 "Dette felt er nødvendigt for offentlige klienter"
#: mediagoblin/plugins/oauth/views.py:59
msgid "The client {0} has been registered!"
+msgstr "Klienten {0} er blevet registreret!"
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/connections.html:22
+msgid "OAuth client connections"
msgstr ""
-#: mediagoblin/processing/__init__.py:138
-msgid "Invalid file given for media type."
+#: 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."
+
#: mediagoblin/submit/forms.py:26
msgid "File"
msgstr "Fil"
-#: mediagoblin/submit/views.py:57
+#: mediagoblin/submit/views.py:51
msgid "You must provide a file."
-msgstr ""
+msgstr "Du må give mig en fil"
-#: mediagoblin/submit/views.py:164
+#: mediagoblin/submit/views.py:97
msgid "Woohoo! Submitted!"
-msgstr ""
+msgstr "Juhuu! Delt!"
-#: mediagoblin/submit/views.py:215
+#: mediagoblin/submit/views.py:146
#, python-format
msgid "Collection \"%s\" added!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/404.html:24
-msgid "Image of 404 goblin stressing out"
-msgstr "Billede af stresset 404 goblin"
-
-#: mediagoblin/templates/mediagoblin/404.html:25
-msgid "Oops!"
-msgstr "Hovsa!"
-
-#: mediagoblin/templates/mediagoblin/404.html:26
-msgid "There doesn't seem to be a page at this address. Sorry!"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/404.html:28
-msgid ""
-"If you're sure the address is correct, maybe the page you're looking for has"
-" been moved or deleted."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:50
-msgid "MediaGoblin logo"
-msgstr "MediaGoblin logo"
-
-#: mediagoblin/templates/mediagoblin/base.html:60
+#: mediagoblin/templates/mediagoblin/base.html:64
msgid "Verify your email!"
-msgstr ""
+msgstr "Bekræft din email!"
-#: mediagoblin/templates/mediagoblin/base.html:66
-msgid "+ Add media"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:67
-msgid "+ Add collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:69
-msgid "View your profile"
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "log out"
msgstr ""
#: mediagoblin/templates/mediagoblin/base.html:70
-msgid "Log out"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:75
#: 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:89
-msgid ""
-"Powered by MediaGoblin, a GNU project."
+#: mediagoblin/templates/mediagoblin/base.html:79
+#, python-format
+msgid "%(user_name)s's account"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:92
+#: 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 MediaGoblin, a GNU project."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:125
#, python-format
msgid ""
"Released under the Source code available."
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:24
+#: mediagoblin/templates/mediagoblin/error.html:24
+msgid "Image of goblin stressing out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/root.html:31
msgid "Explore"
-msgstr ""
+msgstr "Udforsk"
-#: mediagoblin/templates/mediagoblin/root.html:26
+#: mediagoblin/templates/mediagoblin/root.html:33
msgid "Hi there, welcome to this MediaGoblin site!"
-msgstr ""
+msgstr "Hey, velkommen til denne MediaGoblin side!"
-#: mediagoblin/templates/mediagoblin/root.html:28
+#: mediagoblin/templates/mediagoblin/root.html:35
msgid ""
"This site is running MediaGoblin, an "
"extraordinarily great piece of media hosting software."
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:29
+#: 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 "For at tilføje dine egne medier, skrive kommentarer, og mere, du kan logge ind med din MediaGoblin konto."
-#: mediagoblin/templates/mediagoblin/root.html:31
+#: mediagoblin/templates/mediagoblin/root.html:38
msgid "Don't have one yet? It's easy!"
-msgstr ""
+msgstr "Har du ikke en endnu? Det er let!"
-#: mediagoblin/templates/mediagoblin/root.html:32
+#: mediagoblin/templates/mediagoblin/root.html:39
#, python-format
msgid ""
"Create an account at this site\n"
@@ -423,17 +485,10 @@ msgid ""
" Set up MediaGoblin on your own server"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:40
+#: mediagoblin/templates/mediagoblin/root.html:47
msgid "Most recent media"
msgstr ""
-#: 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/admin/panel.html:29
msgid ""
"Here you can track the state of media being processed on this instance."
@@ -536,47 +591,85 @@ 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: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:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
+msgid "Add attachment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr "Afbryd"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
+#: mediagoblin/templates/mediagoblin/edit/edit.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
+msgid "Save changes"
+msgstr "Gem ændringer"
+
+#: mediagoblin/templates/mediagoblin/edit/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
msgid "Editing %(media_title)s"
msgstr ""
-#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: 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:53
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Cancel"
-msgstr "Afbryd"
-
-#: mediagoblin/templates/mediagoblin/edit/edit.html:43
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
-msgid "Save changes"
-msgstr "Gem ændringer"
-
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
#, python-format
msgid "Changing %(username)s's account settings"
msgstr ""
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html: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"
@@ -591,13 +684,12 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:23
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
msgstr ""
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:27
msgid "Original"
msgstr ""
@@ -616,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 ""
@@ -624,21 +716,71 @@ msgstr ""
msgid "WebM file (Vorbis codec)"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
-msgid ""
-"Sorry, this video will not work because \n"
-"\t your web browser does not support HTML5 \n"
-"\t video."
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:87
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:93
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:99
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:105
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:65
+#, python-format
+msgid "Image for %(media_title)s"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:43
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:112
+msgid "Toggle Rotate"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:113
+msgid "Perspective"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:116
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
+msgid "Front"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:121
+msgid "Top"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:124
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:125
+msgid "Side"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:130
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
+msgid "WebGL"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:138
+msgid "Download model"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
+msgid "File Format"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
+msgid "Object Height"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:47
msgid ""
"You can get a modern web browser that \n"
-"\t can play this video at \n"
-"\t http://getfirefox.com!"
+" can play this video at \n"
+" http://getfirefox.com!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:69
msgid "WebM file (640p; VP8/Vorbis)"
msgstr ""
@@ -646,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:83
-msgid "Add"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
msgid "Add your media"
@@ -668,43 +804,40 @@ msgid "%(collection_title)s by %(username)s"
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 ""
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:59
-#, python-format
-msgid ""
-"
"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
-msgid "Attachments"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
-msgid "Add attachment"
-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:52
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
msgstr ""
@@ -839,74 +958,58 @@ 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:125
-msgid "Change account settings"
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:124
+msgid "Browse collections"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:138
+#: 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:151
+#: 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
-msgid "Add media"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:163
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:87
-#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:72
+#: 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 ""
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:39
-#, python-format
-msgid ""
-" \n"
-" %(note)s"
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
+msgid "(remove)"
msgstr ""
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:47
-#, python-format
-msgid " (remove)"
+#: 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 ""
#: 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:38
-#, python-format
-msgid "View on OpenStreetMap"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
msgstr ""
@@ -937,23 +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/user_pages/forms.py:28
+#: mediagoblin/tools/response.py:35
+msgid "Oops!"
+msgstr "Hovsa!"
+
+#: mediagoblin/tools/response.py:36
+msgid "An error occured"
+msgstr ""
+
+#: mediagoblin/tools/response.py:51
+msgid "Operation not allowed"
+msgstr ""
+
+#: mediagoblin/tools/response.py:52
+msgid ""
+"Sorry Dave, I can't let you do that!
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:60
+msgid ""
+"There doesn't seem to be a page at this address. Sorry!
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:23
+msgid "Comment"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use Markdown 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 ""
@@ -961,74 +1105,69 @@ msgstr ""
msgid "commented on your post"
msgstr ""
-#: mediagoblin/user_pages/views.py:161
+#: mediagoblin/user_pages/views.py:166
msgid "Oops, your comment was empty."
msgstr ""
-#: mediagoblin/user_pages/views.py:167
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
msgstr ""
-#: mediagoblin/user_pages/views.py:235
+#: 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:243
+#: mediagoblin/user_pages/views.py:248
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:258
+#: mediagoblin/user_pages/views.py:264
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:266
-msgid "Please check your entries and try again."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:297
-msgid ""
-"Some of the files with this entry seem to be missing. Deleting anyway."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:302
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
msgstr ""
-#: mediagoblin/user_pages/views.py:309
+#: 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:317
+#: 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:379
+#: mediagoblin/user_pages/views.py:375
msgid "You deleted the item from the collection."
msgstr ""
-#: mediagoblin/user_pages/views.py:383
+#: 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:393
+#: 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:426
+#: mediagoblin/user_pages/views.py:422
#, python-format
msgid "You deleted the collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:433
+#: 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:443
+#: 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 015a480c..5ae794fa 100644
Binary files a/mediagoblin/i18n/de/LC_MESSAGES/mediagoblin.mo and b/mediagoblin/i18n/de/LC_MESSAGES/mediagoblin.mo differ
diff --git a/mediagoblin/i18n/de/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/de/LC_MESSAGES/mediagoblin.po
index 6a1605c3..b3d82ee9 100644
--- a/mediagoblin/i18n/de/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/de/LC_MESSAGES/mediagoblin.po
@@ -1,26 +1,29 @@
# 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:
# , 2011.
# , 2011.
-# Elrond , 2011, 2012.
+# Elrond , 2011-2012.
+# Elrond , 2013.
# , 2011, 2012.
-# Jakob Kramer , 2012.
+# Jakob Kramer , 2012-2013.
# Jan-Christoph Borchardt , 2011.
# Jan-Christoph Borchardt , 2011, 2012.
# , 2011.
# , 2011.
# Rafael Maguiña , 2011.
+# , 2012.
+# Vinzenz Vietzke , 2012.
# Vinzenz Vietzke , 2011.
msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://issues.mediagoblin.org/\n"
-"POT-Creation-Date: 2012-09-24 14:01-0500\n"
-"PO-Revision-Date: 2012-09-24 18:57+0000\n"
-"Last-Translator: cwebber \n"
+"POT-Creation-Date: 2013-03-04 18:04-0600\n"
+"PO-Revision-Date: 2013-03-07 13:16+0000\n"
+"Last-Translator: Elrond \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"
@@ -29,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 "Das Registrieren ist auf dieser Instanz leider deaktiviert."
+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 "Deine E-Mail-Adresse wurde bestätigt. Du kannst dich nun anmelden, dein Profil bearbeiten und Bilder hochladen!"
+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 Bestätigungsschlüssel oder die Nutzernummer ist falsch."
+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 bestätigt."
+msgstr "Deine E-Mail-Adresse wurde bereits aktiviert."
-#: mediagoblin/auth/views.py:227
+#: mediagoblin/auth/views.py:219
msgid "Resent your verification email."
-msgstr "Bestätigungs-E-Mail wurde erneut versandt."
+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 Email mit Anweisungen für die Änderung des Passwortes an dich gesendet."
+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 bestätigt wurde."
+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:83
+#: 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"
@@ -113,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:87 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"
" \n"
@@ -129,11 +146,11 @@ msgstr "Schlagwörter"
msgid "Separate tags by commas."
msgstr "Kommaseparierte Schlagwörter"
-#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:91
+#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:101
msgid "Slug"
msgstr "Kurztitel"
-#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:92
+#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:102
msgid "The slug can't be empty"
msgstr "Bitte gib einen Kurztitel ein"
@@ -172,62 +189,83 @@ 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:72
+#: 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:84
+#: mediagoblin/edit/forms.py:94
msgid "The title can't be empty"
-msgstr ""
+msgstr "Der Titel kann nicht leer sein"
-#: mediagoblin/edit/forms.py:86 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 "Beschreibung dieser Sammlung"
-#: mediagoblin/edit/forms.py:93
+#: mediagoblin/edit/forms.py:103
msgid ""
"The title part of this collection's address. You usually don't need to "
"change this."
-msgstr ""
+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. Sei bitte vorsichtig."
+msgstr "Du bearbeitest die Medien eines anderen Nutzers. Sei bitte vorsichtig."
+
+#: 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:182
-msgid "You are editing a user's profile. Proceed with caution."
-msgstr "Du bearbeitest das Profil eines Anderen. Sei bitte vorsichtig."
+msgid "You can only edit your own profile."
+msgstr "Du kannst nur dein eigenes Profil bearbeiten."
-#: mediagoblin/edit/views.py:198
+#: 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:204
msgid "Profile changes saved"
msgstr "Das Profil wurde aktualisiert"
-#: mediagoblin/edit/views.py:227 mediagoblin/edit/views.py:247
-msgid "Account settings saved"
-msgstr "Kontoeinstellungen gespeichert"
-
-#: mediagoblin/edit/views.py:252
+#: mediagoblin/edit/views.py:241
msgid "Wrong password"
msgstr "Falsches Passwort"
-#: mediagoblin/edit/views.py:288 mediagoblin/submit/views.py:211
-#: mediagoblin/user_pages/views.py:215
+#: mediagoblin/edit/views.py:252
+msgid "Account settings saved"
+msgstr "Kontoeinstellungen gespeichert"
+
+#: 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:322 mediagoblin/submit/views.py:142
+#: mediagoblin/user_pages/views.py:214
#, python-format
msgid "You already have a collection called \"%s\"!"
-msgstr ""
+msgstr "Du hast bereits eine Sammlung mit Namen »%s«!"
-#: mediagoblin/edit/views.py:292
+#: mediagoblin/edit/views.py:326
msgid "A collection with that slug already exists for this user."
-msgstr ""
+msgstr "Eine Sammlung mit diesem Kurztitel existiert bereits für diesen Benutzer."
-#: mediagoblin/edit/views.py:309
+#: mediagoblin/edit/views.py:343
msgid "You are editing another user's collection. Proceed with caution."
-msgstr ""
+msgstr "Du bearbeitest die Sammlung eines anderen Benutzers. Sei vorsichtig."
#: mediagoblin/gmg_commands/theme.py:58
msgid "Cannot link theme... no theme set\n"
@@ -241,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:120
+#: mediagoblin/meddleware/csrf.py:134
+msgid ""
+"CSRF cookie not present. This is most likely the result of a cookie blocker "
+"or somesuch. Make sure to permit the settings of cookies for this "
+"domain."
+msgstr "Das CSRF cookie ist nicht vorhanden. Das liegt vermutlich an einem Cookie-Blocker oder ähnlichem. 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 ""
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
+msgid "Location"
+msgstr "Aufnahmeort"
-#: 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 OpenStreetMap"
+msgstr "In OpenStreetMap öffnen"
+
+#: mediagoblin/plugins/oauth/forms.py:29
+msgid "Allow"
+msgstr "Erlauben"
#: mediagoblin/plugins/oauth/forms.py:30
-msgid "Allow"
-msgstr ""
-
-#: mediagoblin/plugins/oauth/forms.py:31
msgid "Deny"
-msgstr ""
+msgstr "Verweigern"
+
+#: mediagoblin/plugins/oauth/forms.py:34
+msgid "Name"
+msgstr "Name"
#: mediagoblin/plugins/oauth/forms.py:35
-msgid "Name"
-msgstr ""
+msgid "The name of the OAuth client"
+msgstr "Der Name des OAuth-Clients"
#: mediagoblin/plugins/oauth/forms.py:36
-msgid "The name of the OAuth client"
-msgstr ""
-
-#: mediagoblin/plugins/oauth/forms.py:37
msgid "Description"
-msgstr ""
+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 ""
+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 ""
+msgstr "Typ"
-#: mediagoblin/plugins/oauth/forms.py:46
+#: mediagoblin/plugins/oauth/forms.py:45
msgid ""
"Confidential - The client can\n"
" make requests to the GNU MediaGoblin instance that can not be\n"
@@ -296,27 +342,42 @@ msgid ""
" Public - The client can't make confidential\n"
" requests to the GNU MediaGoblin instance (e.g. client-side\n"
" JavaScript client)."
-msgstr ""
+msgstr "Vertraulich - 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. \n Öffentlich - 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 ""
+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 required for public clients."
-msgstr ""
+msgstr "Die Weiterleitungs-URI für die Anwendung, dieses Feld\n ist Pflicht 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 ""
+msgstr "Dieses Feld ist Pflicht für öffentliche Clients"
#: mediagoblin/plugins/oauth/views.py:59
msgid "The client {0} has been registered!"
+msgstr "Client {0} wurde registriert!"
+
+#: 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 "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."
@@ -324,75 +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 "Yeeeaaah! Geschafft!"
+msgstr "JAAA! Geschafft!"
-#: mediagoblin/submit/views.py:215
+#: mediagoblin/submit/views.py:146
#, python-format
msgid "Collection \"%s\" added!"
-msgstr ""
+msgstr "Sammlung »%s« hinzugefügt!"
-#: mediagoblin/templates/mediagoblin/404.html:24
-msgid "Image of 404 goblin stressing out"
-msgstr "Bild eines angespannten Goblins"
-
-#: mediagoblin/templates/mediagoblin/404.html:25
-msgid "Oops!"
-msgstr "Hoppla!"
-
-#: mediagoblin/templates/mediagoblin/404.html:26
-msgid "There doesn't seem to be a page at this address. Sorry!"
-msgstr "Tut uns Leid, aber unter der angegebenen Adresse gibt es keine Seite!"
-
-#: mediagoblin/templates/mediagoblin/404.html:28
-msgid ""
-"If you're sure the address is correct, maybe the page you're looking for has"
-" been moved or deleted."
-msgstr "Wenn du sicher bist, dass die Adresse stimmt, wurde die Seite eventuell verschoben oder gelöscht."
-
-#: mediagoblin/templates/mediagoblin/base.html:50
-msgid "MediaGoblin logo"
-msgstr "MediaGoblin-Logo"
-
-#: mediagoblin/templates/mediagoblin/base.html:60
+#: mediagoblin/templates/mediagoblin/base.html:64
msgid "Verify your email!"
-msgstr "Bitte bestätige deine E-Mail-Adresse!"
+msgstr "Bitte bestätige Deine E-Mail-Adresse!"
-#: mediagoblin/templates/mediagoblin/base.html:66
-msgid "+ Add media"
-msgstr "+ Medien hinzufügen"
-
-#: mediagoblin/templates/mediagoblin/base.html:67
-msgid "+ Add collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:69
-msgid "View your profile"
-msgstr "Dein Profil ansehen"
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "log out"
+msgstr "abmelden"
#: mediagoblin/templates/mediagoblin/base.html:70
-msgid "Log out"
-msgstr "Abmelden"
-
-#: mediagoblin/templates/mediagoblin/base.html:75
#: 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:89
-msgid ""
-"Powered by MediaGoblin, a GNU project."
-msgstr "Diese Seite setzt das GNU-Projekt MediaGoblin ein."
+#: mediagoblin/templates/mediagoblin/base.html:79
+#, python-format
+msgid "%(user_name)s's account"
+msgstr "%(user_name)ss Konto"
-#: mediagoblin/templates/mediagoblin/base.html:92
+#: 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 MediaGoblin, a GNU project."
+msgstr "Läuft mit MediaGoblin, einem GNU-Projekt."
+
+#: mediagoblin/templates/mediagoblin/base.html:125
#, python-format
msgid ""
"Released under the Source code available."
msgstr "Veröffentlicht unter der AGPL (Quellcode)."
-#: mediagoblin/templates/mediagoblin/root.html:24
+#: mediagoblin/templates/mediagoblin/error.html:24
+msgid "Image of goblin stressing out"
+msgstr "Bild eines gestressten Goblins"
+
+#: mediagoblin/templates/mediagoblin/root.html:31
msgid "Explore"
msgstr "Entdecken"
-#: mediagoblin/templates/mediagoblin/root.html:26
+#: 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:28
+#: mediagoblin/templates/mediagoblin/root.html:35
msgid ""
"This site is running MediaGoblin, an "
"extraordinarily great piece of media hosting software."
-msgstr "Diese Seite setzt MediaGoblin ein, eine großartige Software für Medienhosting."
+msgstr "Diese Webseite setzt MediaGoblin ein, eine großartige Software für Medienhosting."
-#: mediagoblin/templates/mediagoblin/root.html:29
+#: 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, zu kommentieren und mehr."
+msgstr "Melde Dich mit Deinem MediaGoblin-Konto an, um eigene Medien hinzuzufügen, andere zu kommentieren und vieles mehr."
-#: mediagoblin/templates/mediagoblin/root.html:31
+#: 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:32
+#: mediagoblin/templates/mediagoblin/root.html:39
#, python-format
msgid ""
"Create an account at this site\n"
@@ -432,17 +496,10 @@ msgid ""
" Set up MediaGoblin on your own server"
msgstr "Registriere dich auf dieser Seite oder Installiere MediaGoblin auf deinem eigenen Server"
-#: mediagoblin/templates/mediagoblin/root.html:40
+#: mediagoblin/templates/mediagoblin/root.html:47
msgid "Most recent media"
msgstr "Neuste Medien"
-#: 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/admin/panel.html:29
msgid ""
"Here you can track the state of media being processed on this instance."
@@ -515,11 +572,11 @@ msgstr "Anmeldevorgang fehlgeschlagen!"
#: mediagoblin/templates/mediagoblin/auth/login.html:44
msgid "Don't have an account yet?"
-msgstr "Hast du noch keines? Es geht ganz einfach!"
+msgstr "Hast du noch keines?"
#: mediagoblin/templates/mediagoblin/auth/login.html:45
msgid "Create one here!"
-msgstr "Registriere dich hier!"
+msgstr "Registriere dich einfach hier!"
#: mediagoblin/templates/mediagoblin/auth/login.html:51
msgid "Forgot your password?"
@@ -528,7 +585,7 @@ msgstr "Passwort vergessen?"
#: mediagoblin/templates/mediagoblin/auth/register.html:28
#: mediagoblin/templates/mediagoblin/auth/register.html:36
msgid "Create an account!"
-msgstr "Neues Konto registrieren!"
+msgstr "Neues Nutzerkonto registrieren!"
#: mediagoblin/templates/mediagoblin/auth/register.html:40
msgid "Create"
@@ -543,13 +600,63 @@ msgid ""
"your web browser:\n"
"\n"
"%(verification_url)s"
-msgstr "Hallo %(username)s,\n\num dein Konto bei GNU MediaGoblin zu aktivieren, musst du folgende Adresse in deinem Webbrowser öffnen:\n\n%(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 ""
+msgstr "Bearbeite Anhänge von %(media_title)s"
+
+#: 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:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
+msgid "Add attachment"
+msgstr "Anhang hinzufügen"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr "Abbrechen"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
+#: mediagoblin/templates/mediagoblin/edit/edit.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
+#: 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
@@ -557,35 +664,23 @@ msgstr ""
msgid "Editing %(media_title)s"
msgstr "%(media_title)s bearbeiten"
-#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: 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:53
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Cancel"
-msgstr "Abbrechen"
-
-#: mediagoblin/templates/mediagoblin/edit/edit.html:43
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
-msgid "Save changes"
-msgstr "Änderungen speichern"
-
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
#, python-format
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 ""
+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"
@@ -600,13 +695,12 @@ 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/image.html:23
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
msgstr "Download"
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:27
msgid "Original"
msgstr "Original"
@@ -625,7 +719,7 @@ msgid ""
msgstr "Hol dir auf http://getfirefox.com 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"
@@ -633,33 +727,77 @@ msgstr "Originaldatei"
msgid "WebM file (Vorbis codec)"
msgstr "WebM-Datei (Vorbis-Codec)"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:87
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:93
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:99
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:105
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:65
+#, python-format
+msgid "Image for %(media_title)s"
+msgstr "Bild für %(media_title)s"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:112
+msgid "Toggle Rotate"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:113
+msgid "Perspective"
+msgstr "Perspektive"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:116
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
+msgid "Front"
+msgstr "Vorderseite"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:121
+msgid "Top"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:124
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:125
+msgid "Side"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:130
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
+msgid "WebGL"
+msgstr "WebGL"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:138
+msgid "Download model"
+msgstr "Modell herunterladen"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
+msgid "File Format"
+msgstr "Dateiformat"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
+msgid "Object Height"
+msgstr "Objekthöhe"
+
+#: 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 \n"
-"\t http://getfirefox.com!"
+" can play this video at \n"
+" http://getfirefox.com!"
msgstr "Hol dir auf http://getfirefox.com 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)"
#: 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:83
-msgid "Add"
-msgstr "Hinzufügen"
+msgstr "Eine Sammlung hinzufügen"
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
@@ -669,50 +807,47 @@ msgstr "Deine Medien"
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:30
#, python-format
msgid "%(collection_title)s (%(username)s's collection)"
-msgstr ""
+msgstr "%(collection_title)s (ein Album von %(username)s)"
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:39
#, python-format
msgid "%(collection_title)s by %(username)s"
-msgstr ""
+msgstr "%(collection_title)s von %(username)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 "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"
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:59
-#, python-format
-msgid ""
-"
\n"
-" %(collection_description)s\n"
-"
"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:30
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
#, python-format
msgid "Really delete %(title)s?"
msgstr "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:50
-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 ""
+msgstr "Wirklich »%(media_title)s« aus »%(collection_title)s« entfernen?"
-#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:54
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:53
msgid "Remove"
-msgstr ""
+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 "%(username)s's collections"
+msgstr "Alben von %(username)s"
#: mediagoblin/templates/mediagoblin/user_pages/comment_email.txt:19
#, python-format
@@ -726,74 +861,60 @@ 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 ""
+"%(username)s's media with tag %(tag)s"
+msgstr "%(username)ss Medien mit dem Schlagwort %(tag)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
#, python-format
msgid "%(username)s's media"
msgstr "%(username)ss Medien"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
#, python-format
msgid "❖ Browsing media by %(username)s"
msgstr "❖ Medien von %(username)s"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:67
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
-#, python-format
-msgid "Image for %(media_title)s"
-msgstr "Bild für %(media_title)s"
-
-#: 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 Markdown for"
-" formatting."
-msgstr "Die Texte lassen sich durch Markdown 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 ""
"
Added on
\n"
"
%(date)s
"
msgstr "
Veröffentlicht am
\n
%(date)s
"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
-msgid "Attachments"
-msgstr "Anhänge"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
-msgid "Add attachment"
-msgstr "Anhang 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 ""
+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:52
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
-msgstr ""
+msgstr "+"
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
-msgstr ""
+msgstr "Eine neue Sammlung hinzufügen"
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
msgid ""
"You can track the state of media being processed for your gallery here."
-msgstr "Du kannst den Status der Medien, die sich gerade in Bearbeitung befinden, hier betrachten."
+msgstr "Du kannst hier den Status der Medien verfolgen, die sich gerade in Bearbeitung befinden."
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:89
msgid "Your last 10 successful uploads"
@@ -812,7 +933,7 @@ msgstr "Dieser Benutzer konnte leider nicht gefunden werden."
#: mediagoblin/templates/mediagoblin/user_pages/user.html:50
#: mediagoblin/templates/mediagoblin/user_pages/user.html:70
msgid "Email verification needed"
-msgstr "E-Mail-Bestätigung benötigt"
+msgstr "E-Mail Aktivierung benötigt"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
msgid "Almost done! Your account still needs to be activated."
@@ -821,15 +942,15 @@ msgstr "Fast fertig! Dein Konto muss noch freigeschaltet werden."
#: 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 "Gleich solltest du eine E-Mail erhalten, die dir erklärt, was du noch machen musst."
+msgstr "Gleich solltest du eine E-Mail erhalten, die beschreibt was noch zu tun bleibt."
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
msgid "In case it doesn't:"
-msgstr "Wenn sie nicht ankommt:"
+msgstr "Falls sie nicht ankommt:"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:65
msgid "Resend verification email"
-msgstr "Bestätigungs-E-Mail erneut senden"
+msgstr "Aktivierungsmail erneut senden"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:73
msgid ""
@@ -842,80 +963,64 @@ msgstr "Jemand hat bereits ein Konto mit diesem Benutzernamen registriert, aber
msgid ""
"If you are that person but you've lost your verification email, you can log in and resend it."
-msgstr "Wenn dir dieses Konto gehört und die Bestätigungsmail verloren gegangen ist, kannst du dich anmelden und sie erneut senden."
+msgstr "Wenn dir dieses Konto gehört und die Aktivierungsmail verloren gegangen ist, kannst du dich anmelden und sie erneut senden."
#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
msgid "Here's a spot to tell others about yourself."
-msgstr "Hier kannst du Anderen etwas über dich erzählen."
+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:125
-msgid "Change account settings"
-msgstr "Kontoeinstellungen ändern"
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:124
+msgid "Browse collections"
+msgstr "Sammlungen durchstöbern"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:138
+#: 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:151
+#: 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
-msgid "Add media"
-msgstr "Medien hinzufügen"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:163
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:87
-#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:72
+#: 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 "Scheinbar gibt es hier noch nichts …"
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:39
-#, python-format
-msgid ""
-" \n"
-" %(note)s"
-msgstr ""
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
+msgid "(remove)"
+msgstr "(entfernen)"
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:47
-#, python-format
-msgid " (remove)"
-msgstr ""
+#: mediagoblin/templates/mediagoblin/utils/collections.html:21
+msgid "Collected in"
+msgstr "In den Sammlungen"
-#: mediagoblin/templates/mediagoblin/utils/collections.html:20
-#, python-format
-msgid "In collections (%(collected)s)"
-msgstr ""
+#: 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:38
-#, python-format
-msgid "View on OpenStreetMap"
-msgstr "In OpenStreetMap öffnen"
-
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
msgstr "Alle Rechte vorbehalten"
@@ -946,98 +1051,134 @@ 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/user_pages/forms.py:28
+#: mediagoblin/tools/response.py:35
+msgid "Oops!"
+msgstr "Hoppla!"
+
+#: mediagoblin/tools/response.py:36
+msgid "An error occured"
+msgstr "Ein Fehler trat auf"
+
+#: mediagoblin/tools/response.py:51
+msgid "Operation not allowed"
+msgstr "Funktion nicht erlaubt"
+
+#: mediagoblin/tools/response.py:52
+msgid ""
+"Sorry Dave, I can't let you do that!
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!
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:60
+msgid ""
+"There doesn't seem to be a page at this address. Sorry!
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!
Wenn du sicher bist, dass die Adresse stimmt, wurde die Seite eventuell verschoben oder gelöscht."
+
+#: mediagoblin/user_pages/forms.py:23
+msgid "Comment"
+msgstr "Kommentar"
+
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use Markdown for"
+" formatting."
+msgstr "Die Texte lassen sich durch Markdown 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
-msgid "I am sure I want to remove this item from the collection"
-msgstr ""
-
#: mediagoblin/user_pages/forms.py:35
-msgid "-- Select --"
-msgstr ""
+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:37
+#: 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:42
msgid "Include a note"
-msgstr ""
+msgstr "Notiz anfügen"
#: mediagoblin/user_pages/lib.py:56
msgid "commented on your post"
msgstr "hat dein Medium kommentiert"
-#: mediagoblin/user_pages/views.py:161
+#: mediagoblin/user_pages/views.py:166
msgid "Oops, your comment was empty."
-msgstr "Ohh, der Kommentar war leer."
+msgstr "Hoppla, der Kommentartext fehlte."
-#: mediagoblin/user_pages/views.py:167
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
-msgstr "Dein Kommentar wurde gesendet!"
+msgstr "Dein Kommentar wurde angenommen!"
-#: mediagoblin/user_pages/views.py:235
+#: 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 ""
+msgstr "Du musst eine Sammlung auswählen oder hinzufügen"
-#: mediagoblin/user_pages/views.py:243
+#: mediagoblin/user_pages/views.py:248
#, python-format
msgid "\"%s\" already in collection \"%s\""
-msgstr ""
+msgstr "»%s« ist bereits in der Sammlung »%s«"
-#: mediagoblin/user_pages/views.py:258
+#: mediagoblin/user_pages/views.py:264
#, python-format
msgid "\"%s\" added to collection \"%s\""
-msgstr ""
+msgstr "»%s« zur Sammlung »%s« hinzugefügt"
-#: mediagoblin/user_pages/views.py:266
-msgid "Please check your entries and try again."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:297
-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."
-
-#: mediagoblin/user_pages/views.py:302
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
msgstr "Du hast das Medium gelöscht."
-#: mediagoblin/user_pages/views.py:309
+#: 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:317
+#: 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:379
+#: mediagoblin/user_pages/views.py:375
msgid "You deleted the item from the collection."
-msgstr ""
+msgstr "Du hast das Objekt aus der Sammlung gelöscht."
-#: mediagoblin/user_pages/views.py:383
+#: mediagoblin/user_pages/views.py:379
msgid "The item was not removed because you didn't check that you were sure."
-msgstr ""
+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:393
+#: mediagoblin/user_pages/views.py:389
msgid ""
"You are about to delete an item from another user's collection. Proceed with"
" caution."
-msgstr ""
+msgstr "Du bist dabei ein Objekt aus der Sammlung eines anderen Nutzers zu entfernen. Sei vorsichtig."
-#: mediagoblin/user_pages/views.py:426
+#: mediagoblin/user_pages/views.py:422
#, python-format
msgid "You deleted the collection \"%s\""
-msgstr ""
+msgstr "Du hast die Sammlung »%s« gelöscht"
-#: mediagoblin/user_pages/views.py:433
+#: mediagoblin/user_pages/views.py:429
msgid ""
"The collection was not deleted because you didn't check that you were sure."
-msgstr ""
+msgstr "Die Sammlung wurde nicht gelöscht, weil du nicht bestätigt hast, dass du dir sicher bist."
-#: mediagoblin/user_pages/views.py:443
+#: mediagoblin/user_pages/views.py:439
msgid ""
"You are about to delete another user's collection. Proceed with caution."
-msgstr ""
+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 3e589f71..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 , 2012.
+# FIRST AUTHOR , 2013.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2012-09-24 14:01-0500\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 \n"
"Language-Team: LANGUAGE \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:83
+#: 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:87 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"
" 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 OpenStreetMap"
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 ""
"Confidential - The client can\n"
" make requests to the GNU MediaGoblin instance that can "
@@ -290,17 +333,17 @@ 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 required 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 ""
@@ -308,7 +351,22 @@ msgstr ""
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 ""
@@ -316,75 +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/404.html:24
-msgid "Image of 404 goblin stressing out"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/404.html:25
-msgid "Oops!"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/404.html:26
-msgid "There doesn't seem to be a page at this address. Sorry!"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/404.html:28
-msgid ""
-"If you're sure the address is correct, maybe the page you're looking for "
-"has been moved or deleted."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:50
-msgid "MediaGoblin logo"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:60
+#: mediagoblin/templates/mediagoblin/base.html:64
msgid "Verify your email!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:66
-msgid "+ Add media"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:67
-msgid "+ Add collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:69
-msgid "View your profile"
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "log out"
msgstr ""
#: mediagoblin/templates/mediagoblin/base.html:70
-msgid "Log out"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:75
#: 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:89
-msgid ""
-"Powered by MediaGoblin, a GNU project."
+#: mediagoblin/templates/mediagoblin/base.html:79
+#, python-format
+msgid "%(user_name)s's account"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:92
+#: 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 MediaGoblin, a GNU "
+"project."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:125
#, python-format
msgid ""
"Released under the Source code available."
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:24
+#: mediagoblin/templates/mediagoblin/error.html:24
+msgid "Image of goblin stressing out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/root.html:31
msgid "Explore"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:26
+#: mediagoblin/templates/mediagoblin/root.html:33
msgid "Hi there, welcome to this MediaGoblin site!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:28
+#: mediagoblin/templates/mediagoblin/root.html:35
msgid ""
"This site is running MediaGoblin, "
"an extraordinarily great piece of media hosting software."
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:29
+#: 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:31
+#: mediagoblin/templates/mediagoblin/root.html:38
msgid "Don't have one yet? It's easy!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:32
+#: mediagoblin/templates/mediagoblin/root.html:39
#, python-format
msgid ""
"Create an "
@@ -427,17 +489,10 @@ msgid ""
"your own server"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:40
+#: mediagoblin/templates/mediagoblin/root.html:47
msgid "Most recent media"
msgstr ""
-#: 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/admin/panel.html:29
msgid "Here you can track the state of media being processed on this instance."
msgstr ""
@@ -539,47 +594,85 @@ 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: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:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
+msgid "Add attachment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
+#: mediagoblin/templates/mediagoblin/edit/edit.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
+#: 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
msgid "Editing %(media_title)s"
msgstr ""
-#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: 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:53
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Cancel"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/edit/edit.html:43
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
-msgid "Save changes"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
#, python-format
msgid "Changing %(username)s's account settings"
msgstr ""
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html: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 ""
@@ -594,13 +687,12 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:23
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
msgstr ""
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:27
msgid "Original"
msgstr ""
@@ -619,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 ""
@@ -627,21 +719,71 @@ msgstr ""
msgid "WebM file (Vorbis codec)"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
-msgid ""
-"Sorry, this video will not work because \n"
-"\t your web browser does not support HTML5 \n"
-"\t video."
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:87
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:93
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:99
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:105
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:65
+#, python-format
+msgid "Image for %(media_title)s"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:43
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:112
+msgid "Toggle Rotate"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:113
+msgid "Perspective"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:116
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
+msgid "Front"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:121
+msgid "Top"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:124
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:125
+msgid "Side"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:130
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
+msgid "WebGL"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:138
+msgid "Download model"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
+msgid "File Format"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
+msgid "Object Height"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:47
msgid ""
"You can get a modern web browser that \n"
-"\t can play this video at \n"
-"\t http://getfirefox.com!"
+" can play this video at \n"
+" http://getfirefox.com!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:69
msgid "WebM file (640p; VP8/Vorbis)"
msgstr ""
@@ -649,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:83
-msgid "Add"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
msgid "Add your media"
@@ -671,43 +807,40 @@ msgid "%(collection_title)s by %(username)s"
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 ""
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:59
-#, python-format
-msgid ""
-"
"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
-msgid "Attachments"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
-msgid "Add attachment"
-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:52
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
msgstr ""
@@ -841,74 +960,58 @@ 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:125
-msgid "Change account settings"
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:124
+msgid "Browse collections"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:138
+#: 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:151
+#: 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
-msgid "Add media"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:163
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:87
-#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:72
+#: 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 ""
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:39
-#, python-format
-msgid ""
-" \n"
-" %(note)s"
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
+msgid "(remove)"
msgstr ""
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:47
-#, python-format
-msgid " (remove)"
+#: 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 ""
#: 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:38
-#, python-format
-msgid "View on OpenStreetMap"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
msgstr ""
@@ -939,23 +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/user_pages/forms.py:28
+#: mediagoblin/tools/response.py:35
+msgid "Oops!"
+msgstr ""
+
+#: mediagoblin/tools/response.py:36
+msgid "An error occured"
+msgstr ""
+
+#: mediagoblin/tools/response.py:51
+msgid "Operation not allowed"
+msgstr ""
+
+#: mediagoblin/tools/response.py:52
+msgid ""
+"Sorry Dave, I can't let you do that!
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:60
+msgid ""
+"There doesn't seem to be a page at this address. Sorry!
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:23
+msgid "Comment"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use Markdown "
+"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 ""
@@ -963,74 +1107,70 @@ msgstr ""
msgid "commented on your post"
msgstr ""
-#: mediagoblin/user_pages/views.py:161
+#: mediagoblin/user_pages/views.py:166
msgid "Oops, your comment was empty."
msgstr ""
-#: mediagoblin/user_pages/views.py:167
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
msgstr ""
-#: mediagoblin/user_pages/views.py:235
+#: 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:243
+#: mediagoblin/user_pages/views.py:248
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:258
+#: mediagoblin/user_pages/views.py:264
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:266
-msgid "Please check your entries and try again."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:297
-msgid "Some of the files with this entry seem to be missing. Deleting anyway."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:302
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
msgstr ""
-#: mediagoblin/user_pages/views.py:309
+#: 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:317
+#: 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:379
+#: mediagoblin/user_pages/views.py:375
msgid "You deleted the item from the collection."
msgstr ""
-#: mediagoblin/user_pages/views.py:383
+#: 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:393
+#: 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:426
+#: mediagoblin/user_pages/views.py:422
#, python-format
msgid "You deleted the collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:433
+#: 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:443
+#: 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 dbd2bc4d..ac74a68b 100644
Binary files a/mediagoblin/i18n/eo/LC_MESSAGES/mediagoblin.mo and b/mediagoblin/i18n/eo/LC_MESSAGES/mediagoblin.mo differ
diff --git a/mediagoblin/i18n/eo/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/eo/LC_MESSAGES/mediagoblin.po
index 2bfb4319..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:
+# , 2013.
# , 2011-2012.
# Fernando Inocencio , 2011.
# , 2011.
@@ -10,8 +11,8 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://issues.mediagoblin.org/\n"
-"POT-Creation-Date: 2012-09-24 11:41-0500\n"
-"PO-Revision-Date: 2012-09-24 18:27+0000\n"
+"POT-Creation-Date: 2013-03-04 18:04-0600\n"
+"PO-Revision-Date: 2013-03-10 16:50+0000\n"
"Last-Translator: aleksejrs \n"
"Language-Team: LANGUAGE \n"
"MIME-Version: 1.0\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:83
+#: 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:87 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"
" \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:91
+#: 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:92
+#: 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,61 +179,83 @@ msgstr "Enigu vian malnovan pasvorton por pruvi, ke ĉi tiu konto estas via."
msgid "New password"
msgstr "La nova pasvorto"
-#: mediagoblin/edit/forms.py:72
+#: 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:84
+#: mediagoblin/edit/forms.py:94
msgid "The title can't be empty"
-msgstr ""
+msgstr "La titolo ne povas malpleni."
-#: mediagoblin/edit/forms.py:86 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 ĉi tiu kolekto"
+msgstr "Priskribo de la kolekto"
-#: mediagoblin/edit/forms.py:93
+#: 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:155
+#, python-format
+msgid "You added the attachment %s!"
+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: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:198
+#: mediagoblin/edit/views.py:204
msgid "Profile changes saved"
msgstr "Profilŝanĝoj estis konservitaj"
-#: mediagoblin/edit/views.py:227 mediagoblin/edit/views.py:247
-msgid "Account settings saved"
-msgstr "Kontagordoj estis konservitaj"
-
-#: mediagoblin/edit/views.py:252
+#: mediagoblin/edit/views.py:241
msgid "Wrong password"
msgstr "Malĝusta pasvorto"
-#: mediagoblin/edit/views.py:287
-#, python-format
-msgid "You already have a collection called \"%s\"!title"
-msgstr "Vi jam havas kolekton kun la nomo «%s»!title"
+#: mediagoblin/edit/views.py:252
+msgid "Account settings saved"
+msgstr "Kontagordoj estis konservitaj"
-#: mediagoblin/edit/views.py:290
+#: 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: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: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:307
+#: mediagoblin/edit/views.py:343
msgid "You are editing another user's collection. Proceed with caution."
-msgstr ""
+msgstr "Vi redaktas kolekton de alia uzanto. Agu singardeme."
#: mediagoblin/gmg_commands/theme.py:58
msgid "Cannot link theme... no theme set\n"
@@ -232,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:120
+#: mediagoblin/meddleware/csrf.py:134
+msgid ""
+"CSRF cookie not present. This is most likely the result of a cookie blocker "
+"or somesuch. Make sure to permit the 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 OpenStreetMap"
+msgstr "Vidi sur OpenStreetMap"
-#: 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:35
+msgid "The name of the OAuth client"
+msgstr "La nomo de la OAuth-kliento"
#: mediagoblin/plugins/oauth/forms.py:36
-msgid "The name of the OAuth client"
-msgstr ""
-
-#: mediagoblin/plugins/oauth/forms.py:37
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 ""
"Confidential - The client can\n"
" make requests to the GNU MediaGoblin instance that can not be\n"
@@ -289,17 +334,17 @@ 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 required 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 ""
@@ -307,7 +352,22 @@ msgstr ""
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."
@@ -315,80 +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:211 mediagoblin/user_pages/views.py:215
-#, python-format
-msgid "You already have a collection called \"%s\"!"
-msgstr ""
-
-#: mediagoblin/submit/views.py:215
+#: mediagoblin/submit/views.py:146
#, python-format
msgid "Collection \"%s\" added!"
-msgstr ""
+msgstr "Kolekto «%s» aldonitas!"
-#: mediagoblin/templates/mediagoblin/404.html:24
-msgid "Image of 404 goblin stressing out"
-msgstr "Bildo de 404-koboldo penŝvitanta."
-
-#: mediagoblin/templates/mediagoblin/404.html:25
-msgid "Oops!"
-msgstr "Oj!"
-
-#: mediagoblin/templates/mediagoblin/404.html:26
-msgid "There doesn't seem to be a page at this address. Sorry!"
-msgstr "Verŝajne ĉe ĉi tiu adreso ne estas paĝo. Ni bedaŭras!"
-
-#: mediagoblin/templates/mediagoblin/404.html:28
-msgid ""
-"If you're sure the address is correct, maybe the page you're looking for has"
-" been moved or deleted."
-msgstr "Se vi estas certa, ke la adreso estas ĝusta, eble la serĉata de vi paĝo estis movita aŭ forigita."
-
-#: mediagoblin/templates/mediagoblin/base.html:50
-msgid "MediaGoblin logo"
-msgstr "Emblemo de MediaGoblin"
-
-#: mediagoblin/templates/mediagoblin/base.html:60
+#: mediagoblin/templates/mediagoblin/base.html:64
msgid "Verify your email!"
msgstr "Konfirmu viecon de la retpoŝtadreso!"
-#: mediagoblin/templates/mediagoblin/base.html:66
-msgid "+ Add media"
-msgstr "+ Aldoni dosieron"
-
-#: mediagoblin/templates/mediagoblin/base.html:67
-msgid "+ Add collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:69
-msgid "View your profile"
-msgstr "Vidi vian profilon"
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "log out"
+msgstr "elsaluti"
#: mediagoblin/templates/mediagoblin/base.html:70
-msgid "Log out"
-msgstr "Elsaluti"
-
-#: mediagoblin/templates/mediagoblin/base.html:75
#: 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:89
-msgid ""
-"Powered by MediaGoblin, a GNU project."
-msgstr "Funkcias per MediaGoblin, unu el la projektoj de GNU."
+#: mediagoblin/templates/mediagoblin/base.html:79
+#, python-format
+msgid "%(user_name)s's account"
+msgstr "Konto de %(user_name)s"
-#: mediagoblin/templates/mediagoblin/base.html:92
+#: 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 MediaGoblin, a GNU project."
+msgstr "Funkcias per MediaGoblin, unu el la projektoj de GNU."
+
+#: mediagoblin/templates/mediagoblin/base.html:125
#, python-format
msgid ""
"Released under the Source code available."
msgstr "Disponigita laŭ la permesilo AGPL. Haveblasfontotekstaro."
-#: mediagoblin/templates/mediagoblin/root.html:24
+#: mediagoblin/templates/mediagoblin/error.html:24
+msgid "Image of goblin stressing out"
+msgstr "Bildo de zorgigita koboldo"
+
+#: mediagoblin/templates/mediagoblin/root.html:31
msgid "Explore"
msgstr "Ĉirkaŭrigardi"
-#: mediagoblin/templates/mediagoblin/root.html:26
+#: 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:28
+#: mediagoblin/templates/mediagoblin/root.html:35
msgid ""
"This site is running MediaGoblin, an "
"extraordinarily great piece of media hosting software."
msgstr "Ĉi tiu retpaĝaro funkcias per MediaGoblin, eksterordinare bonega programaro por gastigado de aŭd‐vid‐dosieroj."
-#: mediagoblin/templates/mediagoblin/root.html:29
+#: 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:31
+#: 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:32
+#: mediagoblin/templates/mediagoblin/root.html:39
#, python-format
msgid ""
"Create an account at this site\n"
@@ -428,17 +486,10 @@ msgid ""
" Set up MediaGoblin on your own server"
msgstr "Kreu konton en ĉi tiu retejo\n aŭ\n ekfunkciigu MediaGoblin’on en via propra servilo"
-#: mediagoblin/templates/mediagoblin/root.html:40
+#: mediagoblin/templates/mediagoblin/root.html:47
msgid "Most recent media"
msgstr "Laste aldonitaj dosieroj"
-#: 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/admin/panel.html:29
msgid ""
"Here you can track the state of media being processed on this instance."
@@ -541,47 +592,85 @@ 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: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:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
+msgid "Add attachment"
+msgstr "Aldoni kundosieron"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr "Nuligi"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
+#: mediagoblin/templates/mediagoblin/edit/edit.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
+#: 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
msgid "Editing %(media_title)s"
msgstr "Priredaktado de %(media_title)s"
-#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: 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:53
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Cancel"
-msgstr "Nuligi"
-
-#: mediagoblin/templates/mediagoblin/edit/edit.html:43
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
-msgid "Save changes"
-msgstr "Konservi ŝanĝojn"
-
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
#, python-format
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'"
@@ -596,13 +685,12 @@ 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/image.html:23
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
msgstr "Elŝuti"
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:27
msgid "Original"
msgstr "Originalo"
@@ -621,7 +709,7 @@ msgid ""
msgstr "Vi povas akiri modernan TTT-legilon, kapablan \n\tsonigi la registraĵon ĉe \n\t http://getfirefox.com!"
#: 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"
@@ -629,33 +717,77 @@ msgstr "originalan dosieron"
msgid "WebM file (Vorbis codec)"
msgstr "WebMan dosieron (kun Vorbisa kodaĵo)"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
-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» via TTT-legilo ne subtenas montradon\n» de filmoj laŭ HTML5."
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:87
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:93
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:99
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:105
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:65
+#, python-format
+msgid "Image for %(media_title)s"
+msgstr "Bildo de «%(media_title)s»"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:43
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:112
+msgid "Toggle Rotate"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:113
+msgid "Perspective"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:116
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
+msgid "Front"
+msgstr "Deantaŭe"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:121
+msgid "Top"
+msgstr "Desupre"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:124
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:125
+msgid "Side"
+msgstr "Deflanke"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:130
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
+msgid "WebGL"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:138
+msgid "Download model"
+msgstr "Elŝuti la modelon"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
+msgid "File Format"
+msgstr "Informaranĝo"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
+msgid "Object Height"
+msgstr "Alto de la objekto"
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr "Bedaŭrinde, ĉi tiu filmo ne montriĝos\n ĉar via TTT-legilo ne subtenas sufiĉe\n filmojn laŭ HTML5."
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:47
msgid ""
"You can get a modern web browser that \n"
-"\t can play this video at \n"
-"\t http://getfirefox.com!"
-msgstr "Vi povas akiri modernan TTT-legilon,\n» kapablan montri ĉi tiun filmon, ĉe \n» http://getfirefox.com!"
+" can play this video at \n"
+" http://getfirefox.com!"
+msgstr "Vi povas elŝuti modernan TTT-legilon, kapablan \n montri la filmon, de \n http://getfirefox.com!"
-#: 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)"
#: 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:83
-msgid "Add"
-msgstr "Aldoni"
+msgstr "Aldonado de kolekto"
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
@@ -665,50 +797,47 @@ msgstr "Aldono de via dosiero"
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:30
#, python-format
msgid "%(collection_title)s (%(username)s's collection)"
-msgstr ""
+msgstr "%(collection_title)s (kolekto de %(username)s)"
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:39
#, python-format
msgid "%(collection_title)s by %(username)s"
-msgstr ""
+msgstr "%(collection_title)s de %(username)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 "Ŝ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"
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:59
-#, python-format
-msgid ""
-"
\n"
-" %(collection_description)s\n"
-"
"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:30
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
#, python-format
msgid "Really delete %(title)s?"
msgstr "Ĉu vere forigi %(title)s?"
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:47
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:50
-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?"
-msgstr ""
+msgstr "Ĉu vere forigi %(media_title)s el %(collection_title)s?"
-#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:54
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:53
msgid "Remove"
-msgstr ""
+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 "%(username)s's collections"
+msgstr "Kolektoj de %(username)s"
#: mediagoblin/templates/mediagoblin/user_pages/comment_email.txt:19
#, python-format
@@ -722,69 +851,55 @@ 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 ""
+"%(username)s's media with tag %(tag)s"
+msgstr "Dosieroj de %(username)s kun la etikedo %(tag)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
#, python-format
msgid "%(username)s's media"
msgstr "Dosieroj de %(username)s"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
#, python-format
msgid "❖ Browsing media by %(username)s"
msgstr "❖ Просмотр файлов пользователя %(username)s"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:67
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
-#, python-format
-msgid "Image for %(media_title)s"
-msgstr "Bildo de «%(media_title)s»"
-
-#: 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 Markdown for"
-" formatting."
-msgstr "Vi povas uzi por markado la lingvon «Markdown»."
-
-#: 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 ""
"
Added on
\n"
"
%(date)s
"
msgstr "
Aldonita je
\n
la %(date)s
"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
-msgid "Attachments"
-msgstr "Kundosieroj"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
-msgid "Add attachment"
-msgstr "Aldoni kundosieron"
-
-#: 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 "Aldoni «%(media_title)s» al kolekto"
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
-msgstr ""
+msgstr "Aldoni novan kolekton"
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
msgid ""
@@ -844,74 +959,58 @@ msgstr "Se vi estas tiu sed vi perdis vian kontrolmesaĝon, vi povas \n"
-" %(note)s"
-msgstr ""
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
+msgid "(remove)"
+msgstr "(forigi)"
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:47
-#, python-format
-msgid " (remove)"
-msgstr ""
+#: mediagoblin/templates/mediagoblin/utils/collections.html:21
+msgid "Collected in"
+msgstr "En kolektoj:"
-#: mediagoblin/templates/mediagoblin/utils/collections.html:20
-#, python-format
-msgid "In collections (%(collected)s)"
-msgstr ""
+#: 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:38
-#, python-format
-msgid "View on OpenStreetMap"
-msgstr "Vidi sur OpenStreetMap"
-
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
msgstr "Ĉiuj rajtoj estas rezervitaj"
@@ -942,98 +1041,134 @@ 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/user_pages/forms.py:28
+#: mediagoblin/tools/response.py:35
+msgid "Oops!"
+msgstr "Oj!"
+
+#: mediagoblin/tools/response.py:36
+msgid "An error occured"
+msgstr "Okazis eraro"
+
+#: mediagoblin/tools/response.py:51
+msgid "Operation not allowed"
+msgstr ""
+
+#: mediagoblin/tools/response.py:52
+msgid ""
+"Sorry Dave, I can't let you do that!
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:60
+msgid ""
+"There doesn't seem to be a page at this address. Sorry!
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:23
+msgid "Comment"
+msgstr "Komenti"
+
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use Markdown for"
+" formatting."
+msgstr "Vi povas uzi por markado la lingvon «Markdown»."
+
+#: 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
-msgid "I am sure I want to remove this item from the collection"
-msgstr ""
-
#: mediagoblin/user_pages/forms.py:35
-msgid "-- Select --"
-msgstr ""
+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:37
+#: 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:42
msgid "Include a note"
-msgstr ""
+msgstr "Rimarko"
#: mediagoblin/user_pages/lib.py:56
msgid "commented on your post"
msgstr "komentis je via afiŝo"
-#: mediagoblin/user_pages/views.py:161
+#: mediagoblin/user_pages/views.py:166
msgid "Oops, your comment was empty."
msgstr "Oj, via komento estis malplena."
-#: mediagoblin/user_pages/views.py:167
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
msgstr "Via komento estis afiŝita!"
-#: mediagoblin/user_pages/views.py:235
-msgid "You have to select or add a collection"
-msgstr ""
+#: 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:243
+#: 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:248
#, python-format
msgid "\"%s\" already in collection \"%s\""
-msgstr ""
+msgstr "«%s» jam estas en la kolekto «%s»"
-#: mediagoblin/user_pages/views.py:258
+#: mediagoblin/user_pages/views.py:264
#, python-format
msgid "\"%s\" added to collection \"%s\""
-msgstr ""
+msgstr "«%s» estis aldonita al la kolekto «%s»"
-#: mediagoblin/user_pages/views.py:266
-msgid "Please check your entries and try again."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:297
-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:302
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
msgstr "Vi forigis la dosieron."
-#: mediagoblin/user_pages/views.py:309
+#: 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:317
+#: 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:379
+#: mediagoblin/user_pages/views.py:375
msgid "You deleted the item from the collection."
-msgstr ""
+msgstr "Vi forigis la dosieron el la kolekto."
-#: mediagoblin/user_pages/views.py:383
+#: mediagoblin/user_pages/views.py:379
msgid "The item was not removed because you didn't check that you were sure."
-msgstr ""
+msgstr "La dosiero ne estis forigita, ĉar vi ne konfirmis vian certecon per la markilo."
-#: mediagoblin/user_pages/views.py:393
+#: mediagoblin/user_pages/views.py:389
msgid ""
"You are about to delete an item from another user's collection. Proceed with"
" caution."
-msgstr ""
+msgstr "Vi estas forigonta dosieron el kolekto de alia uzanto. Agu singardeme."
-#: mediagoblin/user_pages/views.py:426
+#: mediagoblin/user_pages/views.py:422
#, python-format
msgid "You deleted the collection \"%s\""
-msgstr ""
+msgstr "Vi forigis la kolekton «%s»"
-#: mediagoblin/user_pages/views.py:433
+#: mediagoblin/user_pages/views.py:429
msgid ""
"The collection was not deleted because you didn't check that you were sure."
-msgstr ""
+msgstr "La kolekto ne estis forigita, ĉar vi ne konfirmis vian certecon per la markilo."
-#: mediagoblin/user_pages/views.py:443
+#: mediagoblin/user_pages/views.py:439
msgid ""
"You are about to delete another user's collection. Proceed with caution."
-msgstr ""
+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 b06a995e..e2df0731 100644
Binary files a/mediagoblin/i18n/es/LC_MESSAGES/mediagoblin.mo and b/mediagoblin/i18n/es/LC_MESSAGES/mediagoblin.mo differ
diff --git a/mediagoblin/i18n/es/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/es/LC_MESSAGES/mediagoblin.po
index 1429f887..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 @@
# , 2011.
# , 2011, 2012.
# , 2012.
+# Laura Arjona Reina , 2013.
# Mario Rodriguez , 2011.
# , 2011.
# , 2012.
@@ -18,9 +19,9 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://issues.mediagoblin.org/\n"
-"POT-Creation-Date: 2012-09-24 11:41-0500\n"
-"PO-Revision-Date: 2012-09-24 17:10+0000\n"
-"Last-Translator: Elesa \n"
+"POT-Creation-Date: 2013-03-04 18:04-0600\n"
+"PO-Revision-Date: 2013-03-05 00:04+0000\n"
+"Last-Translator: cwebber \n"
"Language-Team: Spanish (http://www.transifex.com/projects/p/mediagoblin/language/es/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -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:83
+#: 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:87 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"
" \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:91
+#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:101
msgid "Slug"
msgstr "Ficha"
-#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:92
+#: 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,59 +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:72
+#: 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:84
+#: 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:86 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:93
+#: 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:155
+#, python-format
+msgid "You added the attachment %s!"
+msgstr "¡Has añadido el adjunto %s!"
#: mediagoblin/edit/views.py:182
-msgid "You are editing a user's profile. Proceed with caution."
-msgstr "Estás editando un perfil de usuario. Proceder con precaución."
+msgid "You can only edit your own profile."
+msgstr "Sólo puedes editar tu propio perfil."
-#: mediagoblin/edit/views.py:198
+#: mediagoblin/edit/views.py:188
+msgid "You are editing a user's profile. Proceed with caution."
+msgstr "Estás editando un perfil de usuario. Procede con precaución."
+
+#: mediagoblin/edit/views.py:204
msgid "Profile changes saved"
msgstr "Los cambios de perfil fueron salvados"
-#: mediagoblin/edit/views.py:227 mediagoblin/edit/views.py:247
-msgid "Account settings saved"
-msgstr "las configuraciones de cuenta fueron salvadas"
-
-#: mediagoblin/edit/views.py:252
+#: mediagoblin/edit/views.py:241
msgid "Wrong password"
msgstr "Contraseña incorrecta"
-#: mediagoblin/edit/views.py:287
-#, python-format
-msgid "You already have a collection called \"%s\"!title"
-msgstr "Ya tienes una colección llamada \"%s\"!title"
+#: mediagoblin/edit/views.py:252
+msgid "Account settings saved"
+msgstr "las configuraciones de cuenta fueron salvadas"
-#: mediagoblin/edit/views.py:290
+#: 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: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: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:307
+#: 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."
@@ -240,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:120
+#: mediagoblin/meddleware/csrf.py:134
+msgid ""
+"CSRF cookie not present. This is most likely the result of a cookie blocker "
+"or somesuch. Make sure to permit the settings of cookies for this "
+"domain."
+msgstr "No se encuentra la cookie CSRF. Esto suele ser debido a un bloqueador de cookies o similar. 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 OpenStreetMap"
+msgstr "Ver en OpenStreetMap"
-#: 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 ""
"Confidential - The client can\n"
" make requests to the GNU MediaGoblin instance that can not be\n"
@@ -297,17 +342,17 @@ msgid ""
" JavaScript client)."
msgstr "Confidencial - 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). Público - 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 required for public clients."
msgstr "La URI para redireccionar las aplicaciones, este campo es requerido 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"
@@ -315,7 +360,22 @@ msgstr "Este campo es requerido para los clientes públicos"
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."
@@ -323,80 +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:211 mediagoblin/user_pages/views.py:215
-#, python-format
-msgid "You already have a collection called \"%s\"!"
-msgstr "¡Ya tienes una colección llamada \"%s\"!"
-
-#: 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/404.html:24
-msgid "Image of 404 goblin stressing out"
-msgstr "Imagen de 404 goblin estresándose"
-
-#: mediagoblin/templates/mediagoblin/404.html:25
-msgid "Oops!"
-msgstr "¡Ups!"
-
-#: mediagoblin/templates/mediagoblin/404.html:26
-msgid "There doesn't seem to be a page at this address. Sorry!"
-msgstr "Parece no haber una página en esta dirección. ¡Lo sentimos!"
-
-#: mediagoblin/templates/mediagoblin/404.html:28
-msgid ""
-"If you're sure the address is correct, maybe the page you're looking for has"
-" been moved or deleted."
-msgstr "Si estás seguro que la dirección es correcta, puede ser que la pagina haya sido movida o borrada."
-
-#: mediagoblin/templates/mediagoblin/base.html:50
-msgid "MediaGoblin logo"
-msgstr "Logo de MediaGoblin"
-
-#: mediagoblin/templates/mediagoblin/base.html:60
+#: mediagoblin/templates/mediagoblin/base.html:64
msgid "Verify your email!"
msgstr "¡Verifica tu email!"
-#: mediagoblin/templates/mediagoblin/base.html:66
-msgid "+ Add media"
-msgstr "+Agregar contenido"
-
-#: mediagoblin/templates/mediagoblin/base.html:67
-msgid "+ Add collection"
-msgstr "+ Añadir colección"
-
-#: mediagoblin/templates/mediagoblin/base.html:69
-msgid "View your profile"
-msgstr "Ver tu perfil"
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "log out"
+msgstr "cerrar sesión"
#: mediagoblin/templates/mediagoblin/base.html:70
-msgid "Log out"
-msgstr "Salir "
-
-#: mediagoblin/templates/mediagoblin/base.html:75
#: 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"
+msgstr "Iniciar sesión"
-#: mediagoblin/templates/mediagoblin/base.html:89
+#: mediagoblin/templates/mediagoblin/base.html:79
+#, python-format
+msgid "%(user_name)s's account"
+msgstr "Cuenta de %(user_name)s"
+
+#: 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:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:156
+msgid "Add media"
+msgstr "Añadir contenido"
+
+#: 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:122
+#, python-format
msgid ""
-"Powered by MediaGoblin, a GNU project."
-msgstr "Proveído por MediaGoblin, un proyecto GNU."
+"Powered by MediaGoblin, a GNU project."
+msgstr "Funciona con MediaGoblin, un proyecto GNU."
-#: mediagoblin/templates/mediagoblin/base.html:92
+#: mediagoblin/templates/mediagoblin/base.html:125
#, python-format
msgid ""
"Released under the Source code available."
msgstr "Publicado bajo la AGPL. Código fuente disponible."
-#: mediagoblin/templates/mediagoblin/root.html:24
+#: mediagoblin/templates/mediagoblin/error.html:24
+msgid "Image of goblin stressing out"
+msgstr "Imagen de un goblin estresándose"
+
+#: mediagoblin/templates/mediagoblin/root.html:31
msgid "Explore"
msgstr "Explorar"
-#: mediagoblin/templates/mediagoblin/root.html:26
+#: 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:28
+#: mediagoblin/templates/mediagoblin/root.html:35
msgid ""
"This site is running MediaGoblin, an "
"extraordinarily great piece of media hosting software."
msgstr "Este sitio está montado con MediaGoblin, un extraordinario programa libre para alojar, gestionar y compartir contenido multimedia."
-#: mediagoblin/templates/mediagoblin/root.html:29
+#: 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:31
+#: 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:32
+#: mediagoblin/templates/mediagoblin/root.html:39
#, python-format
msgid ""
"Create an account at this site\n"
@@ -436,17 +494,10 @@ msgid ""
" Set up MediaGoblin on your own server"
msgstr "Crea una cuenta en este sitio\n o\n Instala Mediagoblin en tu propio servidor"
-#: mediagoblin/templates/mediagoblin/root.html:40
+#: mediagoblin/templates/mediagoblin/root.html:47
msgid "Most recent media"
msgstr "El contenido más reciente"
-#: 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/admin/panel.html:29
msgid ""
"Here you can track the state of media being processed on this instance."
@@ -549,47 +600,85 @@ 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: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:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
+msgid "Add attachment"
+msgstr "Agregar adjunto"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
+#: mediagoblin/templates/mediagoblin/edit/edit.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
+msgid "Save changes"
+msgstr "Guardar cambios"
+
+#: mediagoblin/templates/mediagoblin/edit/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
msgid "Editing %(media_title)s"
msgstr "Editando %(media_title)s "
-#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: 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:53
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Cancel"
-msgstr "Cancelar"
-
-#: mediagoblin/templates/mediagoblin/edit/edit.html:43
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
-msgid "Save changes"
-msgstr "Guardar cambios"
-
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
#, python-format
msgid "Changing %(username)s's account settings"
msgstr "Cambio de %(username)s la configuración de la cuenta "
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html: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"
@@ -604,13 +693,12 @@ 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/image.html:23
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
msgstr "Descargar"
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:27
msgid "Original"
msgstr "Original"
@@ -629,7 +717,7 @@ msgid ""
msgstr "Tú puedes obtener un navegador más moderno que \n\tpueda reproducir el audio \n\t http://getfirefox.com!"
#: 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"
@@ -637,21 +725,71 @@ msgstr "Archivo original"
msgid "WebM file (Vorbis codec)"
msgstr "Archivo WebM (códec Vorbis)"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
-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» Tu navegador web no soporta HTML5\n» video."
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:87
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:93
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:99
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:105
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:65
+#, python-format
+msgid "Image for %(media_title)s"
+msgstr "Imágenes para %(media_title)s"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:43
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:112
+msgid "Toggle Rotate"
+msgstr "Alternar Rotar"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:113
+msgid "Perspective"
+msgstr "Perspectiva"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:116
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
+msgid "Front"
+msgstr "Frente"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:121
+msgid "Top"
+msgstr "Arriba"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:124
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:125
+msgid "Side"
+msgstr "Lateral"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:130
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
+msgid "WebGL"
+msgstr "WebGL"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:138
+msgid "Download model"
+msgstr "Descargar modelo"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
+msgid "File Format"
+msgstr "Formato de Archivo"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
+msgid "Object Height"
+msgstr "Altura del Objeto"
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr "Lo siento, este vídeo no funcionará\n porque tu navegador no soporta \n vídeo HTML5."
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:47
msgid ""
"You can get a modern web browser that \n"
-"\t can play this video at \n"
-"\t http://getfirefox.com!"
-msgstr "Tú puedes conseguir un navegador web moderno que\n» puede reproducir este vídeo en \n» http://getfirefox.com!"
+" can play this video at \n"
+" http://getfirefox.com!"
+msgstr "¡Puedes conseguir un navegador moderno \n que pueda reproducir este vídeo en \n http://getfirefox.com!"
-#: 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)"
@@ -659,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:83
-msgid "Add"
-msgstr "Añadir "
-
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
msgid "Add your media"
@@ -681,43 +813,40 @@ msgid "%(collection_title)s by %(username)s"
msgstr "%(collection_title)s por %(username)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 "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"
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:59
-#, python-format
-msgid ""
-"
\n"
-" %(collection_description)s\n"
-"
"
-msgstr "
\n%(collection_description)s\n
"
-
#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:30
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
#, python-format
msgid "Really delete %(title)s?"
msgstr "¿Realmente deseas eliminar %(title)s?"
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:47
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:50
-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?"
msgstr "¿Realmente quieres quitar %(media_title)s de %(collection_title)s?"
-#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:54
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:53
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 "%(username)s's collections"
+msgstr "Colecciones de %(username)s"
+
#: mediagoblin/templates/mediagoblin/user_pages/comment_email.txt:19
#, python-format
msgid ""
@@ -728,76 +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 ""
+"%(username)s's media with tag %(tag)s"
+msgstr "Contenido de %(username)s con etiqueta %(tag)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
#, python-format
msgid "%(username)s's media"
-msgstr "Contenido de %(username)s's"
+msgstr "Contenido de %(username)s"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
#, python-format
msgid "❖ Browsing media by %(username)s"
msgstr "❖ Explorando contenido de %(username)s"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:67
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
-#, python-format
-msgid "Image for %(media_title)s"
-msgstr "Imágenes para %(media_title)s"
-
-#: 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 Markdown for"
-" formatting."
-msgstr "Puedes usar Markdown 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 ""
"
Added on
\n"
"
%(date)s
"
msgstr "
Añadido en
\n
%(date)s
"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
-msgid "Attachments"
-msgstr "Adjuntos"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
-msgid "Add attachment"
-msgstr "Agregar adjunto"
-
-#: 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:52
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
msgstr "+"
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:57
+#: 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"
@@ -846,80 +961,64 @@ 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 log in and resend it."
-msgstr "Si tú eres esa persona, pero has perdido tu correo electrónico de verificación, puedes acceder y reenviarlo."
+msgstr "Si tú eres esa persona, pero has perdido tu correo electrónico de verificación, puedes iniciar sesión 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:125
-msgid "Change account settings"
-msgstr "Cambiar la configuración de la cuenta"
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:124
+msgid "Browse collections"
+msgstr "Explorar colecciones"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:138
+#: 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:151
+#: 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
-msgid "Add media"
-msgstr "Añadir contenido"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:163
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:87
-#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:72
+#: 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 "Parece que aún no hay ningún contenido aquí..."
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:39
-#, python-format
-msgid ""
-" \n"
-" %(note)s"
-msgstr " ⏎ %(note)s"
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
+msgid "(remove)"
+msgstr "(borrar)"
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:47
-#, python-format
-msgid " (remove)"
-msgstr " (remove)"
+#: mediagoblin/templates/mediagoblin/utils/collections.html:21
+msgid "Collected in"
+msgstr "En la colección"
-#: 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: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:38
-#, python-format
-msgid "View on OpenStreetMap"
-msgstr "Ver en OpenStreetMap"
-
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
msgstr "Todos los derechos reservados"
@@ -950,23 +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/user_pages/forms.py:28
+#: mediagoblin/tools/response.py:35
+msgid "Oops!"
+msgstr "¡Ups!"
+
+#: mediagoblin/tools/response.py:36
+msgid "An error occured"
+msgstr "Ha ocurrido un error"
+
+#: mediagoblin/tools/response.py:51
+msgid "Operation not allowed"
+msgstr "Operación no permitida"
+
+#: mediagoblin/tools/response.py:52
+msgid ""
+"Sorry Dave, I can't let you do that!
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!
Has intentado realizar una operación no permitida. ¿Has vuelto a intentar borrar todas las cuentas de usuario?"
+
+#: mediagoblin/tools/response.py:60
+msgid ""
+"There doesn't seem to be a page at this address. Sorry!
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!
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:23
+msgid "Comment"
+msgstr "Comentario"
+
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use Markdown for"
+" formatting."
+msgstr "Puedes usar Markdown 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"
@@ -974,74 +1114,69 @@ msgstr "Incluir una nota"
msgid "commented on your post"
msgstr "comentó tu publicación"
-#: mediagoblin/user_pages/views.py:161
+#: mediagoblin/user_pages/views.py:166
msgid "Oops, your comment was empty."
msgstr "Ups, tu comentario estaba vacío."
-#: mediagoblin/user_pages/views.py:167
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
msgstr "¡Tu comentario ha sido publicado!"
-#: mediagoblin/user_pages/views.py:235
+#: 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:243
+#: 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:258
+#: 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:266
-msgid "Please check your entries and try again."
-msgstr "Por favor, revisa tus entradas e inténtalo de nuevo."
-
-#: mediagoblin/user_pages/views.py:297
-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:302
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
msgstr "Eliminaste el contenido"
-#: mediagoblin/user_pages/views.py:309
+#: 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:317
+#: 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:379
+#: 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:383
+#: 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:393
+#: 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:426
+#: 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:433
+#: 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:443
+#: 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 4996877b..4b319ebd 100644
Binary files a/mediagoblin/i18n/fa/LC_MESSAGES/mediagoblin.mo and b/mediagoblin/i18n/fa/LC_MESSAGES/mediagoblin.mo differ
diff --git a/mediagoblin/i18n/fa/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/fa/LC_MESSAGES/mediagoblin.po
index 2037f36e..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-09-24 14:01-0500\n"
-"PO-Revision-Date: 2012-09-24 18:57+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 \n"
"Language-Team: LANGUAGE \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:83
+#: 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:87 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"
" \n"
@@ -119,11 +133,11 @@ msgstr "برچسب"
msgid "Separate tags by commas."
msgstr ""
-#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:91
+#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:101
msgid "Slug"
msgstr ""
-#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:92
+#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:102
msgid "The slug can't be empty"
msgstr ""
@@ -162,60 +176,81 @@ msgstr ""
msgid "New password"
msgstr ""
-#: mediagoblin/edit/forms.py:72
+#: 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:84
+#: mediagoblin/edit/forms.py:94
msgid "The title can't be empty"
msgstr ""
-#: mediagoblin/edit/forms.py:86 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:93
+#: 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:155
+#, python-format
+msgid "You added the attachment %s!"
+msgstr ""
+
#: 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:198
+#: mediagoblin/edit/views.py:204
msgid "Profile changes saved"
msgstr ""
-#: mediagoblin/edit/views.py:227 mediagoblin/edit/views.py:247
-msgid "Account settings saved"
-msgstr ""
-
-#: mediagoblin/edit/views.py:252
+#: mediagoblin/edit/views.py:241
msgid "Wrong password"
msgstr ""
-#: mediagoblin/edit/views.py:288 mediagoblin/submit/views.py:211
-#: mediagoblin/user_pages/views.py:215
+#: mediagoblin/edit/views.py:252
+msgid "Account settings saved"
+msgstr ""
+
+#: mediagoblin/edit/views.py:286
+msgid "You need to confirm the deletion of your account."
+msgstr ""
+
+#: 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:292
+#: mediagoblin/edit/views.py:326
msgid "A collection with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:309
+#: mediagoblin/edit/views.py:343
msgid "You are editing another user's collection. Proceed with caution."
msgstr ""
@@ -231,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:120
+#: mediagoblin/meddleware/csrf.py:134
+msgid ""
+"CSRF cookie not present. This is most likely the result of a cookie blocker "
+"or somesuch. Make sure to permit the 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 OpenStreetMap"
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 ""
"Confidential - The client can\n"
" make requests to the GNU MediaGoblin instance that can not be\n"
@@ -288,17 +331,17 @@ 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 required 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 ""
@@ -306,7 +349,22 @@ msgstr ""
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 "فایلی نا معتبر برای نوع رسانه داده شده."
@@ -314,75 +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/404.html:24
-msgid "Image of 404 goblin stressing out"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/404.html:25
-msgid "Oops!"
-msgstr "اوه"
-
-#: mediagoblin/templates/mediagoblin/404.html:26
-msgid "There doesn't seem to be a page at this address. Sorry!"
-msgstr "متاسفانه به نظر نمی رسد که چنین صفحه ای در این آدرس وجود داشته باشد!"
-
-#: mediagoblin/templates/mediagoblin/404.html:28
-msgid ""
-"If you're sure the address is correct, maybe the page you're looking for has"
-" been moved or deleted."
-msgstr "اگر مطمين هستین که آدرس درست است،ممکن است صفحه ای که شما آنرا جستجو می کنید انتقال داده شده و یا حذف شده باشد."
-
-#: mediagoblin/templates/mediagoblin/base.html:50
-msgid "MediaGoblin logo"
-msgstr "لوگو مدیاگوبلین"
-
-#: mediagoblin/templates/mediagoblin/base.html:60
+#: mediagoblin/templates/mediagoblin/base.html:64
msgid "Verify your email!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:66
-msgid "+ Add media"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:67
-msgid "+ Add collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:69
-msgid "View your profile"
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "log out"
msgstr ""
#: mediagoblin/templates/mediagoblin/base.html:70
-msgid "Log out"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:75
#: 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:89
-msgid ""
-"Powered by MediaGoblin, a GNU project."
+#: mediagoblin/templates/mediagoblin/base.html:79
+#, python-format
+msgid "%(user_name)s's account"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:92
+#: 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 MediaGoblin, a GNU project."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:125
#, python-format
msgid ""
"Released under the Source code available."
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:24
+#: mediagoblin/templates/mediagoblin/error.html:24
+msgid "Image of goblin stressing out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/root.html:31
msgid "Explore"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:26
+#: mediagoblin/templates/mediagoblin/root.html:33
msgid "Hi there, welcome to this MediaGoblin site!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:28
+#: mediagoblin/templates/mediagoblin/root.html:35
msgid ""
"This site is running MediaGoblin, an "
"extraordinarily great piece of media hosting software."
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:29
+#: 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:31
+#: mediagoblin/templates/mediagoblin/root.html:38
msgid "Don't have one yet? It's easy!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:32
+#: mediagoblin/templates/mediagoblin/root.html:39
#, python-format
msgid ""
"Create an account at this site\n"
@@ -422,17 +483,10 @@ msgid ""
" Set up MediaGoblin on your own server"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:40
+#: mediagoblin/templates/mediagoblin/root.html:47
msgid "Most recent media"
msgstr ""
-#: 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/admin/panel.html:29
msgid ""
"Here you can track the state of media being processed on this instance."
@@ -535,47 +589,85 @@ 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: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:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
+msgid "Add attachment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr "انصراف"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
+#: mediagoblin/templates/mediagoblin/edit/edit.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
+#: 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
msgid "Editing %(media_title)s"
msgstr "ویرایش %(media_title)s"
-#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: 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:53
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Cancel"
-msgstr "انصراف"
-
-#: mediagoblin/templates/mediagoblin/edit/edit.html:43
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
-msgid "Save changes"
-msgstr "ذخیره تغییرات"
-
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
#, python-format
msgid "Changing %(username)s's account settings"
msgstr ""
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html: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"
@@ -590,13 +682,12 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:23
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
msgstr ""
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:27
msgid "Original"
msgstr ""
@@ -615,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 ""
@@ -623,21 +714,71 @@ msgstr ""
msgid "WebM file (Vorbis codec)"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
-msgid ""
-"Sorry, this video will not work because \n"
-"\t your web browser does not support HTML5 \n"
-"\t video."
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:87
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:93
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:99
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:105
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:65
+#, python-format
+msgid "Image for %(media_title)s"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:43
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:112
+msgid "Toggle Rotate"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:113
+msgid "Perspective"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:116
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
+msgid "Front"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:121
+msgid "Top"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:124
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:125
+msgid "Side"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:130
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
+msgid "WebGL"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:138
+msgid "Download model"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
+msgid "File Format"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
+msgid "Object Height"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:47
msgid ""
"You can get a modern web browser that \n"
-"\t can play this video at \n"
-"\t http://getfirefox.com!"
+" can play this video at \n"
+" http://getfirefox.com!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:69
msgid "WebM file (640p; VP8/Vorbis)"
msgstr ""
@@ -645,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:83
-msgid "Add"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
msgid "Add your media"
@@ -667,43 +802,40 @@ msgid "%(collection_title)s by %(username)s"
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 ""
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:59
-#, python-format
-msgid ""
-"
"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
-msgid "Attachments"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
-msgid "Add attachment"
-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:52
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
msgstr ""
@@ -838,74 +956,58 @@ 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:125
-msgid "Change account settings"
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:124
+msgid "Browse collections"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:138
+#: 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:151
+#: 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
-msgid "Add media"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:163
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:87
-#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:72
+#: 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 ""
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:39
-#, python-format
-msgid ""
-" \n"
-" %(note)s"
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
+msgid "(remove)"
msgstr ""
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:47
-#, python-format
-msgid " (remove)"
+#: 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 ""
#: 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:38
-#, python-format
-msgid "View on OpenStreetMap"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
msgstr ""
@@ -936,23 +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/user_pages/forms.py:28
+#: mediagoblin/tools/response.py:35
+msgid "Oops!"
+msgstr "اوه"
+
+#: mediagoblin/tools/response.py:36
+msgid "An error occured"
+msgstr ""
+
+#: mediagoblin/tools/response.py:51
+msgid "Operation not allowed"
+msgstr ""
+
+#: mediagoblin/tools/response.py:52
+msgid ""
+"Sorry Dave, I can't let you do that!
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:60
+msgid ""
+"There doesn't seem to be a page at this address. Sorry!
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:23
+msgid "Comment"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use Markdown 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 ""
@@ -960,74 +1103,69 @@ msgstr ""
msgid "commented on your post"
msgstr ""
-#: mediagoblin/user_pages/views.py:161
+#: mediagoblin/user_pages/views.py:166
msgid "Oops, your comment was empty."
msgstr ""
-#: mediagoblin/user_pages/views.py:167
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
msgstr ""
-#: mediagoblin/user_pages/views.py:235
+#: 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:243
+#: mediagoblin/user_pages/views.py:248
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:258
+#: mediagoblin/user_pages/views.py:264
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:266
-msgid "Please check your entries and try again."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:297
-msgid ""
-"Some of the files with this entry seem to be missing. Deleting anyway."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:302
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
msgstr ""
-#: mediagoblin/user_pages/views.py:309
+#: 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:317
+#: 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:379
+#: mediagoblin/user_pages/views.py:375
msgid "You deleted the item from the collection."
msgstr ""
-#: mediagoblin/user_pages/views.py:383
+#: 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:393
+#: 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:426
+#: mediagoblin/user_pages/views.py:422
#, python-format
msgid "You deleted the collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:433
+#: 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:443
+#: 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 8262b37f..ada992ce 100644
Binary files a/mediagoblin/i18n/fr/LC_MESSAGES/mediagoblin.mo and b/mediagoblin/i18n/fr/LC_MESSAGES/mediagoblin.mo differ
diff --git a/mediagoblin/i18n/fr/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/fr/LC_MESSAGES/mediagoblin.po
index 560484bb..b4c76bd2 100644
--- a/mediagoblin/i18n/fr/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/fr/LC_MESSAGES/mediagoblin.po
@@ -1,11 +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:
# , 2011.
+# , 2012.
# , 2011.
+# , 2013.
# , 2011.
+# Laurent Pointecouteau , 2013.
# , 2011.
# , 2011.
# , 2011.
@@ -14,8 +17,8 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://issues.mediagoblin.org/\n"
-"POT-Creation-Date: 2012-09-24 14:01-0500\n"
-"PO-Revision-Date: 2012-09-24 18:57+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 \n"
"Language-Team: French (http://www.transifex.com/projects/p/mediagoblin/language/fr/)\n"
"MIME-Version: 1.0\n"
@@ -25,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 ""
+msgstr "Nom d'utilisateur 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 "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 ""
-"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 "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: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 ""
-
-#: mediagoblin/auth/views.py:333
+#: mediagoblin/auth/views.py:328
msgid "You can now log in using your new password."
-msgstr ""
+msgstr "Vous pouvez maintenant vous connecter avec votre nouveau mot de passe."
-#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:83
+#: 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"
@@ -109,13 +126,13 @@ msgid "Description of this work"
msgstr "Descriptif pour ce travail"
#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:52
-#: mediagoblin/edit/forms.py:87 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"
" \n"
" Markdown for formatting."
-msgstr ""
+msgstr "Vous pouvez utiliser\n \n Markdown pour le formattage."
#: mediagoblin/edit/forms.py:33 mediagoblin/submit/forms.py:36
msgid "Tags"
@@ -123,13 +140,13 @@ msgstr "Tags"
#: mediagoblin/edit/forms.py:35 mediagoblin/submit/forms.py:38
msgid "Separate tags by commas."
-msgstr ""
+msgstr "Séparez les champs avec des virgules."
-#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:91
+#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:101
msgid "Slug"
msgstr "Légende"
-#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:92
+#: 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."
@@ -137,12 +154,12 @@ msgstr "La légende ne peut pas être laissée vide."
msgid ""
"The title part of this media's address. You usually don't need to change "
"this."
-msgstr ""
+msgstr "Le titre présent dans l'URL du média. Vous n'avez généralement pas besoin de le modifier"
#: mediagoblin/edit/forms.py:44 mediagoblin/submit/forms.py:41
#: mediagoblin/templates/mediagoblin/utils/license.html:20
msgid "License"
-msgstr ""
+msgstr "Licence"
#: mediagoblin/edit/forms.py:50
msgid "Bio"
@@ -154,7 +171,7 @@ msgstr "Site web"
#: mediagoblin/edit/forms.py:58
msgid "This address contains errors"
-msgstr ""
+msgstr "Cette adresse contiens des erreurs"
#: mediagoblin/edit/forms.py:63
msgid "Old password"
@@ -162,129 +179,158 @@ msgstr "Ancien mot de passe."
#: mediagoblin/edit/forms.py:64
msgid "Enter your old password to prove you own this account."
-msgstr ""
+msgstr "Entrez votre ancien mot de passe pour prouver que vous êtes bien le propriétaire de ce compte."
#: mediagoblin/edit/forms.py:67
msgid "New password"
+msgstr "Nouveau mot de passe"
+
+#: mediagoblin/edit/forms.py:74
+msgid "License preference"
msgstr ""
-#: mediagoblin/edit/forms.py:72
+#: 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 ""
+msgstr "Me prévenir par email lorsque d'autres commentent mes médias"
-#: mediagoblin/edit/forms.py:84
+#: mediagoblin/edit/forms.py:94
msgid "The title can't be empty"
-msgstr ""
+msgstr "Le titre ne peut être vide"
-#: mediagoblin/edit/forms.py:86 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 "Description de cette collection"
-#: mediagoblin/edit/forms.py:93
+#: mediagoblin/edit/forms.py:103
msgid ""
"The title part of this collection's address. You usually don't need to "
"change this."
-msgstr ""
+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:155
+#, python-format
+msgid "You added the attachment %s!"
+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: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:198
+#: mediagoblin/edit/views.py:204
msgid "Profile changes saved"
-msgstr ""
+msgstr "Les changements apportés au profile ont étés sauvegardés"
-#: mediagoblin/edit/views.py:227 mediagoblin/edit/views.py:247
-msgid "Account settings saved"
-msgstr ""
-
-#: mediagoblin/edit/views.py:252
+#: mediagoblin/edit/views.py:241
msgid "Wrong password"
msgstr "Mauvais mot de passe"
-#: mediagoblin/edit/views.py:288 mediagoblin/submit/views.py:211
-#: mediagoblin/user_pages/views.py:215
+#: 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:286
+msgid "You need to confirm the deletion of your account."
+msgstr "Vous devez confirmer la suppression de votre compte."
+
+#: 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 "Vous avez déjà une collection appelée \"%s\" !"
-#: mediagoblin/edit/views.py:292
+#: mediagoblin/edit/views.py:326
msgid "A collection with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:309
+#: mediagoblin/edit/views.py:343
msgid "You are editing another user's collection. Proceed with caution."
-msgstr ""
+msgstr "Vous éditez la collection d'un autre utilisateurs. Faites attention."
#: mediagoblin/gmg_commands/theme.py:58
msgid "Cannot link theme... no theme set\n"
-msgstr ""
+msgstr "Impossible de lier le thème... Aucun thème associé\n"
#: mediagoblin/gmg_commands/theme.py:71
msgid "No asset directory for this theme\n"
-msgstr ""
+msgstr "Aucun répertoire \"asset\" pour ce thème\n"
#: mediagoblin/gmg_commands/theme.py:74
msgid "However, old link directory symlink found; removed.\n"
msgstr ""
-#: mediagoblin/media_types/__init__.py:60
-#: mediagoblin/media_types/__init__.py:120
+#: mediagoblin/meddleware/csrf.py:134
+msgid ""
+"CSRF cookie not present. This is most likely the result of a cookie blocker "
+"or somesuch. Make sure to permit the 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 ""
+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 ""
+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 ""
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:52
+#, python-format
+msgid "View on OpenStreetMap"
+msgstr "Regarder sur OpenStreetMap"
+
+#: mediagoblin/plugins/oauth/forms.py:29
+msgid "Allow"
+msgstr "Autoriser"
#: mediagoblin/plugins/oauth/forms.py:30
-msgid "Allow"
-msgstr ""
-
-#: mediagoblin/plugins/oauth/forms.py:31
msgid "Deny"
-msgstr ""
+msgstr "Refuser"
+
+#: mediagoblin/plugins/oauth/forms.py:34
+msgid "Name"
+msgstr "Nom"
#: mediagoblin/plugins/oauth/forms.py:35
-msgid "Name"
-msgstr ""
-
-#: mediagoblin/plugins/oauth/forms.py:36
msgid "The name of the OAuth client"
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:37
+#: mediagoblin/plugins/oauth/forms.py:36
msgid "Description"
-msgstr ""
+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 ""
+msgstr "Type"
-#: mediagoblin/plugins/oauth/forms.py:46
+#: mediagoblin/plugins/oauth/forms.py:45
msgid ""
"Confidential - The client can\n"
" make requests to the GNU MediaGoblin instance that can not be\n"
@@ -294,25 +340,40 @@ msgid ""
" JavaScript client)."
msgstr ""
-#: mediagoblin/plugins/oauth/forms.py:53
+#: mediagoblin/plugins/oauth/forms.py:52
msgid "Redirect URI"
-msgstr ""
+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 required for public clients."
-msgstr ""
+msgstr "L'URI de redirection pour l'application, ce champ est requis 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 ""
+msgstr "Ce champ est requis pour les clients publics"
#: mediagoblin/plugins/oauth/views.py:59
msgid "The client {0} has been registered!"
+msgstr "Le client {0} as été enregistré !"
+
+#: 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 "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."
@@ -320,118 +381,45 @@ 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 ""
+msgstr "Collection \"%s\" ajoutée !"
-#: mediagoblin/templates/mediagoblin/404.html:24
-msgid "Image of 404 goblin stressing out"
-msgstr "Image de 404 gobelin angoissé"
-
-#: mediagoblin/templates/mediagoblin/404.html:25
-msgid "Oops!"
-msgstr "Zut !"
-
-#: mediagoblin/templates/mediagoblin/404.html:26
-msgid "There doesn't seem to be a page at this address. Sorry!"
-msgstr "Il ne semble pas y avoir de page à cette adresse. Désolé !"
-
-#: mediagoblin/templates/mediagoblin/404.html:28
-msgid ""
-"If you're sure the address is correct, maybe the page you're looking for has"
-" been moved or deleted."
-msgstr "Si vous êtes sûr que l'adresse est correcte, peut-être la page que vous recherchez a été déplacée ou supprimée."
-
-#: mediagoblin/templates/mediagoblin/base.html:50
-msgid "MediaGoblin logo"
-msgstr "Logo MediaGoblin"
-
-#: mediagoblin/templates/mediagoblin/base.html:60
+#: mediagoblin/templates/mediagoblin/base.html:64
msgid "Verify your email!"
msgstr "Vérifiez votre adresse e-mail !"
-#: mediagoblin/templates/mediagoblin/base.html:66
-msgid "+ Add media"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:67
-msgid "+ Add collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:69
-msgid "View your profile"
-msgstr ""
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "log out"
+msgstr "Déconnexion"
#: mediagoblin/templates/mediagoblin/base.html:70
-msgid "Log out"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:75
#: 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:89
-msgid ""
-"Powered by MediaGoblin, a GNU project."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:92
+#: mediagoblin/templates/mediagoblin/base.html:79
#, python-format
-msgid ""
-"Released under the AGPL. Source code available."
+msgid "%(user_name)s's account"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:24
-msgid "Explore"
-msgstr "Explorer"
-
-#: mediagoblin/templates/mediagoblin/root.html:26
-msgid "Hi there, welcome to this MediaGoblin site!"
-msgstr "Bonjour, et bienvenu sur ce site MediaGoblin !"
-
-#: mediagoblin/templates/mediagoblin/root.html:28
-msgid ""
-"This site is running MediaGoblin, an "
-"extraordinarily great piece of media hosting software."
-msgstr "Ce site fait tourner MediaGoblin, un logiciel d'hébergement de média extraordinairement génial."
-
-#: mediagoblin/templates/mediagoblin/root.html:29
-msgid ""
-"To add your own media, place comments, and more, you can log in with your "
-"MediaGoblin account."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:31
-msgid "Don't have one yet? It's easy!"
-msgstr "Vous n'en avez pas ? C'est facile !"
-
-#: mediagoblin/templates/mediagoblin/root.html:32
-#, python-format
-msgid ""
-"Create an account at this site\n"
-" or\n"
-" Set up MediaGoblin on your own server"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:40
-msgid "Most recent media"
-msgstr "Tout derniers media"
+#: 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
@@ -439,10 +427,79 @@ msgstr "Tout derniers media"
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:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:156
+msgid "Add media"
+msgstr "Ajouter des médias"
+
+#: 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:122
+#, python-format
+msgid ""
+"Powered by MediaGoblin, a GNU project."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:125
+#, python-format
+msgid ""
+"Released under the AGPL. Source code available."
+msgstr "Disponible sous la licence AGPL. Code source disponible."
+
+#: mediagoblin/templates/mediagoblin/error.html:24
+msgid "Image of goblin stressing out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/root.html:31
+msgid "Explore"
+msgstr "Explorer"
+
+#: mediagoblin/templates/mediagoblin/root.html:33
+msgid "Hi there, welcome to this MediaGoblin site!"
+msgstr "Bonjour, et bienvenue sur ce site MediaGoblin !"
+
+#: mediagoblin/templates/mediagoblin/root.html:35
+msgid ""
+"This site is running MediaGoblin, an "
+"extraordinarily great piece of media hosting software."
+msgstr "Ce site fait tourner MediaGoblin, un logiciel d'hébergement de média extraordinairement génial."
+
+#: 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:38
+msgid "Don't have one yet? It's easy!"
+msgstr "Vous n'en avez pas ? C'est facile !"
+
+#: mediagoblin/templates/mediagoblin/root.html:39
+#, python-format
+msgid ""
+"Create an account at this site\n"
+" or\n"
+" Set up MediaGoblin on your own server"
+msgstr "Créez un compte sur ce site\n ou\n Déployez MediaGoblin sur votre propre serveur"
+
+#: mediagoblin/templates/mediagoblin/root.html:47
+msgid "Most recent media"
+msgstr "Tout derniers media"
+
#: mediagoblin/templates/mediagoblin/admin/panel.html:29
msgid ""
"Here you can track the state of media being processed on this instance."
-msgstr ""
+msgstr "Ici, vous pouvez suivre l'état des médias en cours de traitement par cette instance."
#: mediagoblin/templates/mediagoblin/admin/panel.html:32
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:32
@@ -462,25 +519,25 @@ msgstr "Le traitement de ces ajouts a échoué :"
#: mediagoblin/templates/mediagoblin/admin/panel.html:90
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
msgid "No failed entries!"
-msgstr ""
+msgstr "Aucune entrée ayant échoué !"
#: mediagoblin/templates/mediagoblin/admin/panel.html:92
msgid "Last 10 successful uploads"
-msgstr ""
+msgstr "10 derniers envois terminés"
#: mediagoblin/templates/mediagoblin/admin/panel.html:112
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
msgid "No processed entries, yet!"
-msgstr ""
+msgstr "Aucune entrée traitée jusqu'à présent !"
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:28
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:36
msgid "Set your new password"
-msgstr ""
+msgstr "Enregistrez votre nouveau mot de passe"
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:39
msgid "Set password"
-msgstr ""
+msgstr "Enregistrez votre mot de passe"
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:23
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:31
@@ -541,47 +598,85 @@ 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: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:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
+msgid "Add attachment"
+msgstr "Ajouter une pièce jointe"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr "Annuler"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
+#: mediagoblin/templates/mediagoblin/edit/edit.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
+#: 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
msgid "Editing %(media_title)s"
msgstr "Modification de %(media_title)s"
-#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: 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:53
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Cancel"
-msgstr "Annuler"
-
-#: mediagoblin/templates/mediagoblin/edit/edit.html:43
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
-msgid "Save changes"
-msgstr "Enregistrer les modifications"
-
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
#, python-format
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 ""
+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"
@@ -596,13 +691,12 @@ 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/image.html:23
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
-msgstr ""
+msgstr "Télécharger"
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:27
msgid "Original"
msgstr "Original"
@@ -611,56 +705,100 @@ msgid ""
"Sorry, this audio will not work because \n"
"\tyour web browser does not support HTML5 \n"
"\taudio."
-msgstr ""
+msgstr "Désolé, mais ce fichier audio ne se lancera pas car\nvotre navigateur web ne supporte pas l'audio HTML5."
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:47
msgid ""
"You can get a modern web browser that \n"
"\tcan play the audio at \n"
"\t http://getfirefox.com!"
-msgstr ""
+msgstr "Vous pouvez obtenir un navigateur à jour capable de lire cette vidéo sur \n\t http://getfirefox.com!"
#: 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 "Fichier original"
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:63
msgid "WebM file (Vorbis codec)"
+msgstr "fichier 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:59
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:65
+#, python-format
+msgid "Image for %(media_title)s"
+msgstr "Image de %(media_title)s"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:112
+msgid "Toggle Rotate"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:113
+msgid "Perspective"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:116
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
+msgid "Front"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:121
+msgid "Top"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:124
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:125
+msgid "Side"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:130
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
+msgid "WebGL"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:138
+msgid "Download model"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
+msgid "File Format"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
+msgid "Object Height"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html: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 \n"
-"\t http://getfirefox.com!"
+" can play this video at \n"
+" http://getfirefox.com!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:69
msgid "WebM file (640p; VP8/Vorbis)"
-msgstr ""
+msgstr "fichier 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:83
-msgid "Add"
-msgstr ""
+msgstr "Ajouter une collection"
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
msgid "Add your media"
-msgstr ""
+msgstr "Ajoutez votre média"
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:30
#, python-format
@@ -670,44 +808,41 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:39
#, python-format
msgid "%(collection_title)s by %(username)s"
-msgstr ""
+msgstr "%(collection_title)s de %(username)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 "É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"
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:59
-#, python-format
-msgid ""
-"
\n"
-" %(collection_description)s\n"
-"
"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:30
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
#, python-format
msgid "Really delete %(title)s?"
msgstr "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:50
-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 "Voulez vous vraiment retirer %(media_title)s de %(collection_title)s ?"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:53
+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_item_confirm_remove.html:54
-msgid "Remove"
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:28
+#, python-format
+msgid "%(username)s's collections"
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/comment_email.txt:19
@@ -715,76 +850,62 @@ msgstr ""
msgid ""
"Hi %(username)s,\n"
"%(comment_author)s commented on your post (%(comment_url)s) at %(instance_name)s\n"
-msgstr ""
+msgstr "Bonjour %(username)s,\n%(comment_author)s a commenté votre post (%(comment_url)s) sur %(instance_name)s\n"
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
#, python-format
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 ""
+"%(username)s's media with tag %(tag)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
#, python-format
msgid "%(username)s's media"
msgstr "Médias de %(username)s"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
#, python-format
msgid "❖ Browsing media by %(username)s"
-msgstr ""
+msgstr "❖ Parcourir les médias de %(username)s"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:67
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
-#, python-format
-msgid "Image for %(media_title)s"
-msgstr ""
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:94
+msgid "Add a comment"
+msgstr "Ajouter un commentaire"
#: mediagoblin/templates/mediagoblin/user_pages/media.html:102
-msgid "Add a comment"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:109
-msgid ""
-"You can use Markdown for"
-" formatting."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:113
msgid "Add this comment"
-msgstr ""
+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 ""
"
Added on
\n"
"
%(date)s
"
-msgstr ""
+msgstr "
Ajouté le
\n
%(date)s
"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
-msgid "Attachments"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
-msgid "Add attachment"
-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:52
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
-msgstr ""
+msgstr "+"
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
-msgstr ""
+msgstr "Ajouter une nouvelle collection"
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
msgid ""
@@ -793,7 +914,7 @@ msgstr "Vous pouvez suivre l'état des médias en cours de traitement pour votre
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:89
msgid "Your last 10 successful uploads"
-msgstr ""
+msgstr "Vos 10 derniers envois réussis"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:31
#: mediagoblin/templates/mediagoblin/user_pages/user.html:89
@@ -844,85 +965,69 @@ 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:125
-msgid "Change account settings"
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:124
+msgid "Browse collections"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:138
+#: 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:151
+#: 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
-msgid "Add media"
-msgstr "Ajouter des médias"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:163
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:87
-#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:72
+#: 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 "Il ne semble pas y avoir de média là, pour l'instant ..."
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:39
-#, python-format
-msgid ""
-" \n"
-" %(note)s"
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
+msgid "(remove)"
msgstr ""
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:47
-#, python-format
-msgid " (remove)"
+#: 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 "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 ""
-
-#: mediagoblin/templates/mediagoblin/utils/geolocation_map.html:38
-#, python-format
-msgid "View on OpenStreetMap"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
-msgstr ""
+msgstr "Tous droits réservés"
#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
msgid "← Newer"
-msgstr ""
+msgstr "← Le plus récent"
#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
msgid "Older →"
-msgstr ""
+msgstr "Le plus vieux →"
#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
msgid "Go to page:"
@@ -931,109 +1036,145 @@ msgstr "Aller à la page :"
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:28
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:33
msgid "newer"
-msgstr ""
+msgstr "le plus récent"
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:39
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:44
msgid "older"
-msgstr ""
+msgstr "le plus vieux"
#: mediagoblin/templates/mediagoblin/utils/tags.html:20
msgid "Tagged with"
-msgstr ""
+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:35
+msgid "Oops!"
+msgstr "Zut !"
+
+#: mediagoblin/tools/response.py:36
+msgid "An error occured"
+msgstr "Une erreur est survenue"
+
+#: mediagoblin/tools/response.py:51
+msgid "Operation not allowed"
+msgstr "Opération non autorisée"
+
+#: mediagoblin/tools/response.py:52
+msgid ""
+"Sorry Dave, I can't let you do that!
You have tried to perform a "
+"function that you are not allowed to. Have you been trying to delete all "
+"user accounts again?"
+msgstr "Je regrette Dave, cela m'est malheureusement impossible !
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:60
+msgid ""
+"There doesn't seem to be a page at this address. Sorry!
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é !
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 Markdown for"
+" formatting."
+msgstr "Vous pouvez utilisez les Balises 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
-msgid "I am sure I want to remove this item from the collection"
-msgstr ""
-
#: mediagoblin/user_pages/forms.py:35
-msgid "-- Select --"
+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:39
+msgid "Collection"
msgstr ""
-#: mediagoblin/user_pages/forms.py:37
+#: mediagoblin/user_pages/forms.py:40
+msgid "-- Select --"
+msgstr "-- Sélectionner --"
+
+#: mediagoblin/user_pages/forms.py:42
msgid "Include a note"
-msgstr ""
+msgstr "Inclure une note"
#: mediagoblin/user_pages/lib.py:56
msgid "commented on your post"
-msgstr ""
+msgstr "a commenté votre post"
-#: mediagoblin/user_pages/views.py:161
+#: mediagoblin/user_pages/views.py:166
msgid "Oops, your comment was empty."
msgstr "Oups, votre commentaire était vide."
-#: mediagoblin/user_pages/views.py:167
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
msgstr "Votre commentaire a été posté !"
-#: mediagoblin/user_pages/views.py:235
-msgid "You have to select or add a collection"
-msgstr ""
+#: 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:243
+#: 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:248
#, python-format
msgid "\"%s\" already in collection \"%s\""
-msgstr ""
+msgstr "\"%s\" est déjà dans la collection \"%s\""
-#: mediagoblin/user_pages/views.py:258
+#: mediagoblin/user_pages/views.py:264
#, python-format
msgid "\"%s\" added to collection \"%s\""
-msgstr ""
+msgstr "\"%s\" as été ajouté à la collection \"%s\""
-#: mediagoblin/user_pages/views.py:266
-msgid "Please check your entries and try again."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:297
-msgid ""
-"Some of the files with this entry seem to be missing. Deleting anyway."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:302
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
msgstr "Vous avez supprimé le media."
-#: mediagoblin/user_pages/views.py:309
+#: 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:317
+#: 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:379
+#: mediagoblin/user_pages/views.py:375
msgid "You deleted the item from the collection."
-msgstr ""
+msgstr "Vous avez supprimé cet élément de la collection."
-#: mediagoblin/user_pages/views.py:383
+#: mediagoblin/user_pages/views.py:379
msgid "The item was not removed because you didn't check that you were sure."
-msgstr ""
+msgstr "L'élément n'as pas été supprimé car vous n'avez pas confirmé votre certitude."
-#: mediagoblin/user_pages/views.py:393
+#: mediagoblin/user_pages/views.py:389
msgid ""
"You are about to delete an item from another user's collection. Proceed with"
" caution."
-msgstr ""
+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:426
+#: mediagoblin/user_pages/views.py:422
#, python-format
msgid "You deleted the collection \"%s\""
-msgstr ""
+msgstr "Vous avez supprimé la collection \"%s\""
-#: mediagoblin/user_pages/views.py:433
+#: mediagoblin/user_pages/views.py:429
msgid ""
"The collection was not deleted because you didn't check that you were sure."
-msgstr ""
+msgstr "La collection n'as pas été supprimée car vous n'avez pas confirmé votre certitude"
-#: mediagoblin/user_pages/views.py:443
+#: mediagoblin/user_pages/views.py:439
msgid ""
"You are about to delete another user's collection. Proceed with caution."
-msgstr ""
+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
new file mode 100644
index 00000000..ce2963f7
Binary files /dev/null and b/mediagoblin/i18n/he/LC_MESSAGES/mediagoblin.mo differ
diff --git a/mediagoblin/i18n/he/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/he/LC_MESSAGES/mediagoblin.po
new file mode 100644
index 00000000..12d932c8
--- /dev/null
+++ b/mediagoblin/i18n/he/LC_MESSAGES/mediagoblin.po
@@ -0,0 +1,1172 @@
+# Translations template for PROJECT.
+# Copyright (C) 2013 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# , 2012.
+# Isratine Citizen , 2012.
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU MediaGoblin\n"
+"Report-Msgid-Bugs-To: http://issues.mediagoblin.org/\n"
+"POT-Creation-Date: 2013-03-04 18:04-0600\n"
+"PO-Revision-Date: 2013-03-05 00:04+0000\n"
+"Last-Translator: cwebber \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 0.9.6\n"
+"Language: he\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: 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:56 mediagoblin/auth/forms.py:71
+msgid "Password"
+msgstr "סיסמה"
+
+#: mediagoblin/auth/forms.py:60
+msgid "Email address"
+msgstr "כתובת דוא״ל"
+
+#: mediagoblin/auth/forms.py:78
+msgid "Username or email"
+msgstr "שם משתמש או דוא״ל"
+
+#: mediagoblin/auth/views.py:54
+msgid "Sorry, registration is disabled on this instance."
+msgstr "צר לי, רישום הינו מנוטרל על שרת זה."
+
+#: mediagoblin/auth/views.py:68
+msgid "Sorry, a user with that name already exists."
+msgstr "צר לי, משתמש עם שם זה כבר קיים."
+
+#: mediagoblin/auth/views.py:72
+msgid "Sorry, a user with that email address already exists."
+msgstr "צר לי, משתמש עם דוא״ל זה כבר קיים."
+
+#: 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:180
+msgid "The verification key or user id is incorrect"
+msgstr "מפתח האימות או זהות משתמש הינם שגויים"
+
+#: 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:206
+msgid "You've already verified your email address!"
+msgstr "כבר אימתת את כתובת הדוא״ל שלך!"
+
+#: mediagoblin/auth/views.py:219
+msgid "Resent your verification email."
+msgstr "שלח שוב את דוא״ל האימות שלך."
+
+#: 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: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:328
+msgid "You can now log in using your new password."
+msgstr "כעת ביכולתך להתחבר באמצעות סיסמתך החדשה."
+
+#: 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:45
+msgid "Title"
+msgstr "כותרת"
+
+#: mediagoblin/edit/forms.py:28 mediagoblin/submit/forms.py:31
+msgid "Description of this work"
+msgstr "תיאור של מלאכה זו"
+
+#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:52
+#: 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"
+" \n"
+" Markdown for formatting."
+msgstr "ביכולתך להשתמש בתחביר\n \n Markdown לעיצוב."
+
+#: mediagoblin/edit/forms.py:33 mediagoblin/submit/forms.py:36
+msgid "Tags"
+msgstr "תגיות"
+
+#: mediagoblin/edit/forms.py:35 mediagoblin/submit/forms.py:38
+msgid "Separate tags by commas."
+msgstr "הפרד תגיות בעזרת פסיקים."
+
+#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:101
+msgid "Slug"
+msgstr "חשופית"
+
+#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:102
+msgid "The slug can't be empty"
+msgstr "החשופית לא יכולה להיות ריקה"
+
+#: mediagoblin/edit/forms.py:40
+msgid ""
+"The title part of this media's address. You usually don't need to change "
+"this."
+msgstr "אזור הכותרת של כתובת מדיה זו. לרוב אין הכרח לשנות את חלק זה."
+
+#: mediagoblin/edit/forms.py:44 mediagoblin/submit/forms.py:41
+#: mediagoblin/templates/mediagoblin/utils/license.html:20
+msgid "License"
+msgstr "רשיון"
+
+#: mediagoblin/edit/forms.py:50
+msgid "Bio"
+msgstr "ביו"
+
+#: mediagoblin/edit/forms.py:56
+msgid "Website"
+msgstr "אתר רשת"
+
+#: mediagoblin/edit/forms.py:58
+msgid "This address contains errors"
+msgstr "כתובת זו מכילה שגיאות"
+
+#: mediagoblin/edit/forms.py:63
+msgid "Old password"
+msgstr "סיסמה ישנה"
+
+#: mediagoblin/edit/forms.py:64
+msgid "Enter your old password to prove you own this account."
+msgstr "הזן את סיסמתך הישנה כדי להוכיח שאתה הבעלים של חשבון זה."
+
+#: mediagoblin/edit/forms.py:67
+msgid "New password"
+msgstr "סיסמה חדשה"
+
+#: 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:94
+msgid "The title can't be empty"
+msgstr "הכותרת לא יכולה להיות ריקה"
+
+#: 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:103
+msgid ""
+"The title part of this collection's address. You usually don't need to "
+"change this."
+msgstr "אזור הכותרת של כתובת אוסף זה. לרוב אין הכרח לשנות את חלק זה."
+
+#: mediagoblin/edit/views.py:66
+msgid "An entry with that slug already exists for this user."
+msgstr "רשומה עם חשופית זו כבר קיימת עבור משתמש זה."
+
+#: mediagoblin/edit/views.py:85
+msgid "You are editing another user's media. Proceed with caution."
+msgstr "אתה עורך מדיה של משתמש אחר. המשך בזהירות."
+
+#: mediagoblin/edit/views.py:155
+#, python-format
+msgid "You added the attachment %s!"
+msgstr "הוספת את התצריף %s!"
+
+#: 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:204
+msgid "Profile changes saved"
+msgstr "שינויי דיוקן נשמרו"
+
+#: mediagoblin/edit/views.py:241
+msgid "Wrong password"
+msgstr "סיסמה שגויה"
+
+#: mediagoblin/edit/views.py:252
+msgid "Account settings saved"
+msgstr "הגדרות חשבון נשמרו"
+
+#: mediagoblin/edit/views.py:286
+msgid "You need to confirm the deletion of your account."
+msgstr ""
+
+#: 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:326
+msgid "A collection with that slug already exists for this user."
+msgstr "אוסף עם חשופית זו כבר קיים עבור משתמש זה."
+
+#: mediagoblin/edit/views.py:343
+msgid "You are editing another user's collection. Proceed with caution."
+msgstr "אתה עורך אוסף של משתמש אחר. המשך בזהירות."
+
+#: mediagoblin/gmg_commands/theme.py:58
+msgid "Cannot link theme... no theme set\n"
+msgstr "לא ניתן לקשר אל מוטיב... לא הוגדר מוטיב\n"
+
+#: mediagoblin/gmg_commands/theme.py:71
+msgid "No asset directory for this theme\n"
+msgstr "אין מדור נכס עבור מוטיב זה\n"
+
+#: mediagoblin/gmg_commands/theme.py:74
+msgid "However, old link directory symlink found; removed.\n"
+msgstr "בכל אופן, קישור מדור symlink נמצא; הוסר.\n"
+
+#: mediagoblin/meddleware/csrf.py:134
+msgid ""
+"CSRF cookie not present. This is most likely the result of a cookie blocker "
+"or somesuch. Make sure to permit the 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:36
+msgid "Video transcoding failed"
+msgstr "המרת וידאו נכשלה"
+
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
+msgid "Location"
+msgstr "מיקום"
+
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:52
+#, python-format
+msgid "View on OpenStreetMap"
+msgstr "הצגה אצל OpenStreetMap"
+
+#: mediagoblin/plugins/oauth/forms.py:29
+msgid "Allow"
+msgstr "התר"
+
+#: mediagoblin/plugins/oauth/forms.py:30
+msgid "Deny"
+msgstr "אסור"
+
+#: mediagoblin/plugins/oauth/forms.py:34
+msgid "Name"
+msgstr "שם"
+
+#: mediagoblin/plugins/oauth/forms.py:35
+msgid "The name of the OAuth client"
+msgstr "השם של לקוח OAuth"
+
+#: mediagoblin/plugins/oauth/forms.py:36
+msgid "Description"
+msgstr "תיאור"
+
+#: mediagoblin/plugins/oauth/forms.py:38
+msgid ""
+"This will be visible to users allowing your\n"
+" application to authenticate as them."
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:40
+msgid "Type"
+msgstr "טיפוס"
+
+#: mediagoblin/plugins/oauth/forms.py:45
+msgid ""
+"Confidential - 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). \n"
+" Public - The client can't make confidential\n"
+" requests to the GNU MediaGoblin instance (e.g. client-side\n"
+" JavaScript client)."
+msgstr "סודי - הלקוח יכול\n ליצור בקשות אל שרת GNU MediaGoblin שלא יכולות להיבלם\n על ידי user agent (למשל לקוח server-side). \n פומבי - הלקוח לא יכול ליצור בקשות\n סודיות אל של GNU MediaGoblin (למשל לקוח\n JavaScript מתופעל client-side)."
+
+#: mediagoblin/plugins/oauth/forms.py:52
+msgid "Redirect URI"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:54
+msgid ""
+"The redirect URI for the applications, this field\n"
+" is required for public clients."
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:66
+msgid "This field is required for public clients"
+msgstr "שדה זה הינו דרוש עבור לקוחות פומביים"
+
+#: 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/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 "ניתן קובץ שגוי עבור טיפוס מדיה."
+
+#: mediagoblin/submit/forms.py:26
+msgid "File"
+msgstr "קובץ"
+
+#: mediagoblin/submit/views.py:51
+msgid "You must provide a file."
+msgstr "עליך לספק קובץ."
+
+#: mediagoblin/submit/views.py:97
+msgid "Woohoo! Submitted!"
+msgstr "הידד! נשלח!"
+
+#: mediagoblin/submit/views.py:146
+#, python-format
+msgid "Collection \"%s\" added!"
+msgstr "אוסף \"%s\" התווסף!"
+
+#: 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:79
+#, python-format
+msgid "%(user_name)s's account"
+msgstr "החשבון של %(user_name)s"
+
+#: 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 MediaGoblin, a GNU project."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:125
+#, python-format
+msgid ""
+"Released under the AGPL. Source code available."
+msgstr "משוחרר תחת הרשיון AGPL. קוד מקור זמין."
+
+#: mediagoblin/templates/mediagoblin/error.html:24
+msgid "Image of goblin stressing out"
+msgstr "תמונה של גובלין מתאמץ יתר על המידה"
+
+#: mediagoblin/templates/mediagoblin/root.html:31
+msgid "Explore"
+msgstr "לחקור"
+
+#: mediagoblin/templates/mediagoblin/root.html:33
+msgid "Hi there, welcome to this MediaGoblin site!"
+msgstr "שלום לך, ברוך בואך אל אתר MediaGoblin זה!"
+
+#: mediagoblin/templates/mediagoblin/root.html:35
+msgid ""
+"This site is running MediaGoblin, an "
+"extraordinarily great piece of media hosting software."
+msgstr "אתר זה מריץ MediaGoblin, חתיכת תוכנת אירוח מדיה יוצאת מן הכלל."
+
+#: 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:38
+msgid "Don't have one yet? It's easy!"
+msgstr "אין ברשותך חשבון עדיין? זה קל!"
+
+#: mediagoblin/templates/mediagoblin/root.html:39
+#, python-format
+msgid ""
+"Create an account at this site\n"
+" or\n"
+" Set up MediaGoblin on your own server"
+msgstr "יצירת חשבון אצל אתר זה\n או\n להתקין את MediaGoblin על שרתך"
+
+#: mediagoblin/templates/mediagoblin/root.html:47
+msgid "Most recent media"
+msgstr "המדיה האחרונה ביותר"
+
+#: mediagoblin/templates/mediagoblin/admin/panel.html:29
+msgid ""
+"Here you can track the state of media being processed on this instance."
+msgstr "כאן ביכולתך לעקוב אחר המצב של המדיה שמתעבדת בשרת זה."
+
+#: mediagoblin/templates/mediagoblin/admin/panel.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:32
+msgid "Media in-processing"
+msgstr "מדיה באמצע-עיבוד"
+
+#: mediagoblin/templates/mediagoblin/admin/panel.html:58
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
+msgid "No media in-processing"
+msgstr "אין מדיה באמצע-עיבוד"
+
+#: mediagoblin/templates/mediagoblin/admin/panel.html:61
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:59
+msgid "These uploads failed to process:"
+msgstr "העלאות אלה נכשלו להתעבד:"
+
+#: mediagoblin/templates/mediagoblin/admin/panel.html:90
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
+msgid "No failed entries!"
+msgstr "אין רשומות כושלות!"
+
+#: mediagoblin/templates/mediagoblin/admin/panel.html:92
+msgid "Last 10 successful uploads"
+msgstr "10 העלאות מוצלחות אחרונות"
+
+#: mediagoblin/templates/mediagoblin/admin/panel.html:112
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
+msgid "No processed entries, yet!"
+msgstr "אין רישומים מעובדים, עדיין!"
+
+#: mediagoblin/templates/mediagoblin/auth/change_fp.html:28
+#: mediagoblin/templates/mediagoblin/auth/change_fp.html:36
+msgid "Set your new password"
+msgstr "הגדר את סיסמתך החדשה"
+
+#: mediagoblin/templates/mediagoblin/auth/change_fp.html:39
+msgid "Set password"
+msgstr "הגדר סיסמה"
+
+#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:23
+#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:31
+msgid "Recover password"
+msgstr "שחזר סיסמה"
+
+#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:34
+msgid "Send instructions"
+msgstr "שלח הוראות"
+
+#: mediagoblin/templates/mediagoblin/auth/fp_verification_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"\n"
+"to change your GNU MediaGoblin password, open the following URL in \n"
+"your web browser:\n"
+"\n"
+"%(verification_url)s\n"
+"\n"
+"If you think this is an error, just ignore this email and continue being\n"
+"a happy goblin!"
+msgstr "שלום %(username)s,\n\nבכדי לשנות את סיסמתך אצל GNU MediaGoblin, עליך לפתוח את הכתובת הבאה \nבתוך דפדפן הרשת שלך:\n\n%(verification_url)s\n\nבמידה ואתה חושב שמדובר בשגיאה, פשוט התעלם מן דוא״ל זה והמשך להיות\nגובלין מאושר!"
+
+#: mediagoblin/templates/mediagoblin/auth/login.html:39
+msgid "Logging in failed!"
+msgstr "התחברות נכשלה!"
+
+#: mediagoblin/templates/mediagoblin/auth/login.html:44
+msgid "Don't have an account yet?"
+msgstr "אין לך חשבון עדיין?"
+
+#: mediagoblin/templates/mediagoblin/auth/login.html:45
+msgid "Create one here!"
+msgstr "צור חשבון כאן!"
+
+#: mediagoblin/templates/mediagoblin/auth/login.html:51
+msgid "Forgot your password?"
+msgstr "שכחת את סיסמתך?"
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:28
+#: mediagoblin/templates/mediagoblin/auth/register.html:36
+msgid "Create an account!"
+msgstr "יצירת חשבון!"
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:40
+msgid "Create"
+msgstr "יצירה"
+
+#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"\n"
+"to activate your GNU MediaGoblin account, open the following URL in\n"
+"your web browser:\n"
+"\n"
+"%(verification_url)s"
+msgstr "שלום %(username)s,\n\nבכדי להפעיל את חשבונך אצל GNU MediaGoblin, עליך לפתוח את הכתובת הבאה\nבתוך דפדפן הרשת שלך:\n\n%(verification_url)s"
+
+#: mediagoblin/templates/mediagoblin/bits/logo.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/bits/logo.html:23
+msgid "MediaGoblin logo"
+msgstr "לוגו MediaGoblin"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:23
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:35
+#, python-format
+msgid "Editing attachments for %(media_title)s"
+msgstr "עריכת תצריפים עבור %(media_title)s"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:159
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:175
+msgid "Attachments"
+msgstr "תצריפים"
+
+#: 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:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr "ביטול"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
+#: mediagoblin/templates/mediagoblin/edit/edit.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
+#: 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
+msgid "Editing %(media_title)s"
+msgstr "ערוך %(media_title)s"
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
+#, python-format
+msgid "Changing %(username)s's account settings"
+msgstr "שינוי הגדרות חשבון עבור %(username)s"
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html: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:34
+#, python-format
+msgid "Editing %(username)s's profile"
+msgstr "עריכת דיוקן עבור %(username)s"
+
+#: mediagoblin/templates/mediagoblin/listings/collection.html:30
+#: mediagoblin/templates/mediagoblin/listings/collection.html:35
+#: mediagoblin/templates/mediagoblin/listings/tag.html:30
+#: mediagoblin/templates/mediagoblin/listings/tag.html:35
+#, python-format
+msgid "Media tagged with: %(tag_name)s"
+msgstr "מדיה מתויגת עם: %(tag_name)s"
+
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
+msgid "Download"
+msgstr "הורד"
+
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
+msgid "Original"
+msgstr "מקורית"
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:44
+msgid ""
+"Sorry, this audio will not work because \n"
+"\tyour web browser does not support HTML5 \n"
+"\taudio."
+msgstr "צר לי, אודיו זה לא יעבוד מכיוון \n\tשדפדפן הרשת שלך לא תומך \n\tאודיו של HTML5."
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:47
+msgid ""
+"You can get a modern web browser that \n"
+"\tcan play the audio at \n"
+"\t http://getfirefox.com!"
+msgstr "ביכולתך להשיג דפדפן רשת מודרני שכן \n\tמסוגל לנגן את אודיו זה אצל \n\t http://getfirefox.com!"
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:61
+msgid "Original file"
+msgstr "קובץ מקורי"
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:63
+msgid "WebM file (Vorbis codec)"
+msgstr "קובץ WebM (קודק Vorbis)"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:87
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:93
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:99
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:105
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:65
+#, python-format
+msgid "Image for %(media_title)s"
+msgstr "תמונה עבור %(media_title)s"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:112
+msgid "Toggle Rotate"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:113
+msgid "Perspective"
+msgstr "נקודת מבט"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:116
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
+msgid "Front"
+msgstr "לפנים"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:121
+msgid "Top"
+msgstr "ראש"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:124
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:125
+msgid "Side"
+msgstr "צד"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:130
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
+msgid "WebGL"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:138
+msgid "Download model"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
+msgid "File Format"
+msgstr "פורמט קובץ"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
+msgid "Object Height"
+msgstr "גובה אובייקט"
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:47
+msgid ""
+"You can get a modern web browser that \n"
+" can play this video at \n"
+" http://getfirefox.com!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:69
+msgid "WebM file (640p; VP8/Vorbis)"
+msgstr "קובץ WebM (640p; VP8/Vorbis)"
+
+#: mediagoblin/templates/mediagoblin/submit/collection.html:26
+msgid "Add a collection"
+msgstr "הוסף אוסף"
+
+#: mediagoblin/templates/mediagoblin/submit/start.html:23
+#: mediagoblin/templates/mediagoblin/submit/start.html:30
+msgid "Add your media"
+msgstr "הוספת המדיה שלך"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:30
+#, python-format
+msgid "%(collection_title)s (%(username)s's collection)"
+msgstr "%(collection_title)s (אוסף של %(username)s)"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:39
+#, python-format
+msgid "%(collection_title)s by %(username)s"
+msgstr "%(collection_title)s מאת %(username)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
+msgid "Edit"
+msgstr "ערוך"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
+msgid "Delete"
+msgstr "מחק"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:30
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
+#, python-format
+msgid "Really delete %(title)s?"
+msgstr "באמת למחוק את %(title)s?"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:31
+#, python-format
+msgid "Really remove %(media_title)s from %(collection_title)s?"
+msgstr "באמת להסיר את %(media_title)s מן %(collection_title)s?"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:53
+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 "%(username)s's collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/comment_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"%(comment_author)s commented on your post (%(comment_url)s) at %(instance_name)s\n"
+msgstr "שלום %(username)s,\n%(comment_author)s הגיב/ה על פרסומך (%(comment_url)s) אצל %(instance_name)s\n"
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
+#, python-format
+msgid "%(username)s's media"
+msgstr "המדיה של %(username)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:38
+#, python-format
+msgid ""
+"%(username)s's media with tag %(tag)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
+#, python-format
+msgid "%(username)s's media"
+msgstr "המדיה של %(username)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
+#, python-format
+msgid "❖ Browsing media by %(username)s"
+msgstr "❖ עיון במדיה מאת %(username)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:94
+msgid "Add a comment"
+msgstr "הוסף תגובה"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:102
+msgid "Add this comment"
+msgstr "הוסף את תגובה זו"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:123
+msgid "at"
+msgstr "אצל"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:144
+#, python-format
+msgid ""
+"
Added on
\n"
+"
%(date)s
"
+msgstr "
הוסף בתאריך
\n
%(date)s
"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
+#, python-format
+msgid "Add “%(media_title)s” to a collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
+msgid "+"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
+msgid "Add a new collection"
+msgstr "הוסף אוסף חדש"
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
+msgid ""
+"You can track the state of media being processed for your gallery here."
+msgstr "ביכולתך לעקוב כאן אחר מצב של מדיה שמצויה בתהליך עיבוד עבור הגלריה שלך."
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:89
+msgid "Your last 10 successful uploads"
+msgstr "10 ההעלאות המוצלחות שלך"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:31
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:89
+#, python-format
+msgid "%(username)s's profile"
+msgstr "הדיוקן של %(username)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:43
+msgid "Sorry, no such user found."
+msgstr "צר לי, משתמש נתון לא נמצא."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:50
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:70
+msgid "Email verification needed"
+msgstr "נדרש אימות דוא״ל"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
+msgid "Almost done! Your account still needs to be activated."
+msgstr "כמעת סיימנו! חשבונך עדיין צריך אקטיבציה."
+
+#: 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 "דוא״ל צפוי להגיע בעוד מספר רגעים בצירוף הוראות בנוגע לכיצד לעשות כך."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
+msgid "In case it doesn't:"
+msgstr "במידה וזה לא:"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:65
+msgid "Resend verification email"
+msgstr "שלח דוא״ל אימות"
+
+#: 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 "מישהו רשם חשבון עם שם משתמש זה, אך עליו להיות מופעל."
+
+#: 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 log in and resend it."
+msgstr "אם אתה אכן אדם זה אולם איבדת את דוא״ל האימות שלך, ביכולתך להתחבר ולשלוחו מחדש."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
+msgid "Here's a spot to tell others about yourself."
+msgstr "הנה מקום לומר לאחרים אודותייך."
+
+#: 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:105
+msgid "This user hasn't filled in their profile (yet)."
+msgstr "משתמש זה לא מילא דיוקן (עדיין)."
+
+#: 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: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: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 "לא נראה שיש כאן מדיה כלשהי עדיין..."
+
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
+msgid "(remove)"
+msgstr "(הסר)"
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:21
+msgid "Collected in"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:40
+msgid "Add to a collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
+msgid "feed icon"
+msgstr "צלמית ערוץ"
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:23
+msgid "Atom feed"
+msgstr "ערוץ Atom"
+
+#: mediagoblin/templates/mediagoblin/utils/license.html:25
+msgid "All rights reserved"
+msgstr "כל הזכויות שמורות"
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
+msgid "← Newer"
+msgstr "חדש יותר ←"
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
+msgid "Older →"
+msgstr "→ ישן יותר"
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
+msgid "Go to page:"
+msgstr "מעבר אל עמוד:"
+
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:28
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:33
+msgid "newer"
+msgstr "חדש יותר"
+
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:39
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:44
+msgid "older"
+msgstr "ישן יותר"
+
+#: mediagoblin/templates/mediagoblin/utils/tags.html:20
+msgid "Tagged with"
+msgstr "מתויגת עם"
+
+#: mediagoblin/tools/exif.py:80
+msgid "Could not read the image file."
+msgstr "לא היה ניתן לקרוא את קובץ התמונה."
+
+#: mediagoblin/tools/response.py:35
+msgid "Oops!"
+msgstr "אופס!"
+
+#: mediagoblin/tools/response.py:36
+msgid "An error occured"
+msgstr "אירעה שגיאה"
+
+#: mediagoblin/tools/response.py:51
+msgid "Operation not allowed"
+msgstr "פעולה לא מורשית"
+
+#: mediagoblin/tools/response.py:52
+msgid ""
+"Sorry Dave, I can't let you do that!
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:60
+msgid ""
+"There doesn't seem to be a page at this address. Sorry!
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:23
+msgid "Comment"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use Markdown for"
+" formatting."
+msgstr "ביכולתך לעשות שימוש בתחביר Markdown לעיצוב."
+
+#: mediagoblin/user_pages/forms.py:31
+msgid "I am sure I want to delete this"
+msgstr "אני בטוח שברצוני למחוק זאת"
+
+#: mediagoblin/user_pages/forms.py:35
+msgid "I am sure I want to remove this item from the collection"
+msgstr "אני בטוח שברצוני להסיר את פריט זה מן האוסף"
+
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:40
+msgid "-- Select --"
+msgstr "-- בחר --"
+
+#: mediagoblin/user_pages/forms.py:42
+msgid "Include a note"
+msgstr "הכללת פתק"
+
+#: mediagoblin/user_pages/lib.py:56
+msgid "commented on your post"
+msgstr "הגיב/ה על פרסומך"
+
+#: mediagoblin/user_pages/views.py:166
+msgid "Oops, your comment was empty."
+msgstr "אופס, תגובתך היתה ריקה."
+
+#: mediagoblin/user_pages/views.py:172
+msgid "Your comment has been posted!"
+msgstr "תגובתך פורסמה!"
+
+#: 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:248
+#, python-format
+msgid "\"%s\" already in collection \"%s\""
+msgstr "\"%s\" כבר קיים באוסף \"%s\""
+
+#: mediagoblin/user_pages/views.py:264
+#, python-format
+msgid "\"%s\" added to collection \"%s\""
+msgstr "\"%s\" התווסף אל האוסף \"%s\""
+
+#: mediagoblin/user_pages/views.py:286
+msgid "You deleted the media."
+msgstr "מחקת את מדיה זו."
+
+#: 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:301
+msgid "You are about to delete another user's media. Proceed with caution."
+msgstr "בחרת למחוק מדיה של משתמש אחר. המשך בזהירות."
+
+#: mediagoblin/user_pages/views.py:375
+msgid "You deleted the item from the collection."
+msgstr "מחקת את הפריט מן אוסף זה."
+
+#: 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:389
+msgid ""
+"You are about to delete an item from another user's collection. Proceed with"
+" caution."
+msgstr "בחרת למחוק פריט מן אוסף של משתמש אחר. המשך בזהירות."
+
+#: mediagoblin/user_pages/views.py:422
+#, python-format
+msgid "You deleted the collection \"%s\""
+msgstr "מחקת את האוסף \"%s\""
+
+#: 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: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 b55044f7..d9addaa6 100644
Binary files a/mediagoblin/i18n/ia/LC_MESSAGES/mediagoblin.mo and b/mediagoblin/i18n/ia/LC_MESSAGES/mediagoblin.mo differ
diff --git a/mediagoblin/i18n/ia/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/ia/LC_MESSAGES/mediagoblin.po
index d16e0022..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-09-24 14:01-0500\n"
-"PO-Revision-Date: 2012-09-24 18:57+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 \n"
"Language-Team: LANGUAGE \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:83
+#: 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:87 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"
" \n"
@@ -120,11 +134,11 @@ msgstr "Etiquettas"
msgid "Separate tags by commas."
msgstr ""
-#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:91
+#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:101
msgid "Slug"
msgstr ""
-#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:92
+#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:102
msgid "The slug can't be empty"
msgstr ""
@@ -163,60 +177,81 @@ msgstr ""
msgid "New password"
msgstr ""
-#: mediagoblin/edit/forms.py:72
+#: 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:84
+#: mediagoblin/edit/forms.py:94
msgid "The title can't be empty"
msgstr ""
-#: mediagoblin/edit/forms.py:86 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:93
+#: 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:155
+#, python-format
+msgid "You added the attachment %s!"
+msgstr ""
+
#: 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:198
+#: mediagoblin/edit/views.py:204
msgid "Profile changes saved"
msgstr ""
-#: mediagoblin/edit/views.py:227 mediagoblin/edit/views.py:247
-msgid "Account settings saved"
-msgstr ""
-
-#: mediagoblin/edit/views.py:252
+#: mediagoblin/edit/views.py:241
msgid "Wrong password"
msgstr ""
-#: mediagoblin/edit/views.py:288 mediagoblin/submit/views.py:211
-#: mediagoblin/user_pages/views.py:215
+#: mediagoblin/edit/views.py:252
+msgid "Account settings saved"
+msgstr ""
+
+#: mediagoblin/edit/views.py:286
+msgid "You need to confirm the deletion of your account."
+msgstr ""
+
+#: 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:292
+#: mediagoblin/edit/views.py:326
msgid "A collection with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:309
+#: mediagoblin/edit/views.py:343
msgid "You are editing another user's collection. Proceed with caution."
msgstr ""
@@ -232,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:120
+#: mediagoblin/meddleware/csrf.py:134
+msgid ""
+"CSRF cookie not present. This is most likely the result of a cookie blocker "
+"or somesuch. Make sure to permit the 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 OpenStreetMap"
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 ""
"Confidential - The client can\n"
" make requests to the GNU MediaGoblin instance that can not be\n"
@@ -289,17 +332,17 @@ 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 required 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 ""
@@ -307,7 +350,22 @@ msgstr ""
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 ""
@@ -315,75 +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/404.html:24
-msgid "Image of 404 goblin stressing out"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/404.html:25
-msgid "Oops!"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/404.html:26
-msgid "There doesn't seem to be a page at this address. Sorry!"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/404.html:28
-msgid ""
-"If you're sure the address is correct, maybe the page you're looking for has"
-" been moved or deleted."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:50
-msgid "MediaGoblin logo"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:60
+#: mediagoblin/templates/mediagoblin/base.html:64
msgid "Verify your email!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:66
-msgid "+ Add media"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:67
-msgid "+ Add collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:69
-msgid "View your profile"
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "log out"
msgstr ""
#: mediagoblin/templates/mediagoblin/base.html:70
-msgid "Log out"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:75
#: 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:89
-msgid ""
-"Powered by MediaGoblin, a GNU project."
+#: mediagoblin/templates/mediagoblin/base.html:79
+#, python-format
+msgid "%(user_name)s's account"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:92
+#: 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 MediaGoblin, a GNU project."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:125
#, python-format
msgid ""
"Released under the Source code available."
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:24
+#: mediagoblin/templates/mediagoblin/error.html:24
+msgid "Image of goblin stressing out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/root.html:31
msgid "Explore"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:26
+#: mediagoblin/templates/mediagoblin/root.html:33
msgid "Hi there, welcome to this MediaGoblin site!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:28
+#: mediagoblin/templates/mediagoblin/root.html:35
msgid ""
"This site is running MediaGoblin, an "
"extraordinarily great piece of media hosting software."
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:29
+#: 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:31
+#: mediagoblin/templates/mediagoblin/root.html:38
msgid "Don't have one yet? It's easy!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:32
+#: mediagoblin/templates/mediagoblin/root.html:39
#, python-format
msgid ""
"Create an account at this site\n"
@@ -423,17 +484,10 @@ msgid ""
" Set up MediaGoblin on your own server"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:40
+#: mediagoblin/templates/mediagoblin/root.html:47
msgid "Most recent media"
msgstr ""
-#: 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/admin/panel.html:29
msgid ""
"Here you can track the state of media being processed on this instance."
@@ -536,47 +590,85 @@ 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: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:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
+msgid "Add attachment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr "Cancellar"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
+#: mediagoblin/templates/mediagoblin/edit/edit.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
+#: 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
msgid "Editing %(media_title)s"
msgstr ""
-#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: 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:53
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Cancel"
-msgstr "Cancellar"
-
-#: mediagoblin/templates/mediagoblin/edit/edit.html:43
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
-msgid "Save changes"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
#, python-format
msgid "Changing %(username)s's account settings"
msgstr ""
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html: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 ""
@@ -591,13 +683,12 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:23
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
msgstr ""
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:27
msgid "Original"
msgstr ""
@@ -616,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 ""
@@ -624,21 +715,71 @@ msgstr ""
msgid "WebM file (Vorbis codec)"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
-msgid ""
-"Sorry, this video will not work because \n"
-"\t your web browser does not support HTML5 \n"
-"\t video."
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:87
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:93
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:99
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:105
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:65
+#, python-format
+msgid "Image for %(media_title)s"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:43
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:112
+msgid "Toggle Rotate"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:113
+msgid "Perspective"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:116
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
+msgid "Front"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:121
+msgid "Top"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:124
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:125
+msgid "Side"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:130
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
+msgid "WebGL"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:138
+msgid "Download model"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
+msgid "File Format"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
+msgid "Object Height"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:47
msgid ""
"You can get a modern web browser that \n"
-"\t can play this video at \n"
-"\t http://getfirefox.com!"
+" can play this video at \n"
+" http://getfirefox.com!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:69
msgid "WebM file (640p; VP8/Vorbis)"
msgstr ""
@@ -646,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:83
-msgid "Add"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
msgid "Add your media"
@@ -668,43 +803,40 @@ msgid "%(collection_title)s by %(username)s"
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 ""
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:59
-#, python-format
-msgid ""
-"
"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
-msgid "Attachments"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
-msgid "Add attachment"
-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:52
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
msgstr ""
@@ -839,74 +957,58 @@ 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:125
-msgid "Change account settings"
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:124
+msgid "Browse collections"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:138
+#: 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:151
+#: 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
-msgid "Add media"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:163
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:87
-#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:72
+#: 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 ""
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:39
-#, python-format
-msgid ""
-" \n"
-" %(note)s"
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
+msgid "(remove)"
msgstr ""
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:47
-#, python-format
-msgid " (remove)"
+#: 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 ""
#: 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:38
-#, python-format
-msgid "View on OpenStreetMap"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
msgstr ""
@@ -937,23 +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/user_pages/forms.py:28
+#: mediagoblin/tools/response.py:35
+msgid "Oops!"
+msgstr ""
+
+#: mediagoblin/tools/response.py:36
+msgid "An error occured"
+msgstr ""
+
+#: mediagoblin/tools/response.py:51
+msgid "Operation not allowed"
+msgstr ""
+
+#: mediagoblin/tools/response.py:52
+msgid ""
+"Sorry Dave, I can't let you do that!
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:60
+msgid ""
+"There doesn't seem to be a page at this address. Sorry!
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:23
+msgid "Comment"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use Markdown 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 ""
@@ -961,74 +1104,69 @@ msgstr ""
msgid "commented on your post"
msgstr ""
-#: mediagoblin/user_pages/views.py:161
+#: mediagoblin/user_pages/views.py:166
msgid "Oops, your comment was empty."
msgstr ""
-#: mediagoblin/user_pages/views.py:167
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
msgstr ""
-#: mediagoblin/user_pages/views.py:235
+#: 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:243
+#: mediagoblin/user_pages/views.py:248
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:258
+#: mediagoblin/user_pages/views.py:264
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:266
-msgid "Please check your entries and try again."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:297
-msgid ""
-"Some of the files with this entry seem to be missing. Deleting anyway."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:302
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
msgstr ""
-#: mediagoblin/user_pages/views.py:309
+#: 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:317
+#: 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:379
+#: mediagoblin/user_pages/views.py:375
msgid "You deleted the item from the collection."
msgstr ""
-#: mediagoblin/user_pages/views.py:383
+#: 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:393
+#: 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:426
+#: mediagoblin/user_pages/views.py:422
#, python-format
msgid "You deleted the collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:433
+#: 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:443
+#: 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
new file mode 100644
index 00000000..376aace4
Binary files /dev/null and b/mediagoblin/i18n/is_IS/LC_MESSAGES/mediagoblin.mo differ
diff --git a/mediagoblin/i18n/is_IS/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/is_IS/LC_MESSAGES/mediagoblin.po
new file mode 100644
index 00000000..1b298a64
--- /dev/null
+++ b/mediagoblin/i18n/is_IS/LC_MESSAGES/mediagoblin.po
@@ -0,0 +1,1171 @@
+# Translations template for PROJECT.
+# Copyright (C) 2013 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# , 2012.
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU MediaGoblin\n"
+"Report-Msgid-Bugs-To: http://issues.mediagoblin.org/\n"
+"POT-Creation-Date: 2013-03-04 18:04-0600\n"
+"PO-Revision-Date: 2013-03-05 00:04+0000\n"
+"Last-Translator: cwebber \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 0.9.6\n"
+"Language: is_IS\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: 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:56 mediagoblin/auth/forms.py:71
+msgid "Password"
+msgstr "Lykilorð"
+
+#: mediagoblin/auth/forms.py:60
+msgid "Email address"
+msgstr "Netfang"
+
+#: mediagoblin/auth/forms.py:78
+msgid "Username or email"
+msgstr "Notandanafn eða netfang"
+
+#: 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: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: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: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:180
+msgid "The verification key or user id is incorrect"
+msgstr "Staðfestingarlykillinn eða notendaauðkennið er rangt"
+
+#: 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:206
+msgid "You've already verified your email address!"
+msgstr "Þú hefur staðfest netfangið þitt!"
+
+#: mediagoblin/auth/views.py:219
+msgid "Resent your verification email."
+msgstr "Endursendi staðfestingartölvupóst"
+
+#: 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: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: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:93
+#: mediagoblin/submit/forms.py:28 mediagoblin/submit/forms.py:47
+#: mediagoblin/user_pages/forms.py:45
+msgid "Title"
+msgstr "Titill"
+
+#: mediagoblin/edit/forms.py:28 mediagoblin/submit/forms.py:31
+msgid "Description of this work"
+msgstr "Lýsing á þessu efni"
+
+#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:52
+#: 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"
+" \n"
+" Markdown for formatting."
+msgstr "Þú getur notað\n \n Markdown til að stílgera textann."
+
+#: mediagoblin/edit/forms.py:33 mediagoblin/submit/forms.py:36
+msgid "Tags"
+msgstr "Efnisorð"
+
+#: mediagoblin/edit/forms.py:35 mediagoblin/submit/forms.py:38
+msgid "Separate tags by commas."
+msgstr "Aðskildu efnisorðin með kommum."
+
+#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:101
+msgid "Slug"
+msgstr "Vefslóðarormur"
+
+#: 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"
+
+#: mediagoblin/edit/forms.py:40
+msgid ""
+"The title part of this media's address. You usually don't need to change "
+"this."
+msgstr "Titilhlutinn í vefslóð þessa efnis. Þú þarft vanalega ekki að breyta þessu."
+
+#: mediagoblin/edit/forms.py:44 mediagoblin/submit/forms.py:41
+#: mediagoblin/templates/mediagoblin/utils/license.html:20
+msgid "License"
+msgstr "Leyfi"
+
+#: mediagoblin/edit/forms.py:50
+msgid "Bio"
+msgstr "Lýsing"
+
+#: mediagoblin/edit/forms.py:56
+msgid "Website"
+msgstr "Vefsíða"
+
+#: mediagoblin/edit/forms.py:58
+msgid "This address contains errors"
+msgstr "Þetta netfang inniheldur villur"
+
+#: mediagoblin/edit/forms.py:63
+msgid "Old password"
+msgstr "Gamla lykilorðið"
+
+#: mediagoblin/edit/forms.py:64
+msgid "Enter your old password to prove you own this account."
+msgstr "Skráðu gamla lykilorðið þitt til að sanna að þú átt þennan aðgang."
+
+#: mediagoblin/edit/forms.py:67
+msgid "New password"
+msgstr "Nýtt lykilorð"
+
+#: 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:94
+msgid "The title can't be empty"
+msgstr "Þessi titill getur verið innihaldslaus"
+
+#: 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: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: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: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:155
+#, python-format
+msgid "You added the attachment %s!"
+msgstr "Þú bættir við viðhenginu %s!"
+
+#: 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:204
+msgid "Profile changes saved"
+msgstr "Breytingar á kenniskrá vistaðar"
+
+#: 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:286
+msgid "You need to confirm the deletion of your account."
+msgstr ""
+
+#: 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: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: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."
+
+#: mediagoblin/gmg_commands/theme.py:58
+msgid "Cannot link theme... no theme set\n"
+msgstr "Get ekki hlekkjað í þema... ekkert þema stillt\n"
+
+#: mediagoblin/gmg_commands/theme.py:71
+msgid "No asset directory for this theme\n"
+msgstr "Engin eignamappa fyrir þetta þema\n"
+
+#: mediagoblin/gmg_commands/theme.py:74
+msgid "However, old link directory symlink found; removed.\n"
+msgstr "Fann samt gamlan táknrænan tengil á möppu; fjarlægður.\n"
+
+#: mediagoblin/meddleware/csrf.py:134
+msgid ""
+"CSRF cookie not present. This is most likely the result of a cookie blocker "
+"or somesuch. Make sure to permit the 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:36
+msgid "Video transcoding failed"
+msgstr "Myndbandsþverkótun mistókst"
+
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
+msgid "Location"
+msgstr "Staðsetning"
+
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:52
+#, python-format
+msgid "View on OpenStreetMap"
+msgstr "Skoða á OpenStreetMap"
+
+#: mediagoblin/plugins/oauth/forms.py:29
+msgid "Allow"
+msgstr "Leyfa"
+
+#: mediagoblin/plugins/oauth/forms.py:30
+msgid "Deny"
+msgstr "Banna"
+
+#: mediagoblin/plugins/oauth/forms.py:34
+msgid "Name"
+msgstr "Nafn"
+
+#: mediagoblin/plugins/oauth/forms.py:35
+msgid "The name of the OAuth client"
+msgstr "Nafn OAuth biðlarans"
+
+#: mediagoblin/plugins/oauth/forms.py:36
+msgid "Description"
+msgstr "Lýsing"
+
+#: 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:40
+msgid "Type"
+msgstr "Tegund"
+
+#: mediagoblin/plugins/oauth/forms.py:45
+msgid ""
+"Confidential - 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). \n"
+" Public - The client can't make confidential\n"
+" requests to the GNU MediaGoblin instance (e.g. client-side\n"
+" JavaScript client)."
+msgstr "Trúnaður - 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). \n Opinbert - 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:52
+msgid "Redirect URI"
+msgstr "Áframsendingarvefslóð"
+
+#: mediagoblin/plugins/oauth/forms.py:54
+msgid ""
+"The redirect URI for the applications, this field\n"
+" is required for public clients."
+msgstr "Áframsendingarvefslóðin fyrir forritin, þessi reitur\n er nauðsynlegur fyrir opinbera biðlara."
+
+#: 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:59
+msgid "The client {0} has been registered!"
+msgstr "Biðlarinn {0} hefur verið skráður!"
+
+#: 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."
+
+#: mediagoblin/submit/forms.py:26
+msgid "File"
+msgstr "Skrá"
+
+#: mediagoblin/submit/views.py:51
+msgid "You must provide a file."
+msgstr "Þú verður að gefa upp skrá."
+
+#: mediagoblin/submit/views.py:97
+msgid "Woohoo! Submitted!"
+msgstr "Jibbí jei! Það tókst að senda inn!"
+
+#: mediagoblin/submit/views.py:146
+#, python-format
+msgid "Collection \"%s\" added!"
+msgstr "Albúmið \"%s\" var búið til!"
+
+#: mediagoblin/templates/mediagoblin/base.html:64
+msgid "Verify your email!"
+msgstr "Staðfestu netfangið þitt!"
+
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "log out"
+msgstr "útskrá"
+
+#: 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:79
+#, python-format
+msgid "%(user_name)s's account"
+msgstr "Notandaaðgangur %(user_name)s"
+
+#: 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 MediaGoblin, a GNU project."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:125
+#, python-format
+msgid ""
+"Released under the AGPL. Source code available."
+msgstr "Gefið út undir AGPL. Frumkóti aðgengilegur."
+
+#: mediagoblin/templates/mediagoblin/error.html:24
+msgid "Image of goblin stressing out"
+msgstr "Mynd af durt í stresskasti"
+
+#: mediagoblin/templates/mediagoblin/root.html:31
+msgid "Explore"
+msgstr "Skoða"
+
+#: 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:35
+msgid ""
+"This site is running MediaGoblin, an "
+"extraordinarily great piece of media hosting software."
+msgstr "Þetta vefsvæði keyrira á MediaGoblin sem er ótrúlega frábær hugbúnaður til að geyma margmiðlunarefni."
+
+#: 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: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:39
+#, python-format
+msgid ""
+"Create an account at this site\n"
+" or\n"
+" Set up MediaGoblin on your own server"
+msgstr "Búa til aðgang á þessari síðu\n eða\n Settu upp þinn eigin margmiðlunarþjón"
+
+#: mediagoblin/templates/mediagoblin/root.html:47
+msgid "Most recent media"
+msgstr "Nýlegt efni"
+
+#: mediagoblin/templates/mediagoblin/admin/panel.html:29
+msgid ""
+"Here you can track the state of media being processed on this instance."
+msgstr "Hér getur þú fylgst með margmiðlunarefni sem verið er að vinna á þessu vefsvæði."
+
+#: mediagoblin/templates/mediagoblin/admin/panel.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:32
+msgid "Media in-processing"
+msgstr "Efni í vinnslu"
+
+#: mediagoblin/templates/mediagoblin/admin/panel.html:58
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
+msgid "No media in-processing"
+msgstr "Ekkert efni í vinnslu"
+
+#: mediagoblin/templates/mediagoblin/admin/panel.html:61
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:59
+msgid "These uploads failed to process:"
+msgstr "Það mistókst að fullvinna þessar innsendingar:"
+
+#: mediagoblin/templates/mediagoblin/admin/panel.html:90
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
+msgid "No failed entries!"
+msgstr "Engar bilaðar innsendingar!"
+
+#: mediagoblin/templates/mediagoblin/admin/panel.html:92
+msgid "Last 10 successful uploads"
+msgstr "Síðustu 10 árangursríku innsendingarnar"
+
+#: mediagoblin/templates/mediagoblin/admin/panel.html:112
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
+msgid "No processed entries, yet!"
+msgstr "Ekkert fullunnið efni enn!"
+
+#: mediagoblin/templates/mediagoblin/auth/change_fp.html:28
+#: mediagoblin/templates/mediagoblin/auth/change_fp.html:36
+msgid "Set your new password"
+msgstr "Skrifaðu inn nýja lykilorðið þitt"
+
+#: mediagoblin/templates/mediagoblin/auth/change_fp.html:39
+msgid "Set password"
+msgstr "Skrá lykilorð"
+
+#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:23
+#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:31
+msgid "Recover password"
+msgstr "Endurstilla lykilorð"
+
+#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:34
+msgid "Send instructions"
+msgstr "Senda leiðbeiningar"
+
+#: mediagoblin/templates/mediagoblin/auth/fp_verification_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"\n"
+"to change your GNU MediaGoblin password, open the following URL in \n"
+"your web browser:\n"
+"\n"
+"%(verification_url)s\n"
+"\n"
+"If you think this is an error, just ignore this email and continue being\n"
+"a happy goblin!"
+msgstr "Hæ %(username)s,\n\ntil að breyta GNU MediaGoblin lykilorðinu þínu opnar þú eftirfarandi vefslóð í \nvafranum þínum:\n\n%(verification_url)s\n\nEf þú heldur að það sé einhver vitleysa í gangi husnar þú bara þennan póst og heldur áfram að vera\nánægður durtur!"
+
+#: mediagoblin/templates/mediagoblin/auth/login.html:39
+msgid "Logging in failed!"
+msgstr "Mistókst að skrá þig inn."
+
+#: mediagoblin/templates/mediagoblin/auth/login.html:44
+msgid "Don't have an account yet?"
+msgstr "Ertu ekki með notendaaðgang?"
+
+#: mediagoblin/templates/mediagoblin/auth/login.html:45
+msgid "Create one here!"
+msgstr "Búðu til aðgang hérna!"
+
+#: mediagoblin/templates/mediagoblin/auth/login.html:51
+msgid "Forgot your password?"
+msgstr "Gleymdirðu lykilorðinu þínu?"
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:28
+#: mediagoblin/templates/mediagoblin/auth/register.html:36
+msgid "Create an account!"
+msgstr "Búðu til nýjan aðgang!"
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:40
+msgid "Create"
+msgstr "Búa til"
+
+#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"\n"
+"to activate your GNU MediaGoblin account, open the following URL in\n"
+"your web browser:\n"
+"\n"
+"%(verification_url)s"
+msgstr "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: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:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
+msgid "Add attachment"
+msgstr "Bæta við viðhengi"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr "Hætta við"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
+#: mediagoblin/templates/mediagoblin/edit/edit.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
+#: 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
+msgid "Editing %(media_title)s"
+msgstr "Breyti %(media_title)s"
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
+#, python-format
+msgid "Changing %(username)s's account settings"
+msgstr "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:34
+#, python-format
+msgid "Editing %(username)s's profile"
+msgstr "Breyti kenniskrá notandans: %(username)s"
+
+#: mediagoblin/templates/mediagoblin/listings/collection.html:30
+#: mediagoblin/templates/mediagoblin/listings/collection.html:35
+#: mediagoblin/templates/mediagoblin/listings/tag.html:30
+#: mediagoblin/templates/mediagoblin/listings/tag.html:35
+#, python-format
+msgid "Media tagged with: %(tag_name)s"
+msgstr "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:55
+msgid "Download"
+msgstr "Sækja af Netinu"
+
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
+msgid "Original"
+msgstr "Upphafleg skrá"
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:44
+msgid ""
+"Sorry, this audio will not work because \n"
+"\tyour web browser does not support HTML5 \n"
+"\taudio."
+msgstr "Því miður mun þessi hljóðskrá ekki virka því \n\tvafrinn þinn styður ekki HTML5 \n\thljóðskrár."
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:47
+msgid ""
+"You can get a modern web browser that \n"
+"\tcan play the audio at \n"
+"\t http://getfirefox.com!"
+msgstr "Þú getur náð í nýlegan vafra sem \n\tgetur spilað hljóðskrár á \n\t http://getfirefox.com!"
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:61
+msgid "Original file"
+msgstr "Upphaflega skráin"
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:63
+msgid "WebM file (Vorbis codec)"
+msgstr "WebM skrá (Vorbis víxlþjöppun)"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:87
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:93
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:99
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:105
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:65
+#, python-format
+msgid "Image for %(media_title)s"
+msgstr "Mynd fyrir %(media_title)s"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:112
+msgid "Toggle Rotate"
+msgstr "Stilla snúning af eða á"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:113
+msgid "Perspective"
+msgstr "Sjónhorf"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:116
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
+msgid "Front"
+msgstr "Framhlið"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:121
+msgid "Top"
+msgstr "Toppur"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:124
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:125
+msgid "Side"
+msgstr "Hlið"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:130
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
+msgid "WebGL"
+msgstr "WebGL"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:138
+msgid "Download model"
+msgstr "Hala niður líkani"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
+msgid "File Format"
+msgstr "Skráarsnið"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
+msgid "Object Height"
+msgstr "Hæð hlutar"
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:47
+msgid ""
+"You can get a modern web browser that \n"
+" can play this video at \n"
+" http://getfirefox.com!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:69
+msgid "WebM file (640p; VP8/Vorbis)"
+msgstr "WebM skrá (640p; VP8/Vorbis)"
+
+#: mediagoblin/templates/mediagoblin/submit/collection.html:26
+msgid "Add a collection"
+msgstr "Búa til albúm"
+
+#: mediagoblin/templates/mediagoblin/submit/start.html:23
+#: mediagoblin/templates/mediagoblin/submit/start.html:30
+msgid "Add your media"
+msgstr "Sendu inn efni"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:30
+#, python-format
+msgid "%(collection_title)s (%(username)s's collection)"
+msgstr "%(collection_title)s (albúm sem %(username)s á)"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:39
+#, python-format
+msgid "%(collection_title)s by %(username)s"
+msgstr "%(collection_title)s sem %(username)s bjó til"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
+#: 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:83
+msgid "Delete"
+msgstr "Eyða"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:30
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
+#, python-format
+msgid "Really delete %(title)s?"
+msgstr "Virkilega eyða %(title)s?"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:31
+#, python-format
+msgid "Really remove %(media_title)s from %(collection_title)s?"
+msgstr "Virkilega fjarlægja %(media_title)s úr %(collection_title)s albúminu?"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:53
+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 "%(username)s's collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/comment_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"%(comment_author)s commented on your post (%(comment_url)s) at %(instance_name)s\n"
+msgstr "Hæ %(username)s,\n%(comment_author)s skrifaði athugasemd við færsluna þína (%(comment_url)s) á %(instance_name)s\n"
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
+#, python-format
+msgid "%(username)s's media"
+msgstr "Efni sem %(username)s á"
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:38
+#, python-format
+msgid ""
+"%(username)s's media with tag %(tag)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
+#, python-format
+msgid "%(username)s's media"
+msgstr "Efni sem %(username)s á"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
+#, python-format
+msgid "❖ Browsing media by %(username)s"
+msgstr "❖ Skoða efnið sem %(username)s setti inn"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:94
+msgid "Add a comment"
+msgstr "Bæta við athugasemd"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:102
+msgid "Add this comment"
+msgstr "Senda inn þessa athugasemd"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:123
+msgid "at"
+msgstr "hjá"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:144
+#, python-format
+msgid ""
+"
Added on
\n"
+"
%(date)s
"
+msgstr "
Bætt við:
\n
%(date)s
"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
+#, python-format
+msgid "Add “%(media_title)s” to a collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
+msgid "+"
+msgstr "+"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
+msgid "Add a new collection"
+msgstr "Búa til nýtt albúm"
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
+msgid ""
+"You can track the state of media being processed for your gallery here."
+msgstr "Þú getur fylgst með hvernig gengur að vinna með margmiðlunarefnið fyrir safnið þitt hérna."
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:89
+msgid "Your last 10 successful uploads"
+msgstr "Síðustu 10 árangursíku innsendingarnar þínar"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:31
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:89
+#, python-format
+msgid "%(username)s's profile"
+msgstr "Kenniskrá fyrir: %(username)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:43
+msgid "Sorry, no such user found."
+msgstr "Því miður fannst notandinn ekki."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:50
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:70
+msgid "Email verification needed"
+msgstr "Staðfesting á netfangi nauðsynleg"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
+msgid "Almost done! Your account still needs to be activated."
+msgstr "Næstum því búið! Notandaaðgangurinn þinn verður að vera staðfestur."
+
+#: 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 "Tölvupóstur ætti að berast til þín eftir smástund með leiðbeiningum um hvernig þú átt að gera það."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
+msgid "In case it doesn't:"
+msgstr "Ef það gerist ekki:"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:65
+msgid "Resend verification email"
+msgstr "Endursenda staðfestingarpóst"
+
+#: 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 "Einhver hefur búið til aðgang með þessu notandanafni en hefur ekki enn virkjað aðganginn."
+
+#: 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 log in and resend it."
+msgstr "Ef þú ert þessi aðili en hefur týnt staðfestingarpóstinum getur þú skráð þig inn og endursent hann"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
+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:100
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:117
+msgid "Edit profile"
+msgstr "Breyta kenniskrá"
+
+#: 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: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: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: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 "Það virðist ekki vera neitt efni hérna ennþá..."
+
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
+msgid "(remove)"
+msgstr "(fjarlægja)"
+
+#: 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/license.html:25
+msgid "All rights reserved"
+msgstr "Öll réttindi áskilin"
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
+msgid "← Newer"
+msgstr "← Nýrri"
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
+msgid "Older →"
+msgstr "Eldri →"
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
+msgid "Go to page:"
+msgstr "Fara á síðu:"
+
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:28
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:33
+msgid "newer"
+msgstr "nýrri"
+
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:39
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:44
+msgid "older"
+msgstr "eldri"
+
+#: mediagoblin/templates/mediagoblin/utils/tags.html:20
+msgid "Tagged with"
+msgstr "Merkt með"
+
+#: mediagoblin/tools/exif.py:80
+msgid "Could not read the image file."
+msgstr "Gat ekki lesið myndskrána."
+
+#: mediagoblin/tools/response.py:35
+msgid "Oops!"
+msgstr "Obbosí!"
+
+#: mediagoblin/tools/response.py:36
+msgid "An error occured"
+msgstr "Villa kom upp"
+
+#: mediagoblin/tools/response.py:51
+msgid "Operation not allowed"
+msgstr "Aðgerð ekki leyfileg"
+
+#: mediagoblin/tools/response.py:52
+msgid ""
+"Sorry Dave, I can't let you do that!
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!
Þú 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:60
+msgid ""
+"There doesn't seem to be a page at this address. Sorry!
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óð.
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:23
+msgid "Comment"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use Markdown for"
+" formatting."
+msgstr "Þú getur notað Markdown 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: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:39
+msgid "Collection"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:40
+msgid "-- Select --"
+msgstr "-- Velja --"
+
+#: mediagoblin/user_pages/forms.py:42
+msgid "Include a note"
+msgstr "Bæta við minnispunktum"
+
+#: mediagoblin/user_pages/lib.py:56
+msgid "commented on your post"
+msgstr "skrifaði athugasemd við færsluna þína"
+
+#: mediagoblin/user_pages/views.py:166
+msgid "Oops, your comment was empty."
+msgstr "Obbosí! Athugasemdin þín var innihaldslaus."
+
+#: mediagoblin/user_pages/views.py:172
+msgid "Your comment has been posted!"
+msgstr "Athugasemdin þín var skráð!"
+
+#: 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:248
+#, python-format
+msgid "\"%s\" already in collection \"%s\""
+msgstr "\"%s\" er nú þegar í albúminu \"%s\""
+
+#: 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:286
+msgid "You deleted the media."
+msgstr "Þú eyddir þessu efni."
+
+#: 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: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:375
+msgid "You deleted the item from the collection."
+msgstr "Þú tókst þetta efni úr albúminu."
+
+#: 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: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:422
+#, python-format
+msgid "You deleted the collection \"%s\""
+msgstr "Þú eyddir albúminu \"%s\""
+
+#: 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: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 5658950c..62451511 100644
Binary files a/mediagoblin/i18n/it/LC_MESSAGES/mediagoblin.mo and b/mediagoblin/i18n/it/LC_MESSAGES/mediagoblin.mo differ
diff --git a/mediagoblin/i18n/it/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/it/LC_MESSAGES/mediagoblin.po
index fd04ba6e..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-09-24 14:01-0500\n"
-"PO-Revision-Date: 2012-09-24 18:57+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 \n"
"Language-Team: LANGUAGE \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:83
+#: 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:87 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"
" \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:91
+#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:101
msgid "Slug"
msgstr ""
-#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:92
+#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:102
msgid "The slug can't be empty"
msgstr ""
@@ -165,60 +179,81 @@ msgstr "Inserisci la vecchia password per dimostrare di essere il proprietario d
msgid "New password"
msgstr "Nuova password"
-#: mediagoblin/edit/forms.py:72
+#: 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:84
+#: mediagoblin/edit/forms.py:94
msgid "The title can't be empty"
msgstr ""
-#: mediagoblin/edit/forms.py:86 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:93
+#: 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:155
+#, python-format
+msgid "You added the attachment %s!"
+msgstr ""
+
#: 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:198
+#: mediagoblin/edit/views.py:204
msgid "Profile changes saved"
msgstr "Cambiamenti del profilo salvati"
-#: mediagoblin/edit/views.py:227 mediagoblin/edit/views.py:247
-msgid "Account settings saved"
-msgstr "Impostazioni del profilo salvate"
-
-#: mediagoblin/edit/views.py:252
+#: mediagoblin/edit/views.py:241
msgid "Wrong password"
msgstr "Password errata"
-#: mediagoblin/edit/views.py:288 mediagoblin/submit/views.py:211
-#: mediagoblin/user_pages/views.py:215
+#: mediagoblin/edit/views.py:252
+msgid "Account settings saved"
+msgstr "Impostazioni del profilo salvate"
+
+#: mediagoblin/edit/views.py:286
+msgid "You need to confirm the deletion of your account."
+msgstr ""
+
+#: 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:292
+#: mediagoblin/edit/views.py:326
msgid "A collection with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:309
+#: mediagoblin/edit/views.py:343
msgid "You are editing another user's collection. Proceed with caution."
msgstr ""
@@ -234,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:120
+#: mediagoblin/meddleware/csrf.py:134
+msgid ""
+"CSRF cookie not present. This is most likely the result of a cookie blocker "
+"or somesuch. Make sure to permit the 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 OpenStreetMap"
+msgstr "Visualizza su OpenStreetMap"
-#: 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 ""
"Confidential - The client can\n"
" make requests to the GNU MediaGoblin instance that can not be\n"
@@ -291,17 +334,17 @@ 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 required 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 ""
@@ -309,7 +352,22 @@ msgstr ""
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."
@@ -317,75 +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/404.html:24
-msgid "Image of 404 goblin stressing out"
-msgstr "Immagine di 404 folletti che stressano"
-
-#: mediagoblin/templates/mediagoblin/404.html:25
-msgid "Oops!"
-msgstr "Oops!"
-
-#: mediagoblin/templates/mediagoblin/404.html:26
-msgid "There doesn't seem to be a page at this address. Sorry!"
-msgstr "Non sembra esserci una pagina a questo indirizzo. Spiacente!"
-
-#: mediagoblin/templates/mediagoblin/404.html:28
-msgid ""
-"If you're sure the address is correct, maybe the page you're looking for has"
-" been moved or deleted."
-msgstr "Se sei sicuro che l'indirizzo è corretto, forse la pagina che stai cercando è stata spostata o cancellata."
-
-#: mediagoblin/templates/mediagoblin/base.html:50
-msgid "MediaGoblin logo"
-msgstr "Simbolo di MediaGoblin"
-
-#: mediagoblin/templates/mediagoblin/base.html:60
+#: mediagoblin/templates/mediagoblin/base.html:64
msgid "Verify your email!"
msgstr "Verifica la tua email!"
-#: mediagoblin/templates/mediagoblin/base.html:66
-msgid "+ Add media"
-msgstr "+ Aggiungi files multimediali"
-
-#: mediagoblin/templates/mediagoblin/base.html:67
-msgid "+ Add collection"
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "log out"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:69
-msgid "View your profile"
-msgstr "Vedi il tuo profilo"
-
#: mediagoblin/templates/mediagoblin/base.html:70
-msgid "Log out"
-msgstr "Esci"
-
-#: mediagoblin/templates/mediagoblin/base.html:75
#: 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:89
-msgid ""
-"Powered by MediaGoblin, a GNU project."
-msgstr "Realizzato con MediaGoblin, un progetto GNU."
+#: mediagoblin/templates/mediagoblin/base.html:79
+#, python-format
+msgid "%(user_name)s's account"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:92
+#: 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:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:156
+msgid "Add media"
+msgstr "Aggiungi files multimediali"
+
+#: 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 MediaGoblin, a GNU project."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:125
#, python-format
msgid ""
"Released under the Source code available."
msgstr "Rilasciato con licenza AGPL. Codice sorgente disponibile."
-#: mediagoblin/templates/mediagoblin/root.html:24
+#: mediagoblin/templates/mediagoblin/error.html:24
+msgid "Image of goblin stressing out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/root.html:31
msgid "Explore"
msgstr "Esplora"
-#: mediagoblin/templates/mediagoblin/root.html:26
+#: 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:28
+#: mediagoblin/templates/mediagoblin/root.html:35
msgid ""
"This site is running MediaGoblin, an "
"extraordinarily great piece of media hosting software."
msgstr "Questo sito sta utilizzando Mediagoblin, un ottimo programma per caricare e condividere files multimediali."
-#: mediagoblin/templates/mediagoblin/root.html:29
+#: 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:31
+#: 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:32
+#: mediagoblin/templates/mediagoblin/root.html:39
#, python-format
msgid ""
"Create an account at this site\n"
@@ -425,17 +486,10 @@ msgid ""
" Set up MediaGoblin on your own server"
msgstr "Crea un account in questo sito\n oppure\n Installa MediaGoblin sul tuo server"
-#: mediagoblin/templates/mediagoblin/root.html:40
+#: mediagoblin/templates/mediagoblin/root.html:47
msgid "Most recent media"
msgstr "Files multimediali più recenti"
-#: 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/admin/panel.html:29
msgid ""
"Here you can track the state of media being processed on this instance."
@@ -538,47 +592,85 @@ 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: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:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
+msgid "Add attachment"
+msgstr "Aggiungi allegato"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr "Annulla"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
+#: mediagoblin/templates/mediagoblin/edit/edit.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
+#: 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
msgid "Editing %(media_title)s"
msgstr "Stai modificando %(media_title)s"
-#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: 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:53
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Cancel"
-msgstr "Annulla"
-
-#: mediagoblin/templates/mediagoblin/edit/edit.html:43
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
-msgid "Save changes"
-msgstr "Salva i cambiamenti"
-
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
#, python-format
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"
@@ -593,13 +685,12 @@ 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/image.html:23
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
msgstr "Scarica"
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:27
msgid "Original"
msgstr "Originale"
@@ -618,7 +709,7 @@ msgid ""
msgstr "Puoi scaricare un browser web moderno,\n\t in grado di leggere questo file audio, qui \n\t http://getfirefox.com!"
#: 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"
@@ -626,21 +717,71 @@ msgstr "File originario"
msgid "WebM file (Vorbis codec)"
msgstr "File WebM (codec Vorbis)"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
-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."
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:87
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:93
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:99
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:105
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:65
+#, python-format
+msgid "Image for %(media_title)s"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:43
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:112
+msgid "Toggle Rotate"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:113
+msgid "Perspective"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:116
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
+msgid "Front"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:121
+msgid "Top"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:124
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:125
+msgid "Side"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:130
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
+msgid "WebGL"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:138
+msgid "Download model"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
+msgid "File Format"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
+msgid "Object Height"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:47
msgid ""
"You can get a modern web browser that \n"
-"\t can play this video at \n"
-"\t http://getfirefox.com!"
-msgstr "Puoi scaricare un browser web moderno,\n\t in grado di visualizzare questo video, qui \n\t http://getfirefox.com!"
+" can play this video at \n"
+" http://getfirefox.com!"
+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)"
@@ -648,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:83
-msgid "Add"
-msgstr "Aggiungi"
-
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
msgid "Add your media"
@@ -670,43 +805,40 @@ msgid "%(collection_title)s by %(username)s"
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"
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:59
-#, python-format
-msgid ""
-"
\n"
-" %(collection_description)s\n"
-"
"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:30
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
#, python-format
msgid "Really delete %(title)s?"
msgstr "Vuoi davvero eliminare %(title)s?"
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:47
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:50
-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?"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:54
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:53
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 "%(username)s's collections"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/user_pages/comment_email.txt:19
#, python-format
msgid ""
@@ -719,67 +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 ""
+"%(username)s's media with tag %(tag)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
#, python-format
msgid "%(username)s's media"
msgstr "Files multimediali di %(username)s"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
#, python-format
msgid "❖ Browsing media by %(username)s"
msgstr "❖ Stai guardando i files multimediali di %(username)s"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:67
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
-#, python-format
-msgid "Image for %(media_title)s"
-msgstr ""
-
-#: 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 Markdown for"
-" formatting."
-msgstr "Puoi usare il Markdown 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 ""
"
Added on
\n"
"
%(date)s
"
msgstr "
Aggiunto il
\n
%(date)s
"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
-msgid "Attachments"
-msgstr "Allegati"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
-msgid "Add attachment"
-msgstr "Aggiungi allegato"
-
-#: 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:52
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
msgstr ""
@@ -841,74 +959,58 @@ msgstr "Se sei quella persona ma hai perso l'email di verifica, puoi \n"
-" %(note)s"
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
+msgid "(remove)"
msgstr ""
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:47
-#, python-format
-msgid " (remove)"
+#: 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 "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:38
-#, python-format
-msgid "View on OpenStreetMap"
-msgstr "Visualizza su OpenStreetMap"
-
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
msgstr "Tutti i diritti riservati"
@@ -939,23 +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/user_pages/forms.py:28
+#: mediagoblin/tools/response.py:35
+msgid "Oops!"
+msgstr "Oops!"
+
+#: mediagoblin/tools/response.py:36
+msgid "An error occured"
+msgstr ""
+
+#: mediagoblin/tools/response.py:51
+msgid "Operation not allowed"
+msgstr ""
+
+#: mediagoblin/tools/response.py:52
+msgid ""
+"Sorry Dave, I can't let you do that!
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:60
+msgid ""
+"There doesn't seem to be a page at this address. Sorry!
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:23
+msgid "Comment"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use Markdown for"
+" formatting."
+msgstr "Puoi usare il Markdown 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 ""
@@ -963,74 +1106,69 @@ msgstr ""
msgid "commented on your post"
msgstr "ha commentato il tuo post"
-#: mediagoblin/user_pages/views.py:161
+#: mediagoblin/user_pages/views.py:166
msgid "Oops, your comment was empty."
msgstr "Oops, il tuo commento era vuoto."
-#: mediagoblin/user_pages/views.py:167
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
msgstr "Il tuo commento è stato aggiunto!"
-#: mediagoblin/user_pages/views.py:235
+#: 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:243
+#: mediagoblin/user_pages/views.py:248
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:258
+#: mediagoblin/user_pages/views.py:264
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:266
-msgid "Please check your entries and try again."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:297
-msgid ""
-"Some of the files with this entry seem to be missing. Deleting anyway."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:302
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
msgstr "Hai eliminato il file."
-#: mediagoblin/user_pages/views.py:309
+#: 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:317
+#: 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:379
+#: mediagoblin/user_pages/views.py:375
msgid "You deleted the item from the collection."
msgstr ""
-#: mediagoblin/user_pages/views.py:383
+#: 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:393
+#: 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:426
+#: mediagoblin/user_pages/views.py:422
#, python-format
msgid "You deleted the collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:433
+#: 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:443
+#: 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 fc0bba8f..1344c9bd 100644
Binary files a/mediagoblin/i18n/ja/LC_MESSAGES/mediagoblin.mo and b/mediagoblin/i18n/ja/LC_MESSAGES/mediagoblin.mo differ
diff --git a/mediagoblin/i18n/ja/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/ja/LC_MESSAGES/mediagoblin.po
index 5fb16241..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:
# , 2011.
+# , 2013.
msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://issues.mediagoblin.org/\n"
-"POT-Creation-Date: 2012-09-24 14:01-0500\n"
-"PO-Revision-Date: 2012-09-24 18:57+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 \n"
"Language-Team: LANGUAGE \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:83
+#: 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:87 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"
" \n"
@@ -119,11 +134,11 @@ msgstr "タグ"
msgid "Separate tags by commas."
msgstr ""
-#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:91
+#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:101
msgid "Slug"
msgstr "スラグ"
-#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:92
+#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:102
msgid "The slug can't be empty"
msgstr "スラグは必要です。"
@@ -162,60 +177,81 @@ msgstr ""
msgid "New password"
msgstr ""
-#: mediagoblin/edit/forms.py:72
+#: 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:84
+#: mediagoblin/edit/forms.py:94
msgid "The title can't be empty"
msgstr ""
-#: mediagoblin/edit/forms.py:86 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:93
+#: 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:155
+#, python-format
+msgid "You added the attachment %s!"
+msgstr ""
+
#: 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:198
+#: mediagoblin/edit/views.py:204
msgid "Profile changes saved"
msgstr ""
-#: mediagoblin/edit/views.py:227 mediagoblin/edit/views.py:247
-msgid "Account settings saved"
-msgstr ""
-
-#: mediagoblin/edit/views.py:252
+#: mediagoblin/edit/views.py:241
msgid "Wrong password"
msgstr ""
-#: mediagoblin/edit/views.py:288 mediagoblin/submit/views.py:211
-#: mediagoblin/user_pages/views.py:215
+#: mediagoblin/edit/views.py:252
+msgid "Account settings saved"
+msgstr ""
+
+#: mediagoblin/edit/views.py:286
+msgid "You need to confirm the deletion of your account."
+msgstr ""
+
+#: 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:292
+#: mediagoblin/edit/views.py:326
msgid "A collection with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:309
+#: mediagoblin/edit/views.py:343
msgid "You are editing another user's collection. Proceed with caution."
msgstr ""
@@ -231,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:120
+#: mediagoblin/meddleware/csrf.py:134
+msgid ""
+"CSRF cookie not present. This is most likely the result of a cookie blocker "
+"or somesuch. Make sure to permit the 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 OpenStreetMap"
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 ""
"Confidential - The client can\n"
" make requests to the GNU MediaGoblin instance that can not be\n"
@@ -288,17 +332,17 @@ 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 required 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 ""
@@ -306,7 +350,22 @@ msgstr ""
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 ""
@@ -314,75 +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/404.html:24
-msgid "Image of 404 goblin stressing out"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/404.html:25
-msgid "Oops!"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/404.html:26
-msgid "There doesn't seem to be a page at this address. Sorry!"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/404.html:28
-msgid ""
-"If you're sure the address is correct, maybe the page you're looking for has"
-" been moved or deleted."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:50
-msgid "MediaGoblin logo"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:60
+#: mediagoblin/templates/mediagoblin/base.html:64
msgid "Verify your email!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:66
-msgid "+ Add media"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:67
-msgid "+ Add collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:69
-msgid "View your profile"
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "log out"
msgstr ""
#: mediagoblin/templates/mediagoblin/base.html:70
-msgid "Log out"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:75
#: 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:89
-msgid ""
-"Powered by MediaGoblin, a GNU project."
+#: mediagoblin/templates/mediagoblin/base.html:79
+#, python-format
+msgid "%(user_name)s's account"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:92
+#: 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 MediaGoblin, a GNU project."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:125
#, python-format
msgid ""
"Released under the Source code available."
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:24
+#: mediagoblin/templates/mediagoblin/error.html:24
+msgid "Image of goblin stressing out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/root.html:31
msgid "Explore"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:26
+#: mediagoblin/templates/mediagoblin/root.html:33
msgid "Hi there, welcome to this MediaGoblin site!"
-msgstr ""
+msgstr "こんにちは、このMediaGoblinサイトへようこそ!"
-#: mediagoblin/templates/mediagoblin/root.html:28
+#: mediagoblin/templates/mediagoblin/root.html:35
msgid ""
"This site is running MediaGoblin, an "
"extraordinarily great piece of media hosting software."
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:29
+#: 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:31
+#: mediagoblin/templates/mediagoblin/root.html:38
msgid "Don't have one yet? It's easy!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:32
+#: mediagoblin/templates/mediagoblin/root.html:39
#, python-format
msgid ""
"Create an account at this site\n"
@@ -422,17 +484,10 @@ msgid ""
" Set up MediaGoblin on your own server"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:40
+#: mediagoblin/templates/mediagoblin/root.html:47
msgid "Most recent media"
msgstr ""
-#: 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/admin/panel.html:29
msgid ""
"Here you can track the state of media being processed on this instance."
@@ -513,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
@@ -535,47 +590,85 @@ 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: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:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
+msgid "Add attachment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr "キャンセル"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
+#: mediagoblin/templates/mediagoblin/edit/edit.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
+#: 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
msgid "Editing %(media_title)s"
msgstr "%(media_title)sを編集中"
-#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: 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:53
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Cancel"
-msgstr "キャンセル"
-
-#: mediagoblin/templates/mediagoblin/edit/edit.html:43
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
-msgid "Save changes"
-msgstr "投稿する"
-
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
#, python-format
msgid "Changing %(username)s's account settings"
msgstr ""
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html: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さんのプロフィールを編集中"
@@ -590,13 +683,12 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:23
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
-msgstr ""
+msgstr "ダウンロード"
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:27
msgid "Original"
msgstr ""
@@ -615,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 ""
@@ -623,21 +715,71 @@ msgstr ""
msgid "WebM file (Vorbis codec)"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
-msgid ""
-"Sorry, this video will not work because \n"
-"\t your web browser does not support HTML5 \n"
-"\t video."
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:87
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:93
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:99
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:105
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:65
+#, python-format
+msgid "Image for %(media_title)s"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:43
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:112
+msgid "Toggle Rotate"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:113
+msgid "Perspective"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:116
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
+msgid "Front"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:121
+msgid "Top"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:124
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:125
+msgid "Side"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:130
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
+msgid "WebGL"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:138
+msgid "Download model"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
+msgid "File Format"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
+msgid "Object Height"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:47
msgid ""
"You can get a modern web browser that \n"
-"\t can play this video at \n"
-"\t http://getfirefox.com!"
+" can play this video at \n"
+" http://getfirefox.com!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:69
msgid "WebM file (640p; VP8/Vorbis)"
msgstr ""
@@ -645,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:83
-msgid "Add"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
msgid "Add your media"
@@ -667,22 +803,14 @@ msgid "%(collection_title)s by %(username)s"
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 ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:59
-#, python-format
-msgid ""
-"
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:60
+msgid ""
+"There doesn't seem to be a page at this address. Sorry!
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:23
+msgid "Comment"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use Markdown 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 ""
@@ -960,74 +1104,69 @@ msgstr ""
msgid "commented on your post"
msgstr ""
-#: mediagoblin/user_pages/views.py:161
+#: mediagoblin/user_pages/views.py:166
msgid "Oops, your comment was empty."
msgstr ""
-#: mediagoblin/user_pages/views.py:167
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
msgstr ""
-#: mediagoblin/user_pages/views.py:235
+#: 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:243
+#: mediagoblin/user_pages/views.py:248
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:258
+#: mediagoblin/user_pages/views.py:264
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:266
-msgid "Please check your entries and try again."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:297
-msgid ""
-"Some of the files with this entry seem to be missing. Deleting anyway."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:302
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
msgstr ""
-#: mediagoblin/user_pages/views.py:309
+#: 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:317
+#: 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:379
+#: mediagoblin/user_pages/views.py:375
msgid "You deleted the item from the collection."
msgstr ""
-#: mediagoblin/user_pages/views.py:383
+#: 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:393
+#: 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:426
+#: mediagoblin/user_pages/views.py:422
#, python-format
msgid "You deleted the collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:433
+#: 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:443
+#: 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
new file mode 100644
index 00000000..69bf72bc
Binary files /dev/null and b/mediagoblin/i18n/ko_KR/LC_MESSAGES/mediagoblin.mo differ
diff --git a/mediagoblin/i18n/ko_KR/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/ko_KR/LC_MESSAGES/mediagoblin.po
new file mode 100644
index 00000000..ac87c90f
--- /dev/null
+++ b/mediagoblin/i18n/ko_KR/LC_MESSAGES/mediagoblin.po
@@ -0,0 +1,1171 @@
+# Translations template for PROJECT.
+# Copyright (C) 2013 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Translators:
+# , 2012.
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU MediaGoblin\n"
+"Report-Msgid-Bugs-To: http://issues.mediagoblin.org/\n"
+"POT-Creation-Date: 2013-03-04 18:04-0600\n"
+"PO-Revision-Date: 2013-03-05 00:04+0000\n"
+"Last-Translator: cwebber \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 0.9.6\n"
+"Language: ko_KR\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: 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:56 mediagoblin/auth/forms.py:71
+msgid "Password"
+msgstr "비밀번호"
+
+#: mediagoblin/auth/forms.py:60
+msgid "Email address"
+msgstr "email 주소"
+
+#: mediagoblin/auth/forms.py:78
+msgid "Username or email"
+msgstr "사용자 이름 또는 email"
+
+#: mediagoblin/auth/views.py:54
+msgid "Sorry, registration is disabled on this instance."
+msgstr "죄송합니다. 지금은 가입 하실 수 없습니다."
+
+#: mediagoblin/auth/views.py:68
+msgid "Sorry, a user with that name already exists."
+msgstr "죄송합니다. 해당 사용자 이름이 이미 존재 합니다."
+
+#: mediagoblin/auth/views.py:72
+msgid "Sorry, a user with that email address already exists."
+msgstr "죄송합니다. 사용자와 해당 이메일은 이미 등록되어 있습니다."
+
+#: 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:180
+msgid "The verification key or user id is incorrect"
+msgstr "인증 키 또는 사용자 ID가 올바르지 않습니다."
+
+#: 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:206
+msgid "You've already verified your email address!"
+msgstr "이미 인증받은 email 주소를 가지고 있습니다!"
+
+#: mediagoblin/auth/views.py:219
+msgid "Resent your verification email."
+msgstr "인증 메일을 다시 보내 주세요."
+
+#: 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: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:328
+msgid "You can now log in using your new password."
+msgstr "이제 새로운 비밀번호로 로그인 하실 수 있습니다."
+
+#: 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:45
+msgid "Title"
+msgstr "제목"
+
+#: mediagoblin/edit/forms.py:28 mediagoblin/submit/forms.py:31
+msgid "Description of this work"
+msgstr "이 작업에 대한 설명"
+
+#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:52
+#: 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"
+" \n"
+" Markdown for formatting."
+msgstr "포멧팅을 사용하려면\n \n Markdown 링크를 참고 하세요."
+
+#: mediagoblin/edit/forms.py:33 mediagoblin/submit/forms.py:36
+msgid "Tags"
+msgstr "태그"
+
+#: mediagoblin/edit/forms.py:35 mediagoblin/submit/forms.py:38
+msgid "Separate tags by commas."
+msgstr "태그는 , 로 구분 됩니다."
+
+#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:101
+msgid "Slug"
+msgstr "'슬러그'"
+
+#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:102
+msgid "The slug can't be empty"
+msgstr "'슬러그'는 공백일 수 없습니다."
+
+#: mediagoblin/edit/forms.py:40
+msgid ""
+"The title part of this media's address. You usually don't need to change "
+"this."
+msgstr "제목은 미디어 주소의 일부분 입니다. 수정하지 않아도 됩니다."
+
+#: mediagoblin/edit/forms.py:44 mediagoblin/submit/forms.py:41
+#: mediagoblin/templates/mediagoblin/utils/license.html:20
+msgid "License"
+msgstr "License"
+
+#: mediagoblin/edit/forms.py:50
+msgid "Bio"
+msgstr "소개"
+
+#: mediagoblin/edit/forms.py:56
+msgid "Website"
+msgstr "웹 주소"
+
+#: mediagoblin/edit/forms.py:58
+msgid "This address contains errors"
+msgstr "주소에 에러가 있습니다."
+
+#: mediagoblin/edit/forms.py:63
+msgid "Old password"
+msgstr "예전 비밀번호"
+
+#: mediagoblin/edit/forms.py:64
+msgid "Enter your old password to prove you own this account."
+msgstr "계정 확인을 위해, 이전 비밀 번호를 입력해 주세요."
+
+#: mediagoblin/edit/forms.py:67
+msgid "New password"
+msgstr "새로운 비밀번호"
+
+#: 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:94
+msgid "The title can't be empty"
+msgstr "제목은 공백일 수 없습니다."
+
+#: 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:103
+msgid ""
+"The title part of this collection's address. You usually don't need to "
+"change this."
+msgstr ""
+
+#: mediagoblin/edit/views.py:66
+msgid "An entry with that slug already exists for this user."
+msgstr "해당 유저에 대한 '슬러그'가 이미 존재합니다."
+
+#: mediagoblin/edit/views.py:85
+msgid "You are editing another user's media. Proceed with caution."
+msgstr "다른 사용자의 미디어를 수정하고 있습니다. 조심해서 수정하세요."
+
+#: mediagoblin/edit/views.py:155
+#, python-format
+msgid "You added the attachment %s!"
+msgstr ""
+
+#: 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:204
+msgid "Profile changes saved"
+msgstr "계정 정보가 저장 되었습니다."
+
+#: mediagoblin/edit/views.py:241
+msgid "Wrong password"
+msgstr "잘못된 비밀번호"
+
+#: mediagoblin/edit/views.py:252
+msgid "Account settings saved"
+msgstr "계정 설정이 저장 되었습니다."
+
+#: mediagoblin/edit/views.py:286
+msgid "You need to confirm the deletion of your account."
+msgstr ""
+
+#: 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:326
+msgid "A collection with that slug already exists for this user."
+msgstr ""
+
+#: mediagoblin/edit/views.py:343
+msgid "You are editing another user's collection. Proceed with caution."
+msgstr "다른 유저의 모음집을 수정 중 입니다. 주의하세요."
+
+#: mediagoblin/gmg_commands/theme.py:58
+msgid "Cannot link theme... no theme set\n"
+msgstr "테마에 연결할 수 없습니다... 테마 셋이 없습니다.\n"
+
+#: mediagoblin/gmg_commands/theme.py:71
+msgid "No asset directory for this theme\n"
+msgstr "이 테마를 위한 에셋 디렉토리가 없습니다.\n"
+
+#: mediagoblin/gmg_commands/theme.py:74
+msgid "However, old link directory symlink found; removed.\n"
+msgstr "그런데, 오래된 디렉토리 심볼릭 링크를 찾았습니다; 지워졌습니다.\n"
+
+#: mediagoblin/meddleware/csrf.py:134
+msgid ""
+"CSRF cookie not present. This is most likely the result of a cookie blocker "
+"or somesuch. Make sure to permit the 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:36
+msgid "Video transcoding failed"
+msgstr "비디오 변환에 실패 했습니다."
+
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
+msgid "Location"
+msgstr "장소"
+
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:52
+#, python-format
+msgid "View on OpenStreetMap"
+msgstr " OpenStreetMap으로 보기"
+
+#: mediagoblin/plugins/oauth/forms.py:29
+msgid "Allow"
+msgstr "허용"
+
+#: mediagoblin/plugins/oauth/forms.py:30
+msgid "Deny"
+msgstr "거부"
+
+#: mediagoblin/plugins/oauth/forms.py:34
+msgid "Name"
+msgstr "이름"
+
+#: mediagoblin/plugins/oauth/forms.py:35
+msgid "The name of the OAuth client"
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:36
+msgid "Description"
+msgstr "설명"
+
+#: mediagoblin/plugins/oauth/forms.py:38
+msgid ""
+"This will be visible to users allowing your\n"
+" application to authenticate as them."
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:40
+msgid "Type"
+msgstr "종류"
+
+#: mediagoblin/plugins/oauth/forms.py:45
+msgid ""
+"Confidential - 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). \n"
+" Public - The client can't make confidential\n"
+" requests to the GNU MediaGoblin instance (e.g. client-side\n"
+" JavaScript client)."
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:52
+msgid "Redirect URI"
+msgstr "리다이렉트 URI"
+
+#: mediagoblin/plugins/oauth/forms.py:54
+msgid ""
+"The redirect URI for the applications, this field\n"
+" is required for public clients."
+msgstr ""
+
+#: mediagoblin/plugins/oauth/forms.py:66
+msgid "This field is required for public clients"
+msgstr "이 항목은 공개 사용자들을 위해 꼭 필요 합니다."
+
+#: 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/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 "알수없는 미디어 파일 입니다."
+
+#: mediagoblin/submit/forms.py:26
+msgid "File"
+msgstr "파일"
+
+#: mediagoblin/submit/views.py:51
+msgid "You must provide a file."
+msgstr "파일을 등록하셔야 합니다."
+
+#: mediagoblin/submit/views.py:97
+msgid "Woohoo! Submitted!"
+msgstr "이햐!! 등록했습니다!"
+
+#: mediagoblin/submit/views.py:146
+#, python-format
+msgid "Collection \"%s\" added!"
+msgstr "\"%s\" 모음집이 추가되었습니다!"
+
+#: 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:79
+#, python-format
+msgid "%(user_name)s's account"
+msgstr ""
+
+#: 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 MediaGoblin, a GNU project."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:125
+#, python-format
+msgid ""
+"Released under the AGPL. Source code available."
+msgstr "Released under the AGPL. Source code available."
+
+#: mediagoblin/templates/mediagoblin/error.html:24
+msgid "Image of goblin stressing out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/root.html:31
+msgid "Explore"
+msgstr "탐색"
+
+#: mediagoblin/templates/mediagoblin/root.html:33
+msgid "Hi there, welcome to this MediaGoblin site!"
+msgstr "안녕하세요! 미디어 고블린 사이트에 온걸 환영 합니다!"
+
+#: mediagoblin/templates/mediagoblin/root.html:35
+msgid ""
+"This site is running MediaGoblin, an "
+"extraordinarily great piece of media hosting software."
+msgstr "이사이트는 MediaGoblin으로 작동 중입니다. 이는 특이한 미디어 호스팅 소프트웨어중 하나 입니다."
+
+#: 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:38
+msgid "Don't have one yet? It's easy!"
+msgstr "아직 아무것도 없으시다구요? 매우 쉽습니다!"
+
+#: mediagoblin/templates/mediagoblin/root.html:39
+#, python-format
+msgid ""
+"Create an account at this site\n"
+" or\n"
+" Set up MediaGoblin on your own server"
+msgstr "사용자 계정 만들기\n 또는\n 서버를 위한 MediaGoblin 설정하기"
+
+#: mediagoblin/templates/mediagoblin/root.html:47
+msgid "Most recent media"
+msgstr "가장 최근에 등록된 미디어"
+
+#: mediagoblin/templates/mediagoblin/admin/panel.html:29
+msgid ""
+"Here you can track the state of media being processed on this instance."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/admin/panel.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:32
+msgid "Media in-processing"
+msgstr "미디어 작업중..."
+
+#: mediagoblin/templates/mediagoblin/admin/panel.html:58
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
+msgid "No media in-processing"
+msgstr "작업중인 미디어가 없습니다."
+
+#: mediagoblin/templates/mediagoblin/admin/panel.html:61
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:59
+msgid "These uploads failed to process:"
+msgstr "다음 작업을 하는 중에 업로드에 실패하였습니다.:"
+
+#: mediagoblin/templates/mediagoblin/admin/panel.html:90
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
+msgid "No failed entries!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/admin/panel.html:92
+msgid "Last 10 successful uploads"
+msgstr "지난 10개의 업로드 목록"
+
+#: mediagoblin/templates/mediagoblin/admin/panel.html:112
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
+msgid "No processed entries, yet!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/auth/change_fp.html:28
+#: mediagoblin/templates/mediagoblin/auth/change_fp.html:36
+msgid "Set your new password"
+msgstr "새로운 비밀번호를 설정 하세요."
+
+#: mediagoblin/templates/mediagoblin/auth/change_fp.html:39
+msgid "Set password"
+msgstr "비밀번호 설정"
+
+#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:23
+#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:31
+msgid "Recover password"
+msgstr "비밀번호 복구"
+
+#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:34
+msgid "Send instructions"
+msgstr "설명서 보내기"
+
+#: mediagoblin/templates/mediagoblin/auth/fp_verification_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"\n"
+"to change your GNU MediaGoblin password, open the following URL in \n"
+"your web browser:\n"
+"\n"
+"%(verification_url)s\n"
+"\n"
+"If you think this is an error, just ignore this email and continue being\n"
+"a happy goblin!"
+msgstr "안녕하세요 %(username)s,\n\nGNU MediaGoblin의 사용자 계정 비밀번호를 바꾸시려면, 인터넷 창을 여시고 아래 URL을 통해 접속 하세요. :\n\n%(verification_url)s\n\n오류라고 생각 된다면, 이 메일을 무시하시고 고블린을 즐기세요!"
+
+#: mediagoblin/templates/mediagoblin/auth/login.html:39
+msgid "Logging in failed!"
+msgstr "로그인에 실패 했습니다!"
+
+#: mediagoblin/templates/mediagoblin/auth/login.html:44
+msgid "Don't have an account yet?"
+msgstr "아직 계정이 없으세요?"
+
+#: mediagoblin/templates/mediagoblin/auth/login.html:45
+msgid "Create one here!"
+msgstr "이곳에서 새로 만드세요!"
+
+#: mediagoblin/templates/mediagoblin/auth/login.html:51
+msgid "Forgot your password?"
+msgstr "비밀번호를 잊으셨나요?"
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:28
+#: mediagoblin/templates/mediagoblin/auth/register.html:36
+msgid "Create an account!"
+msgstr "계정을 새로 만듭니다!"
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:40
+msgid "Create"
+msgstr "생성"
+
+#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"\n"
+"to activate your GNU MediaGoblin account, open the following URL in\n"
+"your web browser:\n"
+"\n"
+"%(verification_url)s"
+msgstr "안녕하세요 %(username)s님,\n\nGNU MediaGoblin 계정을 활성화 하시려면, 아래의 URL 주소를 브라우져로 접속하세요.\n\n%(verification_url)s"
+
+#: mediagoblin/templates/mediagoblin/bits/logo.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/bits/logo.html:23
+msgid "MediaGoblin logo"
+msgstr "MediaGoblin 로고"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:23
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:35
+#, python-format
+msgid "Editing attachments for %(media_title)s"
+msgstr "%(media_title)s의 첨부 수정 중..."
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:159
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:175
+msgid "Attachments"
+msgstr "첨부"
+
+#: 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:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr "취소"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
+#: mediagoblin/templates/mediagoblin/edit/edit.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
+#: 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
+msgid "Editing %(media_title)s"
+msgstr "%(media_title)s 편집중..."
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
+#, python-format
+msgid "Changing %(username)s's account settings"
+msgstr "%(username)s'의 계정 설정 변경중..."
+
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html: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:34
+#, python-format
+msgid "Editing %(username)s's profile"
+msgstr "%(username)s의 계정 정보 수정중..."
+
+#: mediagoblin/templates/mediagoblin/listings/collection.html:30
+#: mediagoblin/templates/mediagoblin/listings/collection.html:35
+#: mediagoblin/templates/mediagoblin/listings/tag.html:30
+#: mediagoblin/templates/mediagoblin/listings/tag.html:35
+#, python-format
+msgid "Media tagged with: %(tag_name)s"
+msgstr "미디어는 다음으로 태그 되었습니다.: %(tag_name)s"
+
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
+msgid "Download"
+msgstr "다운로드"
+
+#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
+msgid "Original"
+msgstr "원본"
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:44
+msgid ""
+"Sorry, this audio will not work because \n"
+"\tyour web browser does not support HTML5 \n"
+"\taudio."
+msgstr "사용중이신 웹 브라우져가 HTML5를 지원하지 않아\n\t오디오 파일을 재생할 수 없습니다.\n\t죄송합니다."
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:47
+msgid ""
+"You can get a modern web browser that \n"
+"\tcan play the audio at \n"
+"\t http://getfirefox.com!"
+msgstr "사운드 파일을 재생 하시려면\n\t이곳에서 최신의 브라우져를 다운받으세요! \n\t http://getfirefox.com!"
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:60
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:61
+msgid "Original file"
+msgstr "원본 파일"
+
+#: mediagoblin/templates/mediagoblin/media_displays/audio.html:63
+msgid "WebM file (Vorbis codec)"
+msgstr "WebM 파일 (Vorbis 코덱)"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:87
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:93
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:99
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:105
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:65
+#, python-format
+msgid "Image for %(media_title)s"
+msgstr "%(media_title)s 이미지"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:112
+msgid "Toggle Rotate"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:113
+msgid "Perspective"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:116
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
+msgid "Front"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:121
+msgid "Top"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:124
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:125
+msgid "Side"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:130
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
+msgid "WebGL"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:138
+msgid "Download model"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
+msgid "File Format"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
+msgid "Object Height"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:47
+msgid ""
+"You can get a modern web browser that \n"
+" can play this video at \n"
+" http://getfirefox.com!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:69
+msgid "WebM file (640p; VP8/Vorbis)"
+msgstr "WebM 파일 (640p; VP8/Vorbis)"
+
+#: mediagoblin/templates/mediagoblin/submit/collection.html:26
+msgid "Add a collection"
+msgstr "모음집 추가"
+
+#: mediagoblin/templates/mediagoblin/submit/start.html:23
+#: mediagoblin/templates/mediagoblin/submit/start.html:30
+msgid "Add your media"
+msgstr "미디어 등록하기"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:30
+#, python-format
+msgid "%(collection_title)s (%(username)s's collection)"
+msgstr "%(collection_title)s (%(username)s의 모음집)"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:39
+#, python-format
+msgid "%(collection_title)s by %(username)s"
+msgstr "%(username)s의 %(collection_title)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
+msgid "Edit"
+msgstr "수정"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection.html:56
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
+msgid "Delete"
+msgstr "삭제"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:30
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
+#, python-format
+msgid "Really delete %(title)s?"
+msgstr "%(title)s 을 지우시겠습니까?"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:31
+#, python-format
+msgid "Really remove %(media_title)s from %(collection_title)s?"
+msgstr "%(collection_title)s의 %(media_title)s을 삭제 하시겠습니까?"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:53
+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 "%(username)s's collections"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/comment_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"%(comment_author)s commented on your post (%(comment_url)s) at %(instance_name)s\n"
+msgstr "안녕하세요 %(username)s님,\n%(comment_author)s 가 (%(comment_url)s) 게시물에 %(instance_name)s 덧글을 등록 하였습니다.\n"
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
+#, python-format
+msgid "%(username)s's media"
+msgstr "%(username)s의 미디어"
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:38
+#, python-format
+msgid ""
+"%(username)s's media with tag %(tag)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
+#, python-format
+msgid "%(username)s's media"
+msgstr "%(username)s의 미디어"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
+#, python-format
+msgid "❖ Browsing media by %(username)s"
+msgstr "❖ %(username)s의 미디어를 보고 있습니다."
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:94
+msgid "Add a comment"
+msgstr "덧글 달기"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:102
+msgid "Add this comment"
+msgstr "덧글 추가"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:123
+msgid "at"
+msgstr "에"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:144
+#, python-format
+msgid ""
+"
Added on
\n"
+"
%(date)s
"
+msgstr "
부가 기능
\n
%(date)s
"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:28
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:40
+#, python-format
+msgid "Add “%(media_title)s” to a collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
+msgid "+"
+msgstr "+"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
+msgid "Add a new collection"
+msgstr "새 모음집 추가"
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
+msgid ""
+"You can track the state of media being processed for your gallery here."
+msgstr "갤러리에서 미디어 작업을 하면 해당 내용을 추적할 수 있습니다."
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:89
+msgid "Your last 10 successful uploads"
+msgstr "지난 10개의 업로드 목록"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:31
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:89
+#, python-format
+msgid "%(username)s's profile"
+msgstr "%(username)s의 계정 정보"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:43
+msgid "Sorry, no such user found."
+msgstr "죄송합니다. 해당 유저를 찾지 못했습니다."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:50
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:70
+msgid "Email verification needed"
+msgstr "email 인증이 필요합니다."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
+msgid "Almost done! Your account still needs to be activated."
+msgstr "이미 완료했습니다! 사용자 계정은 활성화 되어 있습니다."
+
+#: 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 "곧 email 을 통해 지침서가 도착할 겁니다."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
+msgid "In case it doesn't:"
+msgstr "이런경우는 작동하지 않습니다.:"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:65
+msgid "Resend verification email"
+msgstr "인증메일 다시 보내기"
+
+#: 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 "누군가 해당 사용자 이름으로 등록은 했으나, 아직 활성화 하지 않았습니다."
+
+#: 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 log in and resend it."
+msgstr "정상적인 계정이나, 인증 메일을 잃어버리셨다면 로그인 을 하시고 인증 메일을 새로 보내주세요."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
+msgid "Here's a spot to tell others about yourself."
+msgstr "당신에 대해 소개해 보세요."
+
+#: 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:105
+msgid "This user hasn't filled in their profile (yet)."
+msgstr "이 사용자는 계정 정보를 입력하지 않았습니다."
+
+#: 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: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: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 "아직 어떠한 미디어도 존재하지 않습니다."
+
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
+msgid "(remove)"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:21
+msgid "Collected in"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:40
+msgid "Add to a collection"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:21
+msgid "feed icon"
+msgstr "피드 아이콘"
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
+#: mediagoblin/themes/airy/templates/mediagoblin/utils/feed_link.html:23
+msgid "Atom feed"
+msgstr "Atom 피드"
+
+#: mediagoblin/templates/mediagoblin/utils/license.html:25
+msgid "All rights reserved"
+msgstr "All rights reserved"
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
+msgid "← Newer"
+msgstr "← 최근"
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
+msgid "Older →"
+msgstr "이전 →"
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
+msgid "Go to page:"
+msgstr "페이지로 이동:"
+
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:28
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:33
+msgid "newer"
+msgstr "최근"
+
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:39
+#: mediagoblin/templates/mediagoblin/utils/prev_next.html:44
+msgid "older"
+msgstr "이전"
+
+#: mediagoblin/templates/mediagoblin/utils/tags.html:20
+msgid "Tagged with"
+msgstr "태그 정보"
+
+#: mediagoblin/tools/exif.py:80
+msgid "Could not read the image file."
+msgstr "이미지 파일을 읽을 수 없습니다."
+
+#: mediagoblin/tools/response.py:35
+msgid "Oops!"
+msgstr "웁스!"
+
+#: mediagoblin/tools/response.py:36
+msgid "An error occured"
+msgstr ""
+
+#: mediagoblin/tools/response.py:51
+msgid "Operation not allowed"
+msgstr ""
+
+#: mediagoblin/tools/response.py:52
+msgid ""
+"Sorry Dave, I can't let you do that!
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:60
+msgid ""
+"There doesn't seem to be a page at this address. Sorry!
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:23
+msgid "Comment"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use Markdown for"
+" formatting."
+msgstr "포멧팅을 위해 Markdown 을 사용할 수 있습니다.."
+
+#: mediagoblin/user_pages/forms.py:31
+msgid "I am sure I want to delete this"
+msgstr "이걸 지우고 싶습니다."
+
+#: mediagoblin/user_pages/forms.py:35
+msgid "I am sure I want to remove this item from the collection"
+msgstr "이 모음집의 항목을 삭제하는 것을 확인 했습니다."
+
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:40
+msgid "-- Select --"
+msgstr "-- 선택 --"
+
+#: mediagoblin/user_pages/forms.py:42
+msgid "Include a note"
+msgstr "노트 추가"
+
+#: mediagoblin/user_pages/lib.py:56
+msgid "commented on your post"
+msgstr "게시물에 덧글이 달렸습니다."
+
+#: mediagoblin/user_pages/views.py:166
+msgid "Oops, your comment was empty."
+msgstr "오우, 댓글이 비었습니다."
+
+#: mediagoblin/user_pages/views.py:172
+msgid "Your comment has been posted!"
+msgstr "댓글이 등록 되었습니다!"
+
+#: 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:248
+#, python-format
+msgid "\"%s\" already in collection \"%s\""
+msgstr "\"%s\" 모음집이 이미 존재 합니다. \"%s\""
+
+#: mediagoblin/user_pages/views.py:264
+#, python-format
+msgid "\"%s\" added to collection \"%s\""
+msgstr "\"%s\" 모음집을 추가했습니다. \"%s\""
+
+#: mediagoblin/user_pages/views.py:286
+msgid "You deleted the media."
+msgstr "미디어를 삭제 했습니다."
+
+#: 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:301
+msgid "You are about to delete another user's media. Proceed with caution."
+msgstr "다른 사람의 미디어를 삭제하려고 합니다. 다시 한번 확인하세요."
+
+#: mediagoblin/user_pages/views.py:375
+msgid "You deleted the item from the collection."
+msgstr "모음집에 있는 항목을 삭제 했습니다."
+
+#: 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:389
+msgid ""
+"You are about to delete an item from another user's collection. Proceed with"
+" caution."
+msgstr "다른 사용자의 모음집에 있는 항목을 삭제하였습니다. 주의하세요."
+
+#: mediagoblin/user_pages/views.py:422
+#, python-format
+msgid "You deleted the collection \"%s\""
+msgstr "\"%s\" 모음집을 삭제하셨습니다."
+
+#: 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: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 c141e456..fe96d40e 100644
Binary files a/mediagoblin/i18n/nl/LC_MESSAGES/mediagoblin.mo and b/mediagoblin/i18n/nl/LC_MESSAGES/mediagoblin.mo differ
diff --git a/mediagoblin/i18n/nl/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/nl/LC_MESSAGES/mediagoblin.po
index 3b0cf98e..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-09-24 14:01-0500\n"
-"PO-Revision-Date: 2012-09-24 18:57+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 \n"
"Language-Team: LANGUAGE \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:83
+#: 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:87 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"
" \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:91
+#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:101
msgid "Slug"
msgstr "Slug"
-#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:92
+#: 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,60 +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:72
+#: 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:84
+#: mediagoblin/edit/forms.py:94
msgid "The title can't be empty"
msgstr ""
-#: mediagoblin/edit/forms.py:86 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:93
+#: 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:155
+#, python-format
+msgid "You added the attachment %s!"
+msgstr ""
+
#: 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:198
+#: mediagoblin/edit/views.py:204
msgid "Profile changes saved"
msgstr "Profielaanpassingen opgeslagen"
-#: mediagoblin/edit/views.py:227 mediagoblin/edit/views.py:247
-msgid "Account settings saved"
-msgstr "Accountinstellingen opgeslagen"
-
-#: mediagoblin/edit/views.py:252
+#: mediagoblin/edit/views.py:241
msgid "Wrong password"
msgstr "Verkeerd wachtwoord"
-#: mediagoblin/edit/views.py:288 mediagoblin/submit/views.py:211
-#: mediagoblin/user_pages/views.py:215
+#: mediagoblin/edit/views.py:252
+msgid "Account settings saved"
+msgstr "Accountinstellingen opgeslagen"
+
+#: mediagoblin/edit/views.py:286
+msgid "You need to confirm the deletion of your account."
+msgstr ""
+
+#: 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:292
+#: mediagoblin/edit/views.py:326
msgid "A collection with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:309
+#: mediagoblin/edit/views.py:343
msgid "You are editing another user's collection. Proceed with caution."
msgstr ""
@@ -232,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:120
+#: mediagoblin/meddleware/csrf.py:134
+msgid ""
+"CSRF cookie not present. This is most likely the result of a cookie blocker "
+"or somesuch. Make sure to permit the 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 OpenStreetMap"
+msgstr "Bekijken op OpenStreetMap"
-#: 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 ""
"Confidential - The client can\n"
" make requests to the GNU MediaGoblin instance that can not be\n"
@@ -289,17 +332,17 @@ 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 required 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 ""
@@ -307,7 +350,22 @@ msgstr ""
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."
@@ -315,75 +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/404.html:24
-msgid "Image of 404 goblin stressing out"
-msgstr "Afbeelding van de 404 goblin onder stress"
-
-#: mediagoblin/templates/mediagoblin/404.html:25
-msgid "Oops!"
-msgstr "Oeps!"
-
-#: mediagoblin/templates/mediagoblin/404.html:26
-msgid "There doesn't seem to be a page at this address. Sorry!"
-msgstr "Het lijkt erop dat er geen pagina bestaat op dit adres. Sorry!"
-
-#: mediagoblin/templates/mediagoblin/404.html:28
-msgid ""
-"If you're sure the address is correct, maybe the page you're looking for has"
-" been moved or deleted."
-msgstr "Als je zeker weet dat het adres klopt is de pagina misschien verplaatst of verwijderd."
-
-#: mediagoblin/templates/mediagoblin/base.html:50
-msgid "MediaGoblin logo"
-msgstr "MediaGoblin logo"
-
-#: mediagoblin/templates/mediagoblin/base.html:60
+#: mediagoblin/templates/mediagoblin/base.html:64
msgid "Verify your email!"
msgstr "Verifieer je e-mailadres!"
-#: mediagoblin/templates/mediagoblin/base.html:66
-msgid "+ Add media"
-msgstr "+ Media toevoegen"
-
-#: mediagoblin/templates/mediagoblin/base.html:67
-msgid "+ Add collection"
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "log out"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:69
-msgid "View your profile"
-msgstr "Profiel weergeven"
-
#: mediagoblin/templates/mediagoblin/base.html:70
-msgid "Log out"
-msgstr "Afmelden"
-
-#: mediagoblin/templates/mediagoblin/base.html:75
#: 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:89
-msgid ""
-"Powered by MediaGoblin, a GNU project."
-msgstr "Hier draait MediaGoblin, een GNU project."
+#: mediagoblin/templates/mediagoblin/base.html:79
+#, python-format
+msgid "%(user_name)s's account"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:92
+#: 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:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:156
+msgid "Add media"
+msgstr "Voeg media toe"
+
+#: 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 MediaGoblin, a GNU project."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:125
#, python-format
msgid ""
"Released under the Source code available."
msgstr "Uitgegeven onder de AGPL-licentie. Broncode available."
-#: mediagoblin/templates/mediagoblin/root.html:24
+#: mediagoblin/templates/mediagoblin/error.html:24
+msgid "Image of goblin stressing out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/root.html:31
msgid "Explore"
msgstr "Verkennen"
-#: mediagoblin/templates/mediagoblin/root.html:26
+#: 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:28
+#: mediagoblin/templates/mediagoblin/root.html:35
msgid ""
"This site is running MediaGoblin, an "
"extraordinarily great piece of media hosting software."
msgstr "Deze website draait MediaGoblin, een buitengewoon goed stuk software voor mediahosting."
-#: mediagoblin/templates/mediagoblin/root.html:29
+#: 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:31
+#: 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:32
+#: mediagoblin/templates/mediagoblin/root.html:39
#, python-format
msgid ""
"Create an account at this site\n"
@@ -423,17 +484,10 @@ msgid ""
" Set up MediaGoblin on your own server"
msgstr "<a class=\"button_action_highlight\" href=\"%(register_url)s\">Creëer een account op deze website</a>\n of\n <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Gebruik MediaGoblin op je eigen server</a>"
-#: mediagoblin/templates/mediagoblin/root.html:40
+#: mediagoblin/templates/mediagoblin/root.html:47
msgid "Most recent media"
msgstr "Nieuwste media"
-#: 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/admin/panel.html:29
msgid ""
"Here you can track the state of media being processed on this instance."
@@ -536,47 +590,85 @@ 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: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:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
+msgid "Add attachment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr "Annuleren"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
+#: mediagoblin/templates/mediagoblin/edit/edit.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
+msgid "Save changes"
+msgstr "Wijzigingen opslaan"
+
+#: mediagoblin/templates/mediagoblin/edit/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
msgid "Editing %(media_title)s"
msgstr "%(media_title)s aanpassen"
-#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: 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:53
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Cancel"
-msgstr "Annuleren"
-
-#: mediagoblin/templates/mediagoblin/edit/edit.html:43
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
-msgid "Save changes"
-msgstr "Wijzigingen opslaan"
-
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
#, python-format
msgid "Changing %(username)s's account settings"
msgstr "%(username)ss accountinstellingen aanpassen"
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html: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"
@@ -591,13 +683,12 @@ 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/image.html:23
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
msgstr ""
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:27
msgid "Original"
msgstr "Origineel"
@@ -616,7 +707,7 @@ msgid ""
msgstr "U kunt een moderne web-browser die \n\taudio kan afspelen vinden op \n\t http://getfirefox.com!"
#: 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 ""
@@ -624,21 +715,71 @@ msgstr ""
msgid "WebM file (Vorbis codec)"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
-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."
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:87
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:93
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:99
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:105
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:65
+#, python-format
+msgid "Image for %(media_title)s"
+msgstr "Afbeelding voor %(media_title)s"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:43
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:112
+msgid "Toggle Rotate"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:113
+msgid "Perspective"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:116
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
+msgid "Front"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:121
+msgid "Top"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:124
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:125
+msgid "Side"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:130
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
+msgid "WebGL"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:138
+msgid "Download model"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
+msgid "File Format"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
+msgid "Object Height"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:47
msgid ""
"You can get a modern web browser that \n"
-"\t can play this video at \n"
-"\t http://getfirefox.com!"
-msgstr "Je kunt een moderne webbrowser die deze video af kan spelen krijgen op http://getfirefox.com!"
+" can play this video at \n"
+" http://getfirefox.com!"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:69
msgid "WebM file (640p; VP8/Vorbis)"
msgstr ""
@@ -646,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:83
-msgid "Add"
-msgstr "Voeg toe"
-
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
msgid "Add your media"
@@ -668,43 +803,40 @@ msgid "%(collection_title)s by %(username)s"
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"
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:59
-#, python-format
-msgid ""
-"
\n"
-" %(collection_description)s\n"
-"
"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:30
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
#, python-format
msgid "Really delete %(title)s?"
msgstr "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:50
-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?"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:54
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:53
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 "%(username)s's collections"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/user_pages/comment_email.txt:19
#, python-format
msgid ""
@@ -717,67 +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 ""
+"%(username)s's media with tag %(tag)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
#, python-format
msgid "%(username)s's media"
msgstr "Media van %(username)s "
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
#, python-format
msgid "❖ Browsing media by %(username)s"
msgstr "❖ Blader door media van %(username)s"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:67
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
-#, python-format
-msgid "Image for %(media_title)s"
-msgstr "Afbeelding voor %(media_title)s"
-
-#: 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 Markdown for"
-" formatting."
-msgstr "Voor opmaak kun je <a href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> 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 ""
"
Added on
\n"
"
%(date)s
"
msgstr "
Toegevoegd op
\n
%(date)s
"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
-msgid "Attachments"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
-msgid "Add attachment"
-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:52
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
msgstr ""
@@ -839,74 +957,58 @@ 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:125
-msgid "Change account settings"
-msgstr "Accountinstellingen aanpassen"
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:124
+msgid "Browse collections"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:138
+#: 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:151
+#: 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
-msgid "Add media"
-msgstr "Voeg media toe"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:163
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:87
-#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:72
+#: 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 "Het lijkt erop dat er nog geen media is."
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:39
-#, python-format
-msgid ""
-" \n"
-" %(note)s"
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
+msgid "(remove)"
msgstr ""
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:47
-#, python-format
-msgid " (remove)"
+#: 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 "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:38
-#, python-format
-msgid "View on OpenStreetMap"
-msgstr "Bekijken op OpenStreetMap"
-
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
msgstr "Alle rechten voorbehouden"
@@ -937,23 +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/user_pages/forms.py:28
+#: mediagoblin/tools/response.py:35
+msgid "Oops!"
+msgstr "Oeps!"
+
+#: mediagoblin/tools/response.py:36
+msgid "An error occured"
+msgstr ""
+
+#: mediagoblin/tools/response.py:51
+msgid "Operation not allowed"
+msgstr ""
+
+#: mediagoblin/tools/response.py:52
+msgid ""
+"Sorry Dave, I can't let you do that!
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:60
+msgid ""
+"There doesn't seem to be a page at this address. Sorry!
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:23
+msgid "Comment"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use Markdown for"
+" formatting."
+msgstr "Voor opmaak kun je <a href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> 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 ""
@@ -961,74 +1104,69 @@ msgstr ""
msgid "commented on your post"
msgstr ""
-#: mediagoblin/user_pages/views.py:161
+#: mediagoblin/user_pages/views.py:166
msgid "Oops, your comment was empty."
msgstr "Oeps, je bericht was leeg."
-#: mediagoblin/user_pages/views.py:167
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
msgstr "Je bericht is geplaatst!"
-#: mediagoblin/user_pages/views.py:235
+#: 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:243
+#: mediagoblin/user_pages/views.py:248
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:258
+#: mediagoblin/user_pages/views.py:264
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:266
-msgid "Please check your entries and try again."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:297
-msgid ""
-"Some of the files with this entry seem to be missing. Deleting anyway."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:302
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
msgstr "Je hebt deze media verwijderd."
-#: mediagoblin/user_pages/views.py:309
+#: 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:317
+#: 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:379
+#: mediagoblin/user_pages/views.py:375
msgid "You deleted the item from the collection."
msgstr ""
-#: mediagoblin/user_pages/views.py:383
+#: 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:393
+#: 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:426
+#: mediagoblin/user_pages/views.py:422
#, python-format
msgid "You deleted the collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:433
+#: 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:443
+#: 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 986475ba..f58e6a45 100644
Binary files a/mediagoblin/i18n/nn_NO/LC_MESSAGES/mediagoblin.mo and b/mediagoblin/i18n/nn_NO/LC_MESSAGES/mediagoblin.mo differ
diff --git a/mediagoblin/i18n/nn_NO/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/nn_NO/LC_MESSAGES/mediagoblin.po
index 4156c07b..12d34b55 100644
--- a/mediagoblin/i18n/nn_NO/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/nn_NO/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:
-# , 2011, 2012.
+# , 2013.
+# , 2011-2012.
msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://issues.mediagoblin.org/\n"
-"POT-Creation-Date: 2012-09-24 14:01-0500\n"
-"PO-Revision-Date: 2012-09-24 18:57+0000\n"
-"Last-Translator: cwebber \n"
+"POT-Creation-Date: 2013-03-04 18:04-0600\n"
+"PO-Revision-Date: 2013-03-10 13:31+0000\n"
+"Last-Translator: velmont \n"
"Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/mediagoblin/language/nn_NO/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -19,92 +20,106 @@ 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:83
+#: 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"
#: mediagoblin/edit/forms.py:28 mediagoblin/submit/forms.py:31
msgid "Description of this work"
-msgstr "Skildring av mediefila"
+msgstr "Skildring av verk"
#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:52
-#: mediagoblin/edit/forms.py:87 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"
" \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:91
+#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:101
msgid "Slug"
msgstr "Nettnamn"
-#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:92
+#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:102
msgid "The slug can't be empty"
msgstr "Nettnamnet kan ikkje vera tomt"
@@ -131,7 +146,7 @@ msgstr "Nettnamnet kan ikkje vera tomt"
msgid ""
"The title part of this media's address. You usually don't need to change "
"this."
-msgstr "Nettnamnet (adressetittel) for mediefila di. Trengst ikkje endrast."
+msgstr "Nettnamnet (adressetittel) for verket di. Trengst ikkje endrast."
#: mediagoblin/edit/forms.py:44 mediagoblin/submit/forms.py:41
#: mediagoblin/templates/mediagoblin/utils/license.html:20
@@ -162,123 +177,152 @@ msgstr "Skriv inn det gamle passordet ditt for å stadfesta at du eig denne kont
msgid "New password"
msgstr "Nytt passord"
-#: mediagoblin/edit/forms.py:72
+#: 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 ""
+msgstr "Send meg epost når andre kjem med innspel på verka mine."
-#: mediagoblin/edit/forms.py:84
+#: mediagoblin/edit/forms.py:94
msgid "The title can't be empty"
-msgstr ""
+msgstr "Tittelen kjan ikkje vera tom"
-#: mediagoblin/edit/forms.py:86 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 "Forklaringa til denne samlinga"
-#: mediagoblin/edit/forms.py:93
+#: mediagoblin/edit/forms.py:103
msgid ""
"The title part of this collection's address. You usually don't need to "
"change this."
-msgstr ""
+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 mediefiler."
+msgstr "Trå varsamt, du endrar nokon andre sine verk."
+
+#: mediagoblin/edit/views.py:155
+#, python-format
+msgid "You added the attachment %s!"
+msgstr "La til vedlegg %s."
#: 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:198
+#: mediagoblin/edit/views.py:204
msgid "Profile changes saved"
msgstr "Lagra endring av profilen"
-#: mediagoblin/edit/views.py:227 mediagoblin/edit/views.py:247
-msgid "Account settings saved"
-msgstr "Lagra kontoinstellingar"
-
-#: mediagoblin/edit/views.py:252
+#: mediagoblin/edit/views.py:241
msgid "Wrong password"
msgstr "Feil passord"
-#: mediagoblin/edit/views.py:288 mediagoblin/submit/views.py:211
-#: mediagoblin/user_pages/views.py:215
+#: mediagoblin/edit/views.py:252
+msgid "Account settings saved"
+msgstr "Lagra kontoinstellingar"
+
+#: 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:322 mediagoblin/submit/views.py:142
+#: mediagoblin/user_pages/views.py:214
#, python-format
msgid "You already have a collection called \"%s\"!"
-msgstr ""
+msgstr "Du har allereie ei samling med namn «%s»."
-#: mediagoblin/edit/views.py:292
+#: mediagoblin/edit/views.py:326
msgid "A collection with that slug already exists for this user."
-msgstr ""
+msgstr "Ei samling med den nettadressa finst allereie for denne brukaren."
-#: mediagoblin/edit/views.py:309
+#: mediagoblin/edit/views.py:343
msgid "You are editing another user's collection. Proceed with caution."
-msgstr ""
+msgstr "Du endrar ein annan brukar si samling. Trå varsamt."
#: mediagoblin/gmg_commands/theme.py:58
msgid "Cannot link theme... no theme set\n"
-msgstr ""
+msgstr "Cannot link theme... no theme set\n"
#: mediagoblin/gmg_commands/theme.py:71
msgid "No asset directory for this theme\n"
-msgstr ""
+msgstr "No asset directory for this theme\n"
#: mediagoblin/gmg_commands/theme.py:74
msgid "However, old link directory symlink found; removed.\n"
-msgstr ""
+msgstr "However, old link directory symlink found; removed.\n"
-#: mediagoblin/media_types/__init__.py:60
-#: mediagoblin/media_types/__init__.py:120
+#: mediagoblin/meddleware/csrf.py:134
+msgid ""
+"CSRF cookie not present. This is most likely the result of a cookie blocker "
+"or somesuch. Make sure to permit the settings of cookies for this "
+"domain."
+msgstr "Finn ikkje CSRF-cookien. Dette er truleg grunna ein cookie-blokkar. \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 ""
+msgstr "Skjedde noko gale med video transkodinga"
-#: mediagoblin/plugins/oauth/forms.py:26
-msgid "Client ID"
-msgstr ""
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
+msgid "Location"
+msgstr "Stad"
-#: 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 OpenStreetMap"
+msgstr "Sjå på OpenStreetMap"
+
+#: mediagoblin/plugins/oauth/forms.py:29
+msgid "Allow"
+msgstr "Godta"
#: mediagoblin/plugins/oauth/forms.py:30
-msgid "Allow"
-msgstr ""
-
-#: mediagoblin/plugins/oauth/forms.py:31
msgid "Deny"
-msgstr ""
+msgstr "Nekt"
+
+#: mediagoblin/plugins/oauth/forms.py:34
+msgid "Name"
+msgstr "Namn"
#: mediagoblin/plugins/oauth/forms.py:35
-msgid "Name"
-msgstr ""
+msgid "The name of the OAuth client"
+msgstr "Namnet til OAuth-klienten"
#: mediagoblin/plugins/oauth/forms.py:36
-msgid "The name of the OAuth client"
-msgstr ""
-
-#: mediagoblin/plugins/oauth/forms.py:37
msgid "Description"
-msgstr ""
+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 ""
+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 ""
+msgstr "Type"
-#: mediagoblin/plugins/oauth/forms.py:46
+#: mediagoblin/plugins/oauth/forms.py:45
msgid ""
"Confidential - The client can\n"
" make requests to the GNU MediaGoblin instance that can not be\n"
@@ -286,103 +330,117 @@ msgid ""
" Public - The client can't make confidential\n"
" requests to the GNU MediaGoblin instance (e.g. client-side\n"
" JavaScript client)."
-msgstr ""
+msgstr "Confidential - 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). \nPublic - 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 ""
+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 required for public clients."
-msgstr ""
+msgstr "Omdirigerings-URI-en for programmene. Denne feltet krevst 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 ""
+msgstr "Dette feltet krevst for opne (public) klientar"
#: mediagoblin/plugins/oauth/views.py:59
msgid "The client {0} has been registered!"
-msgstr ""
+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 mediatypen."
+msgstr "Ugyldig fil for medietypen."
#: mediagoblin/submit/forms.py:26
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 ""
+msgstr "La til samlinga «%s»."
-#: mediagoblin/templates/mediagoblin/404.html:24
-msgid "Image of 404 goblin stressing out"
-msgstr "Bilete av stressa 404-tusse."
-
-#: mediagoblin/templates/mediagoblin/404.html:25
-msgid "Oops!"
-msgstr "Oops."
-
-#: mediagoblin/templates/mediagoblin/404.html:26
-msgid "There doesn't seem to be a page at this address. Sorry!"
-msgstr "Det ser ikkje ut til å vera noko her... Orsak."
-
-#: mediagoblin/templates/mediagoblin/404.html:28
-msgid ""
-"If you're sure the address is correct, maybe the page you're looking for has"
-" been moved or deleted."
-msgstr "Er du sikker på at adressa er korrekt, so er sida truleg flytta eller sletta."
-
-#: mediagoblin/templates/mediagoblin/base.html:50
-msgid "MediaGoblin logo"
-msgstr "MediaGoblin"
-
-#: mediagoblin/templates/mediagoblin/base.html:60
+#: mediagoblin/templates/mediagoblin/base.html:64
msgid "Verify your email!"
msgstr "Verifiser epostadressa di."
-#: mediagoblin/templates/mediagoblin/base.html:66
-msgid "+ Add media"
-msgstr "+ Legg til medie"
-
-#: mediagoblin/templates/mediagoblin/base.html:67
-msgid "+ Add collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:69
-msgid "View your profile"
-msgstr "Sjå profilen din"
-
-#: mediagoblin/templates/mediagoblin/base.html:70
-msgid "Log out"
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "log out"
msgstr "Logg ut"
-#: mediagoblin/templates/mediagoblin/base.html:75
+#: 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:89
-msgid ""
-"Powered by MediaGoblin, a GNU project."
-msgstr "Drive av MediaGoblin, eit GNU-prosjekt."
+#: mediagoblin/templates/mediagoblin/base.html:79
+#, python-format
+msgid "%(user_name)s's account"
+msgstr "%(user_name)s sin konto"
-#: mediagoblin/templates/mediagoblin/base.html:92
+#: 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:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:156
+msgid "Add media"
+msgstr "Legg til verk"
+
+#: 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:122
+#, python-format
+msgid ""
+"Powered by MediaGoblin, a GNU project."
+msgstr "Drive av MediaGoblin, eit GNU-prosjekt."
+
+#: mediagoblin/templates/mediagoblin/base.html:125
#, python-format
msgid ""
"Released under the Source code available."
msgstr "Lisensiert med AGPL. Kjeldekode er tilgjengeleg."
-#: mediagoblin/templates/mediagoblin/root.html:24
+#: mediagoblin/templates/mediagoblin/error.html:24
+msgid "Image of goblin stressing out"
+msgstr "Bilete av stressa goblin"
+
+#: mediagoblin/templates/mediagoblin/root.html:31
msgid "Explore"
msgstr "Utforsk"
-#: mediagoblin/templates/mediagoblin/root.html:26
+#: 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:28
+#: mediagoblin/templates/mediagoblin/root.html:35
msgid ""
"This site is running MediaGoblin, an "
"extraordinarily great piece of media hosting software."
-msgstr "Denne sida køyrer MediaGoblin, eit superbra program for å visa fram mediefiler."
+msgstr "Denne sida køyrer MediaGoblin, eit superbra program for å visa fram dine kreative verk."
-#: mediagoblin/templates/mediagoblin/root.html:29
+#: 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 "Vil du leggja til eigne verk og innpel, so må du logga inn."
-#: mediagoblin/templates/mediagoblin/root.html:31
+#: 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:32
+#: mediagoblin/templates/mediagoblin/root.html:39
#, python-format
msgid ""
"Create an account at this site\n"
@@ -422,50 +484,43 @@ msgid ""
" Set up MediaGoblin on your own server"
msgstr "Opprett ein konto på denne sida eller set opp MediaGoblin på eigen tenar"
-#: mediagoblin/templates/mediagoblin/root.html:40
+#: mediagoblin/templates/mediagoblin/root.html:47
msgid "Most recent media"
-msgstr "Nyaste mediefiler"
-
-#: 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 "Mediehandsamingspanel"
+msgstr "Nyaste verk"
#: mediagoblin/templates/mediagoblin/admin/panel.html:29
msgid ""
"Here you can track the state of media being processed on this instance."
-msgstr ""
+msgstr "Hald oppsyn med statusen for prosessering av verka dine her."
#: mediagoblin/templates/mediagoblin/admin/panel.html:32
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:32
msgid "Media in-processing"
-msgstr "Media under handsaming"
+msgstr "Verk under prosessesering"
#: mediagoblin/templates/mediagoblin/admin/panel.html:58
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:56
msgid "No media in-processing"
-msgstr "Ingen media under handsaming"
+msgstr "Ingen verk vert prosessert"
#: mediagoblin/templates/mediagoblin/admin/panel.html:61
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:59
msgid "These uploads failed to process:"
-msgstr "Klarte ikkje handsama desse opplasta filene:"
+msgstr "Klarte ikkje prosessera desse opplasta filene:"
#: mediagoblin/templates/mediagoblin/admin/panel.html:90
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
msgid "No failed entries!"
-msgstr ""
+msgstr "Ingen feila filer."
#: mediagoblin/templates/mediagoblin/admin/panel.html:92
msgid "Last 10 successful uploads"
-msgstr ""
+msgstr "Dei siste ti opplastningane"
#: mediagoblin/templates/mediagoblin/admin/panel.html:112
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
msgid "No processed entries, yet!"
-msgstr ""
+msgstr "Ingenting prossesert, enno."
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:28
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:36
@@ -535,11 +590,61 @@ 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 ""
+msgstr "Endrar vedlegg for %(media_title)s"
+
+#: 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:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
+msgid "Add attachment"
+msgstr "Legg ved vedlegg"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr "Bryt av"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
+#: mediagoblin/templates/mediagoblin/edit/edit.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
+#: 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
@@ -547,35 +652,23 @@ msgstr ""
msgid "Editing %(media_title)s"
msgstr "Endrar %(media_title)s"
-#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: 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:53
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Cancel"
-msgstr "Bryt av"
-
-#: mediagoblin/templates/mediagoblin/edit/edit.html:43
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
-msgid "Save changes"
-msgstr "Lagra"
-
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
#, python-format
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 ""
+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"
@@ -586,17 +679,16 @@ msgstr "Endrar profilen til %(username)s"
#: mediagoblin/templates/mediagoblin/listings/tag.html:35
#, python-format
msgid "Media tagged with: %(tag_name)s"
-msgstr "Media merka med: %(tag_name)s"
+msgstr "Verk merka med: %(tag_name)s"
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:23
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
msgstr "Last ned"
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:27
msgid "Original"
msgstr "Opphavleg"
@@ -615,179 +707,206 @@ msgid ""
msgstr "Du kan skaffa ein moderne netlesar som kan spela av dette lydklippet hjå http://opera.com/download."
#: 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 "Opphavleg fil"
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:63
msgid "WebM file (Vorbis codec)"
msgstr "WebM-fil (Vorbis-kodek)"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
-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."
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:87
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:93
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:99
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:105
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:65
+#, python-format
+msgid "Image for %(media_title)s"
+msgstr "Bilete for %(media_title)s"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:43
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:112
+msgid "Toggle Rotate"
+msgstr "Slå av/på rotering"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:113
+msgid "Perspective"
+msgstr "Perspektiv"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:116
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
+msgid "Front"
+msgstr "Front"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:121
+msgid "Top"
+msgstr "Topp"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:124
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:125
+msgid "Side"
+msgstr "Side"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:130
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
+msgid "WebGL"
+msgstr "WebGL"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:138
+msgid "Download model"
+msgstr "Last ned modell"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
+msgid "File Format"
+msgstr "Filformat"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
+msgid "Object Height"
+msgstr "Objekthøgd"
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr "Orsak, denne videoen fungerer ikkje\nfordi netlesaren din ikkje stør\nHTML5 video."
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:47
msgid ""
"You can get a modern web browser that \n"
-"\t can play this video at \n"
-"\t http://getfirefox.com!"
-msgstr "Du kan skaffa ein moderne netlesar som kan spela av denne videoen hjå http://opera.com/download."
+" can play this video at \n"
+" http://getfirefox.com!"
+msgstr "Du kan skaffa deg ein moderne netlesar som kan spela denne videoen hjå http://opera.com eller http://getfirefox.com."
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:69
msgid "WebM file (640p; VP8/Vorbis)"
-msgstr ""
+msgstr "WebM fil (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:83
-msgid "Add"
-msgstr "Legg til"
+msgstr "Legg til ei samling"
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
msgid "Add your media"
-msgstr "Legg til mediefiler"
+msgstr "Legg til verk"
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:30
#, python-format
msgid "%(collection_title)s (%(username)s's collection)"
-msgstr ""
+msgstr "%(collection_title)s (%(username)s si samling)"
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:39
#, python-format
msgid "%(collection_title)s by %(username)s"
-msgstr ""
+msgstr "%(collection_title)s av %(username)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 "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"
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:59
-#, python-format
-msgid ""
-"
\n"
-" %(collection_description)s\n"
-"
"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:30
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
#, python-format
msgid "Really delete %(title)s?"
msgstr "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:50
-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?"
-msgstr ""
+msgstr "Fjerna %(media_title)s frå %(collection_title)s?"
-#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:54
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:53
msgid "Remove"
-msgstr ""
+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 "%(username)s's collections"
+msgstr "%(username)s sine samlingar"
#: 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 "Hei %(username)s,\n%(comment_author)s kommenterte innlegget ditt (%(comment_url)s) hjå %(instance_name)s\n"
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
#, python-format
msgid "%(username)s's media"
-msgstr "Filene til %(username)s"
+msgstr "Verka til %(username)s"
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:37
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:38
+#, python-format
+msgid ""
+"%(username)s's media with tag %(tag)s"
+msgstr "%(username)s sine verk merka %(tag)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
#, python-format
msgid "%(username)s's media"
-msgstr "%(username)s sine mediefiler"
+msgstr "%(username)s sine verk"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
#, python-format
msgid "❖ Browsing media by %(username)s"
-msgstr "❖ Browsing media by %(username)s"
+msgstr "❖ Ser på %(username)s sine verk"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:67
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
-#, python-format
-msgid "Image for %(media_title)s"
-msgstr "Bilete for %(media_title)s"
-
-#: 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 Markdown for"
-" formatting."
-msgstr "Du kan bruka Markdown 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 ""
"
Added on
\n"
"
%(date)s
"
msgstr "
Lagt til
\n
%(date)s
"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
-msgid "Attachments"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
-msgid "Add attachment"
-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 ""
+msgid "Add “%(media_title)s” to a collection"
+msgstr "Putt «%(media_title)s» i samling"
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
-msgstr ""
+msgstr "+"
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
-msgstr ""
+msgstr "Legg til ei ny samling"
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
msgid ""
"You can track the state of media being processed for your gallery here."
-msgstr "Sjå status for mediehandsaming av biletene dine her."
+msgstr "Sjå status for prosessering av verka dine her."
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:89
msgid "Your last 10 successful uploads"
-msgstr ""
+msgstr "Dine ti siste opplastningar."
#: mediagoblin/templates/mediagoblin/user_pages/user.html:31
#: mediagoblin/templates/mediagoblin/user_pages/user.html:89
@@ -838,74 +957,58 @@ msgstr "Viss dette er deg, kan du logga inn 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:125
-msgid "Change account settings"
-msgstr "Endra kontoinstellingar"
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:124
+msgid "Browse collections"
+msgstr "Sjå gjennom samlingar"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:138
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:137
#, python-format
msgid "View all of %(username)s's media"
-msgstr "Sjå alle %(username)s sine mediefiler"
+msgstr "Sjå alle %(username)s sine verk"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:151
+#: 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 mediefilene dine."
+msgstr "Her kjem verka dine."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:157
-msgid "Add media"
-msgstr "Legg til mediefiler"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:163
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:87
-#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:72
+#: 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 "Ser ikkje ut til at det finst nokon mediefiler her nett no."
+msgstr "Ser ikkje ut til at det finst nokon verk her nett no."
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:39
-#, python-format
-msgid ""
-" \n"
-" %(note)s"
-msgstr ""
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
+msgid "(remove)"
+msgstr "(fjern)"
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:47
-#, python-format
-msgid " (remove)"
-msgstr ""
+#: mediagoblin/templates/mediagoblin/utils/collections.html:21
+msgid "Collected in"
+msgstr "I samling"
-#: mediagoblin/templates/mediagoblin/utils/collections.html:20
-#, python-format
-msgid "In collections (%(collected)s)"
-msgstr ""
+#: 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:38
-#, python-format
-msgid "View on OpenStreetMap"
-msgstr "Sjå på OpenStreetMap"
-
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
msgstr "Alle rettar reservert"
@@ -936,98 +1039,134 @@ 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/user_pages/forms.py:28
+#: mediagoblin/tools/response.py:35
+msgid "Oops!"
+msgstr "Oops."
+
+#: mediagoblin/tools/response.py:36
+msgid "An error occured"
+msgstr "Noko gjekk gale"
+
+#: mediagoblin/tools/response.py:51
+msgid "Operation not allowed"
+msgstr "Ulovleg operasjon"
+
+#: mediagoblin/tools/response.py:52
+msgid ""
+"Sorry Dave, I can't let you do that!
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!<HAL2000>
\n
Du prøvde å gjera noko du ikkje har løyve til. Prøvar du å sletta alle brukarkonti no igjen?"
+
+#: mediagoblin/tools/response.py:60
+msgid ""
+"There doesn't seem to be a page at this address. Sorry!
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.
\n
Dersom du er sikker på at adressa finst, so er ho truleg flytta eller sletta."
+
+#: mediagoblin/user_pages/forms.py:23
+msgid "Comment"
+msgstr "Innspel"
+
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use Markdown for"
+" formatting."
+msgstr "Du kan bruka Markdown 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
-msgid "I am sure I want to remove this item from the collection"
-msgstr ""
-
#: mediagoblin/user_pages/forms.py:35
-msgid "-- Select --"
-msgstr ""
+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:37
+#: 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:42
msgid "Include a note"
-msgstr ""
+msgstr "Legg ved eit notat"
#: mediagoblin/user_pages/lib.py:56
msgid "commented on your post"
-msgstr ""
+msgstr "kom med innspel på innlegget ditt"
-#: mediagoblin/user_pages/views.py:161
+#: mediagoblin/user_pages/views.py:166
msgid "Oops, your comment was empty."
msgstr "Vops, innspelet ditt var tomt."
-#: mediagoblin/user_pages/views.py:167
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
msgstr "Innspelet ditt er lagt til."
-#: mediagoblin/user_pages/views.py:235
-msgid "You have to select or add a collection"
-msgstr ""
+#: 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:243
+#: 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:248
#, python-format
msgid "\"%s\" already in collection \"%s\""
-msgstr ""
+msgstr "«%s» er allereie i samling «%s»"
-#: mediagoblin/user_pages/views.py:258
+#: mediagoblin/user_pages/views.py:264
#, python-format
msgid "\"%s\" added to collection \"%s\""
-msgstr ""
+msgstr "«%s» lagt til samling «%s»"
-#: mediagoblin/user_pages/views.py:266
-msgid "Please check your entries and try again."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:297
-msgid ""
-"Some of the files with this entry seem to be missing. Deleting anyway."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:302
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
-msgstr "Du sletta fila."
+msgstr "Du sletta verket."
-#: mediagoblin/user_pages/views.py:309
+#: mediagoblin/user_pages/views.py:293
msgid "The media was not deleted because you didn't check that you were sure."
-msgstr "Sletta ikkje fila fordi du ikkje sa du var sikker."
+msgstr "Sletta ikkje verket."
-#: mediagoblin/user_pages/views.py:317
+#: 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 mediefiler. Trå varsamt."
+msgstr "Du er i ferd med å sletta ein annan brukar sine verk. Trå varsamt."
+
+#: 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:379
-msgid "You deleted the item from the collection."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:383
msgid "The item was not removed because you didn't check that you were sure."
-msgstr ""
+msgstr "Fila var ikkje fjerna fordi du ikkje var sikker."
-#: mediagoblin/user_pages/views.py:393
+#: mediagoblin/user_pages/views.py:389
msgid ""
"You are about to delete an item from another user's collection. Proceed with"
" caution."
-msgstr ""
+msgstr "Du er i ferd med å fjerna ei fil frå ein annan brukar si samling. Trå varsamt."
-#: mediagoblin/user_pages/views.py:426
+#: mediagoblin/user_pages/views.py:422
#, python-format
msgid "You deleted the collection \"%s\""
-msgstr ""
+msgstr "Samlinga «%s» sletta"
-#: mediagoblin/user_pages/views.py:433
+#: mediagoblin/user_pages/views.py:429
msgid ""
"The collection was not deleted because you didn't check that you were sure."
-msgstr ""
+msgstr "Sletta ikkje samlinga."
-#: mediagoblin/user_pages/views.py:443
+#: mediagoblin/user_pages/views.py:439
msgid ""
"You are about to delete another user's collection. Proceed with caution."
-msgstr ""
+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 77dcfe12..ea905b61 100644
Binary files a/mediagoblin/i18n/pl/LC_MESSAGES/mediagoblin.mo and b/mediagoblin/i18n/pl/LC_MESSAGES/mediagoblin.mo differ
diff --git a/mediagoblin/i18n/pl/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/pl/LC_MESSAGES/mediagoblin.po
index 7dea3837..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-09-24 14:01-0500\n"
-"PO-Revision-Date: 2012-09-24 18:57+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 \n"
"Language-Team: LANGUAGE \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:83
+#: 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:87 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"
" \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:91
+#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:101
msgid "Slug"
msgstr "Slug"
-#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:92
+#: 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,60 +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:72
+#: 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:84
+#: mediagoblin/edit/forms.py:94
msgid "The title can't be empty"
msgstr "Tytuł nie może być pusty"
-#: mediagoblin/edit/forms.py:86 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:93
+#: 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:155
+#, python-format
+msgid "You added the attachment %s!"
+msgstr ""
+
#: 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:198
+#: mediagoblin/edit/views.py:204
msgid "Profile changes saved"
msgstr "Zapisano zmiany profilu"
-#: mediagoblin/edit/views.py:227 mediagoblin/edit/views.py:247
-msgid "Account settings saved"
-msgstr "Zapisano ustawienia konta"
-
-#: mediagoblin/edit/views.py:252
+#: mediagoblin/edit/views.py:241
msgid "Wrong password"
msgstr "Nieprawidłowe hasło"
-#: mediagoblin/edit/views.py:288 mediagoblin/submit/views.py:211
-#: mediagoblin/user_pages/views.py:215
+#: mediagoblin/edit/views.py:252
+msgid "Account settings saved"
+msgstr "Zapisano ustawienia konta"
+
+#: mediagoblin/edit/views.py:286
+msgid "You need to confirm the deletion of your account."
+msgstr ""
+
+#: 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:292
+#: 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:309
+#: 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ść."
@@ -231,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:120
+#: mediagoblin/meddleware/csrf.py:134
+msgid ""
+"CSRF cookie not present. This is most likely the result of a cookie blocker "
+"or somesuch. Make sure to permit the 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 OpenStreetMap"
+msgstr "Zobacz na OpenStreetMap"
-#: 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 ""
"Confidential - The client can\n"
" make requests to the GNU MediaGoblin instance that can not be\n"
@@ -288,17 +331,17 @@ msgid ""
" JavaScript client)."
msgstr "Confidential - 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). \n Public - 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 required for public clients."
msgstr "Przekierowanie URI dla aplikacji, to pole\n jest wymagane 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"
@@ -306,7 +349,22 @@ msgstr "To pole jest wymagane dla klientów publicznych"
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."
@@ -314,75 +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/404.html:24
-msgid "Image of 404 goblin stressing out"
-msgstr "Grafika zestresowanego goblina 404."
-
-#: mediagoblin/templates/mediagoblin/404.html:25
-msgid "Oops!"
-msgstr "Ups!"
-
-#: mediagoblin/templates/mediagoblin/404.html:26
-msgid "There doesn't seem to be a page at this address. Sorry!"
-msgstr "Niestety, nie ma strony o takim adresie!"
-
-#: mediagoblin/templates/mediagoblin/404.html:28
-msgid ""
-"If you're sure the address is correct, maybe the page you're looking for has"
-" been moved or deleted."
-msgstr "Jeśli twoim zdaniem ten adres jest prawidłowy, to może poszukiwana strona została przeniesiona lub usunięta."
-
-#: mediagoblin/templates/mediagoblin/base.html:50
-msgid "MediaGoblin logo"
-msgstr "Logo MediaGoblin"
-
-#: mediagoblin/templates/mediagoblin/base.html:60
+#: mediagoblin/templates/mediagoblin/base.html:64
msgid "Verify your email!"
msgstr "Zweryfikuj swój adres e-mail!"
-#: mediagoblin/templates/mediagoblin/base.html:66
-msgid "+ Add media"
-msgstr "+ Dodaj media"
-
-#: mediagoblin/templates/mediagoblin/base.html:67
-msgid "+ Add collection"
-msgstr "+ Dodaj kolekcję"
-
-#: mediagoblin/templates/mediagoblin/base.html:69
-msgid "View your profile"
-msgstr "Zobacz swój profil"
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "log out"
+msgstr ""
#: mediagoblin/templates/mediagoblin/base.html:70
-msgid "Log out"
-msgstr "Wyloguj się"
-
-#: mediagoblin/templates/mediagoblin/base.html:75
#: 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:89
-msgid ""
-"Powered by MediaGoblin, a GNU project."
-msgstr "Obsługiwane przez MediaGoblin, projekt GNU."
+#: mediagoblin/templates/mediagoblin/base.html:79
+#, python-format
+msgid "%(user_name)s's account"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:92
+#: 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:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:156
+msgid "Add media"
+msgstr "Dodaj media"
+
+#: 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 MediaGoblin, a GNU project."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:125
#, python-format
msgid ""
"Released under the Source code available."
msgstr "Opublikowane na licencji AGPL. Dostępny jest kod źródłowy."
-#: mediagoblin/templates/mediagoblin/root.html:24
+#: mediagoblin/templates/mediagoblin/error.html:24
+msgid "Image of goblin stressing out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/root.html:31
msgid "Explore"
msgstr "Odkrywaj"
-#: mediagoblin/templates/mediagoblin/root.html:26
+#: 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:28
+#: mediagoblin/templates/mediagoblin/root.html:35
msgid ""
"This site is running MediaGoblin, an "
"extraordinarily great piece of media hosting software."
msgstr "Ten serwis działa w oparciu o MediaGoblin, świetne oprogramowanie do publikowania mediów."
-#: mediagoblin/templates/mediagoblin/root.html:29
+#: 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:31
+#: 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:32
+#: mediagoblin/templates/mediagoblin/root.html:39
#, python-format
msgid ""
"Create an account at this site\n"
@@ -422,17 +483,10 @@ msgid ""
" Set up MediaGoblin on your own server"
msgstr "Utwórz konto w tym serwisie\n lub\n załóż własny serwis MediaGoblin"
-#: mediagoblin/templates/mediagoblin/root.html:40
+#: mediagoblin/templates/mediagoblin/root.html:47
msgid "Most recent media"
msgstr "Najnowsze media"
-#: 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/admin/panel.html:29
msgid ""
"Here you can track the state of media being processed on this instance."
@@ -535,47 +589,85 @@ 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: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:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
+msgid "Add attachment"
+msgstr "Dodaj załącznik"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr "Anuluj"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
+#: mediagoblin/templates/mediagoblin/edit/edit.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
+msgid "Save changes"
+msgstr "Zapisz zmiany"
+
+#: mediagoblin/templates/mediagoblin/edit/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
msgid "Editing %(media_title)s"
msgstr "Edytowanie %(media_title)s"
-#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: 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:53
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Cancel"
-msgstr "Anuluj"
-
-#: mediagoblin/templates/mediagoblin/edit/edit.html:43
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
-msgid "Save changes"
-msgstr "Zapisz zmiany"
-
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
#, python-format
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"
@@ -590,13 +682,12 @@ 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/image.html:23
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
msgstr "Pobierz"
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:27
msgid "Original"
msgstr "Oryginał"
@@ -615,7 +706,7 @@ msgid ""
msgstr "Proszę pobrać przeglądarkę, która obsługuje \n\tdźwięk w HTML5, pod adresem \n\t http://getfirefox.com!"
#: 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"
@@ -623,21 +714,71 @@ msgstr "Oryginalny plik"
msgid "WebM file (Vorbis codec)"
msgstr "plik WebM (kodek Vorbis)"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
-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."
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:87
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:93
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:99
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:105
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:65
+#, python-format
+msgid "Image for %(media_title)s"
+msgstr "Grafika dla %(media_title)s"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:43
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:112
+msgid "Toggle Rotate"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:113
+msgid "Perspective"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:116
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
+msgid "Front"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:121
+msgid "Top"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:124
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:125
+msgid "Side"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:130
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
+msgid "WebGL"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:138
+msgid "Download model"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
+msgid "File Format"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
+msgid "Object Height"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:47
msgid ""
"You can get a modern web browser that \n"
-"\t can play this video at \n"
-"\t http://getfirefox.com!"
-msgstr "Możesz pobrać współczesną przeglądarkę, która obsługuje \n\t takie filmy, pod adresem \n\t http://getfirefox.com!"
+" can play this video at \n"
+" http://getfirefox.com!"
+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)"
@@ -645,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:83
-msgid "Add"
-msgstr "Dodaj"
-
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
msgid "Add your media"
@@ -667,43 +802,40 @@ msgid "%(collection_title)s by %(username)s"
msgstr "%(collection_title)s użytkownika %(username)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 "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ń"
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:59
-#, python-format
-msgid ""
-"
"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
-msgid "Attachments"
-msgstr "Załączniki"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
-msgid "Add attachment"
-msgstr "Dodaj załącznik"
-
-#: 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:52
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
msgstr "+"
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
msgstr "Dodaj nową kolekcję"
@@ -838,74 +956,58 @@ 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:125
-msgid "Change account settings"
-msgstr "Zmień ustawienia konta"
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:124
+msgid "Browse collections"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:138
+#: 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:151
+#: 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
-msgid "Add media"
-msgstr "Dodaj media"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:163
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:87
-#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:72
+#: 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 "Tu nie ma jeszcze żadnych mediów..."
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:39
-#, python-format
-msgid ""
-" \n"
-" %(note)s"
-msgstr " \n %(note)s"
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
+msgid "(remove)"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:47
-#, python-format
-msgid " (remove)"
-msgstr " (usuń)"
+#: 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)"
-msgstr "W kolekcjach (%(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 "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:38
-#, python-format
-msgid "View on OpenStreetMap"
-msgstr "Zobacz na OpenStreetMap"
-
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
msgstr "Wszystkie prawa zastrzeżone"
@@ -936,23 +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/user_pages/forms.py:28
+#: mediagoblin/tools/response.py:35
+msgid "Oops!"
+msgstr "Ups!"
+
+#: mediagoblin/tools/response.py:36
+msgid "An error occured"
+msgstr ""
+
+#: mediagoblin/tools/response.py:51
+msgid "Operation not allowed"
+msgstr ""
+
+#: mediagoblin/tools/response.py:52
+msgid ""
+"Sorry Dave, I can't let you do that!
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:60
+msgid ""
+"There doesn't seem to be a page at this address. Sorry!
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:23
+msgid "Comment"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use Markdown for"
+" formatting."
+msgstr "Możesz formatować przy pomocy składni Markdown."
+
+#: 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ę"
@@ -960,74 +1103,69 @@ msgstr "Dodaj notatkę"
msgid "commented on your post"
msgstr "komentarze do twojego wpisu"
-#: mediagoblin/user_pages/views.py:161
+#: 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:167
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
msgstr "Twój komentarz został opublikowany!"
-#: mediagoblin/user_pages/views.py:235
+#: 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:243
+#: 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:258
+#: 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:266
-msgid "Please check your entries and try again."
-msgstr "Sprawdź swoje wpisy i spróbuj ponownie."
-
-#: mediagoblin/user_pages/views.py:297
-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:302
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
msgstr "Media zostały usunięte."
-#: mediagoblin/user_pages/views.py:309
+#: 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:317
+#: 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:379
+#: 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:383
+#: 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:393
+#: 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:426
+#: mediagoblin/user_pages/views.py:422
#, python-format
msgid "You deleted the collection \"%s\""
msgstr "Usunięto kolekcję \"%s\""
-#: mediagoblin/user_pages/views.py:433
+#: 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:443
+#: 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 1552ce78..af50e027 100644
Binary files a/mediagoblin/i18n/pt_BR/LC_MESSAGES/mediagoblin.mo and b/mediagoblin/i18n/pt_BR/LC_MESSAGES/mediagoblin.mo differ
diff --git a/mediagoblin/i18n/pt_BR/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/pt_BR/LC_MESSAGES/mediagoblin.po
index ff431932..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 , 2013.
# , 2011.
# ufa , 2011.
+# Vinicius SM , 2013.
msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://issues.mediagoblin.org/\n"
-"POT-Creation-Date: 2012-09-24 14:01-0500\n"
-"PO-Revision-Date: 2012-09-24 18:57+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 \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:83
+#: 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:87 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"
" \n"
" Markdown for formatting."
-msgstr ""
+msgstr "Você pode usar\n\nMarkdown 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:91
+#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:101
msgid "Slug"
msgstr "Arquivo"
-#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:92
+#: 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,72 +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:72
+#: 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: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:84
+#: 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:86 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:93
+#: 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:155
+#, python-format
+msgid "You added the attachment %s!"
+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: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:198
+#: mediagoblin/edit/views.py:204
msgid "Profile changes saved"
-msgstr ""
+msgstr "As mudanças no perfil foram salvas"
-#: mediagoblin/edit/views.py:227 mediagoblin/edit/views.py:247
-msgid "Account settings saved"
-msgstr ""
-
-#: mediagoblin/edit/views.py:252
+#: mediagoblin/edit/views.py:241
msgid "Wrong password"
msgstr "Senha errada"
-#: mediagoblin/edit/views.py:288 mediagoblin/submit/views.py:211
-#: mediagoblin/user_pages/views.py:215
+#: 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:292
+#: 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:309
+#: 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"
@@ -232,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:120
+#: mediagoblin/meddleware/csrf.py:134
+msgid ""
+"CSRF cookie not present. This is most likely the result of a cookie blocker "
+"or somesuch. Make sure to permit the 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. 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 OpenStreetMap"
+msgstr "Ver no OpenStreetMap"
+
+#: mediagoblin/plugins/oauth/forms.py:29
+msgid "Allow"
+msgstr "Permitir"
#: mediagoblin/plugins/oauth/forms.py:30
-msgid "Allow"
-msgstr ""
-
-#: mediagoblin/plugins/oauth/forms.py:31
msgid "Deny"
-msgstr ""
+msgstr "Negar"
+
+#: mediagoblin/plugins/oauth/forms.py:34
+msgid "Name"
+msgstr "Nome"
#: mediagoblin/plugins/oauth/forms.py:35
-msgid "Name"
-msgstr ""
+msgid "The name of the OAuth client"
+msgstr "O nome do cliente OAuth"
#: mediagoblin/plugins/oauth/forms.py:36
-msgid "The name of the OAuth client"
-msgstr ""
-
-#: mediagoblin/plugins/oauth/forms.py:37
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 ""
"Confidential - The client can\n"
" make requests to the GNU MediaGoblin instance that can not be\n"
@@ -289,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 required 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: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"
@@ -315,118 +375,45 @@ 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/404.html:24
-msgid "Image of 404 goblin stressing out"
-msgstr "Imagem do goblin 404 aparecendo"
-
-#: mediagoblin/templates/mediagoblin/404.html:25
-msgid "Oops!"
-msgstr "Oops"
-
-#: mediagoblin/templates/mediagoblin/404.html:26
-msgid "There doesn't seem to be a page at this address. Sorry!"
-msgstr "Aparentemente não existe uma página com esse endereço. Desculpe!"
-
-#: mediagoblin/templates/mediagoblin/404.html:28
-msgid ""
-"If you're sure the address is correct, maybe the page you're looking for has"
-" been moved or deleted."
-msgstr "Se você está certo de que o endereço está correto, talvez a página que esteja procurando tenha sido apagada ou mudou de endereço"
-
-#: mediagoblin/templates/mediagoblin/base.html:50
-msgid "MediaGoblin logo"
-msgstr "Logo MediaGoblin"
-
-#: mediagoblin/templates/mediagoblin/base.html:60
+#: mediagoblin/templates/mediagoblin/base.html:64
msgid "Verify your email!"
msgstr "Verifique seu email!"
-#: mediagoblin/templates/mediagoblin/base.html:66
-msgid "+ Add media"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:67
-msgid "+ Add collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:69
-msgid "View your profile"
-msgstr ""
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "log out"
+msgstr "sair"
#: mediagoblin/templates/mediagoblin/base.html:70
-msgid "Log out"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:75
#: 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:89
-msgid ""
-"Powered by MediaGoblin, a GNU project."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:92
+#: mediagoblin/templates/mediagoblin/base.html:79
#, python-format
-msgid ""
-"Released under the AGPL. Source code available."
-msgstr ""
+msgid "%(user_name)s's account"
+msgstr "Conta de %(user_name)s"
-#: mediagoblin/templates/mediagoblin/root.html:24
-msgid "Explore"
-msgstr "Explorar"
-
-#: mediagoblin/templates/mediagoblin/root.html:26
-msgid "Hi there, welcome to this MediaGoblin site!"
-msgstr "Olá, bemvindo ao site de MediaGoblin."
-
-#: mediagoblin/templates/mediagoblin/root.html:28
-msgid ""
-"This site is running MediaGoblin, an "
-"extraordinarily great piece of media hosting software."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:29
-msgid ""
-"To add your own media, place comments, and more, you can log in with your "
-"MediaGoblin account."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:31
-msgid "Don't have one yet? It's easy!"
-msgstr " "
-
-#: mediagoblin/templates/mediagoblin/root.html:32
-#, python-format
-msgid ""
-"Create an account at this site\n"
-" or\n"
-" Set up MediaGoblin on your own server"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:40
-msgid "Most recent media"
-msgstr "Mídia mais recente"
+#: 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
@@ -434,6 +421,75 @@ msgstr "Mídia mais recente"
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:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:156
+msgid "Add media"
+msgstr "Adicionar mídia"
+
+#: 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:122
+#, python-format
+msgid ""
+"Powered by MediaGoblin, a GNU project."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:125
+#, python-format
+msgid ""
+"Released under the AGPL. Source code available."
+msgstr "Lançado sob a AGPL. Código fonte disponível."
+
+#: mediagoblin/templates/mediagoblin/error.html:24
+msgid "Image of goblin stressing out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/root.html:31
+msgid "Explore"
+msgstr "Explorar"
+
+#: mediagoblin/templates/mediagoblin/root.html:33
+msgid "Hi there, welcome to this MediaGoblin site!"
+msgstr "Olá, bem-vindo a este site MediaGoblin."
+
+#: mediagoblin/templates/mediagoblin/root.html:35
+msgid ""
+"This site is running MediaGoblin, an "
+"extraordinarily great piece of media hosting software."
+msgstr "Este site roda o MediaGoblin, um programa excelente para hospedar, gerenciar e compartilhar mídia."
+
+#: 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 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:38
+msgid "Don't have one yet? It's easy!"
+msgstr " Ainda não tem uma conta? É facil!"
+
+#: mediagoblin/templates/mediagoblin/root.html:39
+#, python-format
+msgid ""
+"Create an account at this site\n"
+" or\n"
+" Set up MediaGoblin on your own server"
+msgstr "Criar uma conta neste site\nou\nConfigurar MediaGoblin em seu próprio servidor"
+
+#: mediagoblin/templates/mediagoblin/root.html:47
+msgid "Most recent media"
+msgstr "Mídia mais recente"
+
#: mediagoblin/templates/mediagoblin/admin/panel.html:29
msgid ""
"Here you can track the state of media being processed on this instance."
@@ -457,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
@@ -536,11 +592,61 @@ 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:44
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:159
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:175
+msgid "Attachments"
+msgstr "Anexos"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
+msgid "Add attachment"
+msgstr "Adicionar anexo"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
+#: mediagoblin/templates/mediagoblin/edit/edit.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
+msgid "Save changes"
+msgstr "Salvar mudanças"
+
+#: mediagoblin/templates/mediagoblin/edit/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
@@ -548,35 +654,23 @@ msgstr ""
msgid "Editing %(media_title)s"
msgstr "Editando %(media_title)s"
-#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: 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:53
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Cancel"
-msgstr "Cancelar"
-
-#: mediagoblin/templates/mediagoblin/edit/edit.html:43
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
-msgid "Save changes"
-msgstr "Salvar mudanças"
-
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:41
+#: 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"
@@ -587,17 +681,16 @@ 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/image.html:23
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
-msgstr ""
+msgstr "Baixar"
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:27
msgid "Original"
msgstr "Original"
@@ -606,180 +699,207 @@ 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 \n"
"\t http://getfirefox.com!"
-msgstr ""
+msgstr "Você pode obter um navegador moderno\n »capaz de reproduzir o áudio em \n » http://getfirefox.com!"
#: 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/video.html:40
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:87
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:93
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:99
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:105
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:65
+#, python-format
+msgid "Image for %(media_title)s"
+msgstr "Imagem para %(media_title)s"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:112
+msgid "Toggle Rotate"
+msgstr "Alternar Rotação"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:113
+msgid "Perspective"
+msgstr "Perspectiva"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:116
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
+msgid "Front"
+msgstr "Frente"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:121
+msgid "Top"
+msgstr "Cima"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:124
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:125
+msgid "Side"
+msgstr "Lado"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:130
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
+msgid "WebGL"
+msgstr "WebGL"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:138
+msgid "Download model"
+msgstr "Baixar o modelo"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
+msgid "File Format"
+msgstr "Formato de Arquivo"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
+msgid "Object Height"
+msgstr "Altura do Objeto"
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html: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 \n"
-"\t http://getfirefox.com!"
-msgstr ""
+" can play this video at \n"
+" http://getfirefox.com!"
+msgstr "Você pode obter um navegador moderno\n capaz de reproduzir este vídeo em \n http://getfirefox.com!"
-#: 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:83
-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 %(username)s"
-msgstr ""
+msgstr "%(collection_title)s de %(username)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 "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"
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:59
-#, python-format
-msgid ""
-"
\n"
-" %(collection_description)s\n"
-"
"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:30
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
#, python-format
msgid "Really delete %(title)s?"
msgstr "Realmente apagar %(title)s ?"
-#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:47
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:50
-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:54
+#: 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 "%(username)s's collections"
+msgstr "Coleções de %(username)s"
#: 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 ""
+"%(username)s's media with tag %(tag)s"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:37
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
#, python-format
msgid "%(username)s's media"
msgstr "Mídia de %(username)s "
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
#, python-format
msgid "❖ Browsing media by %(username)s"
-msgstr ""
+msgstr "❖ Vendo mídia de %(username)s"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:67
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
-#, python-format
-msgid "Image for %(media_title)s"
-msgstr ""
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:94
+msgid "Add a comment"
+msgstr "Adicionar um comentário"
#: mediagoblin/templates/mediagoblin/user_pages/media.html:102
-msgid "Add a comment"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:109
-msgid ""
-"You can use Markdown for"
-" formatting."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:113
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 ""
"
Added on
\n"
"
%(date)s
"
-msgstr ""
+msgstr "
Adicionado em
\n
%(date)s
"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
-msgid "Attachments"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
-msgid "Add attachment"
-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 ""
+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:52
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
-msgstr ""
+msgstr "+"
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:57
+#: 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 ""
@@ -788,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
@@ -807,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 ""
@@ -839,85 +959,69 @@ 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:125
-msgid "Change account settings"
-msgstr ""
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:124
+msgid "Browse collections"
+msgstr "Ver coleções"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:138
+#: 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:151
+#: 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
-msgid "Add media"
-msgstr "Adicionar mídia"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:163
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:87
-#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:72
+#: 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 "Aparentemente não há nenhuma mídia aqui ainda..."
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:39
-#, python-format
-msgid ""
-" \n"
-" %(note)s"
+#: 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/collection_gallery.html:47
-#, python-format
-msgid " (remove)"
-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:38
-#, python-format
-msgid "View on OpenStreetMap"
-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:"
@@ -926,109 +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/user_pages/forms.py:28
+#: mediagoblin/tools/response.py:35
+msgid "Oops!"
+msgstr "Oops"
+
+#: mediagoblin/tools/response.py:36
+msgid "An error occured"
+msgstr "Um erro ocorreu"
+
+#: mediagoblin/tools/response.py:51
+msgid "Operation not allowed"
+msgstr "Operação não permitida"
+
+#: mediagoblin/tools/response.py:52
+msgid ""
+"Sorry Dave, I can't let you do that!
You have tried to perform a "
+"function that you are not allowed to. Have you been trying to delete all "
+"user accounts again?"
+msgstr "Me desculpe Dave, não posso deixar você fazer isso!
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:60
+msgid ""
+"There doesn't seem to be a page at this address. Sorry!
If you're sure"
+" the address is correct, maybe the page you're looking for has been moved or"
+" deleted."
+msgstr "Parece que não há uma página com este endereço. Desculpe!
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:25
+msgid ""
+"You can use Markdown for"
+" formatting."
+msgstr "Você pode usar Markdown 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"
-
-#: mediagoblin/user_pages/forms.py:32
-msgid "I am sure I want to remove this item from the collection"
-msgstr ""
+msgstr "Eu tenho certeza de que quero apagar isso"
#: mediagoblin/user_pages/forms.py:35
+msgid "I am sure I want to remove this item from the collection"
+msgstr "Tenho certeza que quero remover este item da coleção"
+
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr "Coleção"
+
+#: mediagoblin/user_pages/forms.py:40
msgid "-- Select --"
msgstr ""
-#: 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:161
+#: 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:167
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
msgstr "Seu comentário foi postado!"
-#: mediagoblin/user_pages/views.py:235
-msgid "You have to select or add a collection"
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:243
-#, python-format
-msgid "\"%s\" already in collection \"%s\""
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:258
-#, python-format
-msgid "\"%s\" added to collection \"%s\""
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:266
+#: mediagoblin/user_pages/views.py:197
msgid "Please check your entries and try again."
msgstr ""
-#: mediagoblin/user_pages/views.py:297
-msgid ""
-"Some of the files with this entry seem to be missing. Deleting anyway."
-msgstr ""
+#: 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:302
+#: mediagoblin/user_pages/views.py:248
+#, python-format
+msgid "\"%s\" already in collection \"%s\""
+msgstr "\"%s\" já está na coleção \"%s\""
+
+#: mediagoblin/user_pages/views.py:264
+#, python-format
+msgid "\"%s\" added to collection \"%s\""
+msgstr "\"%s\" adicionado à coleção \"%s\""
+
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
msgstr "Você deletou a mídia."
-#: mediagoblin/user_pages/views.py:309
+#: 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:317
+#: 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:379
+#: 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:383
+#: 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:393
+#: 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:426
+#: 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:433
+#: 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:443
+#: 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 8a759873..62cbf028 100644
Binary files a/mediagoblin/i18n/ro/LC_MESSAGES/mediagoblin.mo and b/mediagoblin/i18n/ro/LC_MESSAGES/mediagoblin.mo differ
diff --git a/mediagoblin/i18n/ro/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/ro/LC_MESSAGES/mediagoblin.po
index e391869b..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:
# , 2011.
-# George Pop , 2011-2012.
+# George Pop , 2011-2013.
msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://issues.mediagoblin.org/\n"
-"POT-Creation-Date: 2012-09-24 14:01-0500\n"
-"PO-Revision-Date: 2012-09-24 18:57+0000\n"
-"Last-Translator: cwebber \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 \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:83
+#: 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:87 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"
" \n"
@@ -114,17 +128,17 @@ msgstr "Poți folosi\n Make sure to permit the settings of cookies for this "
+"domain."
+msgstr "Lipsește cookie-ul CSRF. Probabil că blocați cookie-urile. 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 OpenStreetMap"
+msgstr "Vezi pe OpenStreetMap"
-#: 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 ""
+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 ""
"Confidential - The client can\n"
" make requests to the GNU MediaGoblin instance that can not be\n"
@@ -289,17 +332,17 @@ msgid ""
" JavaScript client)."
msgstr "Confidențial - 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). \n Public - 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 required for public clients."
msgstr "URI-ul de redirectare pentru aplicații, această rubrică\n este obligatorie 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"
@@ -307,7 +350,22 @@ msgstr "Această rubrică este obligatorie pentru clienții publici"
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."
@@ -315,75 +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/404.html:24
-msgid "Image of 404 goblin stressing out"
-msgstr "Imagine cu elful 404 stresat."
-
-#: mediagoblin/templates/mediagoblin/404.html:25
-msgid "Oops!"
-msgstr "Hopa!"
-
-#: mediagoblin/templates/mediagoblin/404.html:26
-msgid "There doesn't seem to be a page at this address. Sorry!"
-msgstr "Nu există nicio pagină la această adresă. Ne pare rău!"
-
-#: mediagoblin/templates/mediagoblin/404.html:28
-msgid ""
-"If you're sure the address is correct, maybe the page you're looking for has"
-" been moved or deleted."
-msgstr "Dacă ești sigur că adresa e corectă, poate că pagina pe care o cauți a fost mutată sau ștearsă."
-
-#: mediagoblin/templates/mediagoblin/base.html:50
-msgid "MediaGoblin logo"
-msgstr "logo MediaGoblin"
-
-#: mediagoblin/templates/mediagoblin/base.html:60
+#: mediagoblin/templates/mediagoblin/base.html:64
msgid "Verify your email!"
msgstr "Verifică adresa de e-mail!"
-#: mediagoblin/templates/mediagoblin/base.html:66
-msgid "+ Add media"
-msgstr "+ Adaugă fișier media"
-
-#: mediagoblin/templates/mediagoblin/base.html:67
-msgid "+ Add collection"
-msgstr "+ Creează colecție"
-
-#: mediagoblin/templates/mediagoblin/base.html:69
-msgid "View your profile"
-msgstr "Vezi profilul tău"
-
-#: mediagoblin/templates/mediagoblin/base.html:70
-msgid "Log out"
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "log out"
msgstr "Ieșire"
-#: mediagoblin/templates/mediagoblin/base.html:75
+#: 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:89
-msgid ""
-"Powered by MediaGoblin, a GNU project."
-msgstr "Construit cu MediaGoblin, un proiect GNU."
+#: mediagoblin/templates/mediagoblin/base.html:79
+#, python-format
+msgid "%(user_name)s's account"
+msgstr "Contul lui %(user_name)s"
-#: mediagoblin/templates/mediagoblin/base.html:92
+#: 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:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:156
+msgid "Add media"
+msgstr "Trimite fișier"
+
+#: 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:122
+#, python-format
+msgid ""
+"Powered by MediaGoblin, a GNU project."
+msgstr "Construit cu MediaGoblin, un proiect GNU."
+
+#: mediagoblin/templates/mediagoblin/base.html:125
#, python-format
msgid ""
"Released under the Source code available."
msgstr "Publicat sub licența AGPL. Codul sursă este disponibil."
-#: mediagoblin/templates/mediagoblin/root.html:24
+#: mediagoblin/templates/mediagoblin/error.html:24
+msgid "Image of goblin stressing out"
+msgstr "Imagine cu un goblin stresat"
+
+#: mediagoblin/templates/mediagoblin/root.html:31
msgid "Explore"
msgstr "Explorează"
-#: mediagoblin/templates/mediagoblin/root.html:26
+#: 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:28
+#: mediagoblin/templates/mediagoblin/root.html:35
msgid ""
"This site is running MediaGoblin, an "
"extraordinarily great piece of media hosting software."
msgstr "Acest site folosește MediaGoblin, un software excepțional pentru găzduirea fișierelor media."
-#: mediagoblin/templates/mediagoblin/root.html:29
+#: 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:31
+#: 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:32
+#: mediagoblin/templates/mediagoblin/root.html:39
#, python-format
msgid ""
"Create an account at this site\n"
@@ -423,17 +484,10 @@ msgid ""
" Set up MediaGoblin on your own server"
msgstr "Creează un cont pe acest site\n sau\n Instalează MediaGoblin pe serverul tău"
-#: mediagoblin/templates/mediagoblin/root.html:40
+#: mediagoblin/templates/mediagoblin/root.html:47
msgid "Most recent media"
msgstr "Cele mai recente fișiere"
-#: 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/admin/panel.html:29
msgid ""
"Here you can track the state of media being processed on this instance."
@@ -498,7 +552,7 @@ msgid ""
"\n"
"If you think this is an error, just ignore this email and continue being\n"
"a happy goblin!"
-msgstr "Bună, %(username)s\n\nPentru a schimba parola ta la GNU MediaGoblin, accesează adresa următoare:\n\n%(verification_url)s\n\nDacă ai primit acest mesaj din greșeală, ignoră-l și fii mai departe un elf fericit!"
+msgstr "Bună, %(username)s\n\nPentru a schimba parola ta la GNU MediaGoblin, accesează adresa următoare:\n\n%(verification_url)s\n\nDacă ai primit acest mesaj din greșeală, ignoră-l și fii mai departe un goblin fericit!"
#: mediagoblin/templates/mediagoblin/auth/login.html:39
msgid "Logging in failed!"
@@ -536,47 +590,85 @@ 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: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:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
+msgid "Add attachment"
+msgstr "Atașează"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr "Anulare"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
+#: mediagoblin/templates/mediagoblin/edit/edit.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
+#: 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
msgid "Editing %(media_title)s"
msgstr "Editare %(media_title)s"
-#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: 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:53
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Cancel"
-msgstr "Anulare"
-
-#: mediagoblin/templates/mediagoblin/edit/edit.html:43
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
-msgid "Save changes"
-msgstr "Salvează modificările"
-
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
#, python-format
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"
@@ -587,17 +679,16 @@ 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/image.html:23
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
msgstr "Download"
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:27
msgid "Original"
msgstr "Original"
@@ -616,7 +707,7 @@ msgid ""
msgstr "Poți lua un browser modern \n\tcapabil să redea această înregistrare de la \n\t http://getfirefox.com!"
#: 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"
@@ -624,21 +715,71 @@ msgstr "Fișierul original"
msgid "WebM file (Vorbis codec)"
msgstr "Fișier WebM (codec Vorbis)"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
-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» browserul tău nu este compatibil cu funcția video din HTML5."
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:87
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:93
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:99
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:105
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:65
+#, python-format
+msgid "Image for %(media_title)s"
+msgstr "Imagine pentru %(media_title)s"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:43
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:112
+msgid "Toggle Rotate"
+msgstr "Rotire"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:113
+msgid "Perspective"
+msgstr "Perspectivă"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:116
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
+msgid "Front"
+msgstr "Din față"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:121
+msgid "Top"
+msgstr "De sus"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:124
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:125
+msgid "Side"
+msgstr "Lateral"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:130
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
+msgid "WebGL"
+msgstr "WebGL"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:138
+msgid "Download model"
+msgstr "Descarcă modelul"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
+msgid "File Format"
+msgstr "Formatul fișierului"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
+msgid "Object Height"
+msgstr "Înălțimea obiectului"
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr "Ne pare rău, dar această înregistrare video nu va funcționa deoarece browser-ul dvs. nu este compatibil cu HTML5 video."
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:47
msgid ""
"You can get a modern web browser that \n"
-"\t can play this video at \n"
-"\t http://getfirefox.com!"
-msgstr "Poți lua un browser modern\n» capabil să redea această înregistrare de la \n» http://getfirefox.com!"
+" can play this video at \n"
+" http://getfirefox.com!"
+msgstr "Puteți obține un browser Web modern care poate reda această înregistrare de la http://getfirefox.com!"
-#: 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)"
@@ -646,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:83
-msgid "Add"
-msgstr "Adaugă"
-
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
msgid "Add your media"
@@ -668,43 +803,40 @@ msgid "%(collection_title)s by %(username)s"
msgstr "%(collection_title)s de %(username)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 "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"
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:59
-#, python-format
-msgid ""
-"
\n"
-" %(collection_description)s\n"
-"
"
-msgstr "
\n %(collection_description)s\n
"
-
#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:30
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
#, python-format
msgid "Really delete %(title)s?"
msgstr "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:50
-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?"
msgstr "Sigur dorești să ștergi %(media_title)s din %(collection_title)s?"
-#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:54
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:53
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 "%(username)s's collections"
+msgstr "Colecțiile utilizatorului %(username)s"
+
#: mediagoblin/templates/mediagoblin/user_pages/comment_email.txt:19
#, python-format
msgid ""
@@ -717,67 +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 ""
+"%(username)s's media with tag %(tag)s"
+msgstr "Fișierele lui %(username)s cu cuvântul-cheie %(tag)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
#, python-format
msgid "%(username)s's media"
msgstr "Fișierele media ale lui %(username)s"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
#, python-format
msgid "❖ Browsing media by %(username)s"
msgstr "
"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:67
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
-#, python-format
-msgid "Image for %(media_title)s"
-msgstr "Imagine pentru %(media_title)s"
-
-#: 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 Markdown for"
-" formatting."
-msgstr "Poți folosi Markdown 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 ""
"
Added on
\n"
"
%(date)s
"
msgstr "
Adăugat la
\n
%(date)s
"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
-msgid "Attachments"
-msgstr "Anexe"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
-msgid "Add attachment"
-msgstr "Atașează"
-
-#: 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:52
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
msgstr "+"
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
msgstr "Creează o nouă colecție"
@@ -839,74 +957,58 @@ 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:125
-msgid "Change account settings"
-msgstr "Modifică setările contului"
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:124
+msgid "Browse collections"
+msgstr "Vizitează colecțiile"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:138
+#: 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:151
+#: 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
-msgid "Add media"
-msgstr "Trimite fișier"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:163
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:87
-#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:72
+#: 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 "Nu pare să existe niciun fișier media deocamdată..."
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:39
-#, python-format
-msgid ""
-" \n"
-" %(note)s"
-msgstr " \n %(note)s"
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
+msgid "(remove)"
+msgstr "(șterge)"
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:47
-#, python-format
-msgid " (remove)"
-msgstr " (șterge)"
+#: mediagoblin/templates/mediagoblin/utils/collections.html:21
+msgid "Collected in"
+msgstr "Din colecția"
-#: 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: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:38
-#, python-format
-msgid "View on OpenStreetMap"
-msgstr "Vezi pe OpenStreetMap"
-
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
msgstr "Toate drepturile rezervate"
@@ -935,25 +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/user_pages/forms.py:28
+#: mediagoblin/tools/response.py:35
+msgid "Oops!"
+msgstr "Hopa!"
+
+#: mediagoblin/tools/response.py:36
+msgid "An error occured"
+msgstr "S-a produs o eroare"
+
+#: mediagoblin/tools/response.py:51
+msgid "Operation not allowed"
+msgstr "Operația nu este permisă"
+
+#: mediagoblin/tools/response.py:52
+msgid ""
+"Sorry Dave, I can't let you do that!
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!
Ai încercat să faci o operație nepermisă. Ai încercat iar să ștergi toate conturile utilizatorilor?"
+
+#: mediagoblin/tools/response.py:60
+msgid ""
+"There doesn't seem to be a page at this address. Sorry!
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ă.
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:23
+msgid "Comment"
+msgstr "Comentariu"
+
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use Markdown for"
+" formatting."
+msgstr "Poți folosi Markdown 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ță"
@@ -961,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:161
+#: mediagoblin/user_pages/views.py:166
msgid "Oops, your comment was empty."
msgstr "Hopa, ai uitat să scrii comentariul."
-#: mediagoblin/user_pages/views.py:167
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
msgstr "Comentariul tău a fost trimis!"
-#: mediagoblin/user_pages/views.py:235
+#: 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:243
+#: 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:258
+#: 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:266
-msgid "Please check your entries and try again."
-msgstr "Verifică datele și încearcă din nou."
-
-#: mediagoblin/user_pages/views.py:297
-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:302
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
msgstr "Ai șters acest fișier"
-#: mediagoblin/user_pages/views.py:309
+#: 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:317
+#: 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:379
+#: 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:383
+#: 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:393
+#: 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:426
+#: 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:433
+#: 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:443
+#: 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 d8967294..759f5337 100644
Binary files a/mediagoblin/i18n/ru/LC_MESSAGES/mediagoblin.mo and b/mediagoblin/i18n/ru/LC_MESSAGES/mediagoblin.mo differ
diff --git a/mediagoblin/i18n/ru/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/ru/LC_MESSAGES/mediagoblin.po
index 8785e8ac..0dc099ed 100644
--- a/mediagoblin/i18n/ru/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/ru/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:
+# , 2013.
# , 2011-2012.
msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://issues.mediagoblin.org/\n"
-"POT-Creation-Date: 2012-09-24 11:41-0500\n"
-"PO-Revision-Date: 2012-09-24 18:15+0000\n"
+"POT-Creation-Date: 2013-03-04 18:04-0600\n"
+"PO-Revision-Date: 2013-03-10 15:35+0000\n"
"Last-Translator: aleksejrs \n"
"Language-Team: LANGUAGE \n"
"MIME-Version: 1.0\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:83
+#: 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:87 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"
" \n"
@@ -119,11 +134,11 @@ msgstr "Метки"
msgid "Separate tags by commas."
msgstr "(через запятую)"
-#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:91
+#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:101
msgid "Slug"
msgstr "Отличительная часть адреса"
-#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:92
+#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:102
msgid "The slug can't be empty"
msgstr "Отличительная часть адреса необходима"
@@ -162,59 +177,81 @@ msgstr "Введите свой старый пароль в качестве д
msgid "New password"
msgstr "Новый пароль"
-#: mediagoblin/edit/forms.py:72
+#: 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:84
+#: mediagoblin/edit/forms.py:94
msgid "The title can't be empty"
-msgstr ""
+msgstr "Название не может быть пустым"
-#: mediagoblin/edit/forms.py:86 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:93
+#: 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:155
+#, python-format
+msgid "You added the attachment %s!"
+msgstr "Вы добавили сопутствующий файл %s!"
+
#: 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:198
+#: mediagoblin/edit/views.py:204
msgid "Profile changes saved"
msgstr "Изменения профиля сохранены"
-#: mediagoblin/edit/views.py:227 mediagoblin/edit/views.py:247
-msgid "Account settings saved"
-msgstr "Настройки учётной записи записаны"
-
-#: mediagoblin/edit/views.py:252
+#: mediagoblin/edit/views.py:241
msgid "Wrong password"
msgstr "Неправильный пароль"
-#: mediagoblin/edit/views.py:287
-#, python-format
-msgid "You already have a collection called \"%s\"!title"
-msgstr "У вас уже есть коллекция «%s»!title"
+#: mediagoblin/edit/views.py:252
+msgid "Account settings saved"
+msgstr "Настройки учётной записи записаны"
-#: mediagoblin/edit/views.py:290
+#: mediagoblin/edit/views.py:286
+msgid "You need to confirm the deletion of your account."
+msgstr "Вам нужно подтвердить, что вы хотите удалить свою учётную запись."
+
+#: 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:326
msgid "A collection with that slug already exists for this user."
msgstr "У этого пользователя уже есть коллекция с такой отличительной частью адреса."
-#: mediagoblin/edit/views.py:307
+#: mediagoblin/edit/views.py:343
msgid "You are editing another user's collection. Proceed with caution."
msgstr "Вы редактируете коллекцию другого пользователя. Будьте осторожны."
@@ -230,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:120
+#: mediagoblin/meddleware/csrf.py:134
+msgid ""
+"CSRF cookie not present. This is most likely the result of a cookie blocker "
+"or somesuch. Make sure to permit the 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 OpenStreetMap"
+msgstr "Посмотреть на OpenStreetMap"
-#: 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 ""
+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 ""
"Confidential - The client can\n"
" make requests to the GNU MediaGoblin instance that can not be\n"
@@ -287,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 required 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: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 "Неправильный формат файла."
@@ -313,80 +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:211 mediagoblin/user_pages/views.py:215
-#, python-format
-msgid "You already have a collection called \"%s\"!"
-msgstr "У вас уже есть коллекция с названием «%s»!"
-
-#: mediagoblin/submit/views.py:215
+#: mediagoblin/submit/views.py:146
#, python-format
msgid "Collection \"%s\" added!"
msgstr "Коллекция «%s» добавлена!"
-#: mediagoblin/templates/mediagoblin/404.html:24
-msgid "Image of 404 goblin stressing out"
-msgstr "Изображение 404 нервничающего гоблина"
-
-#: mediagoblin/templates/mediagoblin/404.html:25
-msgid "Oops!"
-msgstr "Ой!"
-
-#: mediagoblin/templates/mediagoblin/404.html:26
-msgid "There doesn't seem to be a page at this address. Sorry!"
-msgstr "Кажется, такой страницы не существует. Уж извините!"
-
-#: mediagoblin/templates/mediagoblin/404.html:28
-msgid ""
-"If you're sure the address is correct, maybe the page you're looking for has"
-" been moved or deleted."
-msgstr "Возможно, страница, которую вы ищете, была удалена или переехала."
-
-#: mediagoblin/templates/mediagoblin/base.html:50
-msgid "MediaGoblin logo"
-msgstr "Символ MediaGoblin"
-
-#: mediagoblin/templates/mediagoblin/base.html:60
+#: mediagoblin/templates/mediagoblin/base.html:64
msgid "Verify your email!"
msgstr "Подтвердите ваш адрес электронной почты!"
-#: mediagoblin/templates/mediagoblin/base.html:66
-msgid "+ Add media"
-msgstr "+ Добавить файл"
-
-#: mediagoblin/templates/mediagoblin/base.html:67
-msgid "+ Add collection"
-msgstr "+ Добавить коллекцию"
-
-#: mediagoblin/templates/mediagoblin/base.html:69
-msgid "View your profile"
-msgstr "Посмотреть свой профиль"
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "log out"
+msgstr "завершение сеанса"
#: mediagoblin/templates/mediagoblin/base.html:70
-msgid "Log out"
-msgstr "Завершение сеанса"
-
-#: mediagoblin/templates/mediagoblin/base.html:75
#: 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:89
-msgid ""
-"Powered by MediaGoblin, a GNU project."
-msgstr "Работает на MediaGoblin, проекте GNU."
+#: mediagoblin/templates/mediagoblin/base.html:79
+#, python-format
+msgid "%(user_name)s's account"
+msgstr "Учётная запись %(user_name)s"
-#: mediagoblin/templates/mediagoblin/base.html:92
+#: 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 MediaGoblin, a GNU project."
+msgstr "Работает на MediaGoblin, проекте GNU."
+
+#: mediagoblin/templates/mediagoblin/base.html:125
#, python-format
msgid ""
"Released under the Source code available."
msgstr "Он опубликован на условиях AGPL. Доступны исходные тексты."
-#: mediagoblin/templates/mediagoblin/root.html:24
+#: mediagoblin/templates/mediagoblin/error.html:24
+msgid "Image of goblin stressing out"
+msgstr "Изображение нервничающего гоблина"
+
+#: mediagoblin/templates/mediagoblin/root.html:31
msgid "Explore"
msgstr "Смотреть"
-#: mediagoblin/templates/mediagoblin/root.html:26
+#: mediagoblin/templates/mediagoblin/root.html:33
msgid "Hi there, welcome to this MediaGoblin site!"
msgstr "Привет! Добро пожаловать на наш MediaGoblin’овый сайт!"
-#: mediagoblin/templates/mediagoblin/root.html:28
+#: mediagoblin/templates/mediagoblin/root.html:35
msgid ""
"This site is running MediaGoblin, an "
"extraordinarily great piece of media hosting software."
msgstr "Этот сайт работает на MediaGoblin, необыкновенно замечательном ПО для хостинга мультимедийных файлов."
-#: mediagoblin/templates/mediagoblin/root.html:29
+#: 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:31
+#: mediagoblin/templates/mediagoblin/root.html:38
msgid "Don't have one yet? It's easy!"
msgstr "У вас её ещё нет? Не проблема!"
-#: mediagoblin/templates/mediagoblin/root.html:32
+#: mediagoblin/templates/mediagoblin/root.html:39
#, python-format
msgid ""
"Create an account at this site\n"
@@ -426,17 +484,10 @@ msgid ""
" Set up MediaGoblin on your own server"
msgstr "Создайте учётную запись на этом сайте\n или\n установите MediaGoblin на собственный сервер"
-#: mediagoblin/templates/mediagoblin/root.html:40
+#: mediagoblin/templates/mediagoblin/root.html:47
msgid "Most recent media"
msgstr "Самые новые файлы"
-#: 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/admin/panel.html:29
msgid ""
"Here you can track the state of media being processed on this instance."
@@ -539,47 +590,85 @@ 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: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:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
+msgid "Add attachment"
+msgstr "Добавить сопутствующий файл"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr "Отмена"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
+#: mediagoblin/templates/mediagoblin/edit/edit.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
+#: 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
msgid "Editing %(media_title)s"
msgstr "Редактирование %(media_title)s"
-#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: 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:53
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Cancel"
-msgstr "Отмена"
-
-#: mediagoblin/templates/mediagoblin/edit/edit.html:43
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
-msgid "Save changes"
-msgstr "Сохранить изменения"
-
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
#, python-format
msgid "Changing %(username)s's account settings"
msgstr "Настройка учётной записи %(username)s"
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html: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"
@@ -594,13 +683,12 @@ 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/image.html:23
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
msgstr "Скачать"
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:27
msgid "Original"
msgstr "Оригинал"
@@ -619,7 +707,7 @@ msgid ""
msgstr "Вы можете скачать современный браузер, \n\tспособный проиграть это аудио, с \n\t http://getfirefox.com!"
#: 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 "Исходный файл"
@@ -627,21 +715,71 @@ msgstr "Исходный файл"
msgid "WebM file (Vorbis codec)"
msgstr "WebM‐файл (кодек — Vorbis)"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
-msgid ""
-"Sorry, this video will not work because \n"
-"\t your web browser does not support HTML5 \n"
-"\t video."
-msgstr "Сожалеем, этот ролик не проиграется, ⏎\n» потому что ваш браузер не поддерживает ⏎\n» видео в соответствии со стандартом HTML5."
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:87
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:93
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:99
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:105
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:65
+#, python-format
+msgid "Image for %(media_title)s"
+msgstr "Изображение «%(media_title)s»"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:43
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:112
+msgid "Toggle Rotate"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:113
+msgid "Perspective"
+msgstr "Перспектива"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:116
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
+msgid "Front"
+msgstr "Спереди"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:121
+msgid "Top"
+msgstr "Сверху"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:124
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:125
+msgid "Side"
+msgstr "Сбоку"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:130
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
+msgid "WebGL"
+msgstr "WebGL"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:138
+msgid "Download model"
+msgstr "Скачать модель"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
+msgid "File Format"
+msgstr "Формат файла"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
+msgid "Object Height"
+msgstr "Высота объекта"
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr "Сожалеем, этот ролик не проиграется, ⏎\nпотому что ваш браузер не поддерживает ⏎\nвидео в соответствии со стандартом HTML5."
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:47
msgid ""
"You can get a modern web browser that \n"
-"\t can play this video at \n"
-"\t http://getfirefox.com!"
-msgstr "Вы можете скачать современный браузер,\n» способный воспроизводить это видео, с \n» http://getfirefox.com!"
+" can play this video at \n"
+" http://getfirefox.com!"
+msgstr "Вы можете скачать современный браузер, способный воспроизводить это видео, с \n http://getfirefox.com!"
-#: 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)"
@@ -649,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:83
-msgid "Add"
-msgstr "Добавить"
-
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
msgid "Add your media"
@@ -671,43 +803,40 @@ msgid "%(collection_title)s by %(username)s"
msgstr "%(collection_title)s пользователя %(username)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 "Удалить"
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:59
-#, python-format
-msgid ""
-"
"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
-msgid "Attachments"
-msgstr "Сопутствующие файлы"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
-msgid "Add attachment"
-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:52
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
msgstr "Добавление новой коллекции"
@@ -842,74 +957,58 @@ 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:125
-msgid "Change account settings"
-msgstr "Изменить настройки учётной записи"
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:124
+msgid "Browse collections"
+msgstr "Смотреть коллекции"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:138
+#: 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:151
+#: 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
-msgid "Add media"
-msgstr "Добавить файлы"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:163
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:87
-#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:72
+#: 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 "Пока что тут файлов нет…"
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:39
-#, python-format
-msgid ""
-" \n"
-" %(note)s"
-msgstr ""
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
+msgid "(remove)"
+msgstr "(исключить)"
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:47
-#, python-format
-msgid " (remove)"
-msgstr ""
+#: 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)"
-msgstr "В %(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 "значок ленты"
#: 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:38
-#, python-format
-msgid "View on OpenStreetMap"
-msgstr "Посмотреть на OpenStreetMap"
-
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
msgstr "Все права сохранены"
@@ -940,23 +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/user_pages/forms.py:28
+#: mediagoblin/tools/response.py:35
+msgid "Oops!"
+msgstr "Ой!"
+
+#: mediagoblin/tools/response.py:36
+msgid "An error occured"
+msgstr "Произошла ошибка"
+
+#: mediagoblin/tools/response.py:51
+msgid "Operation not allowed"
+msgstr "Операция не позволяется"
+
+#: mediagoblin/tools/response.py:52
+msgid ""
+"Sorry Dave, I can't let you do that!
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:60
+msgid ""
+"There doesn't seem to be a page at this address. Sorry!
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:23
+msgid "Comment"
+msgstr "Комментировать"
+
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use Markdown for"
+" formatting."
+msgstr "Для разметки можете использовать язык Markdown."
+
+#: 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 "Примечание"
@@ -964,74 +1104,69 @@ msgstr "Примечание"
msgid "commented on your post"
msgstr "оставил комментарий к вашему файлу"
-#: mediagoblin/user_pages/views.py:161
+#: mediagoblin/user_pages/views.py:166
msgid "Oops, your comment was empty."
msgstr "Ой, ваш комментарий был пуст."
-#: mediagoblin/user_pages/views.py:167
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
msgstr "Ваш комментарий размещён!"
-#: mediagoblin/user_pages/views.py:235
+#: 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:243
+#: mediagoblin/user_pages/views.py:248
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr "«%s» — уже в коллекции «%s»"
-#: mediagoblin/user_pages/views.py:258
+#: mediagoblin/user_pages/views.py:264
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr "«%s» добавлено в коллекцию «%s»"
-#: mediagoblin/user_pages/views.py:266
-msgid "Please check your entries and try again."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:297
-msgid ""
-"Some of the files with this entry seem to be missing. Deleting anyway."
-msgstr "Некоторые файлы от этой записи не обнаружены. Всё равно удаляем."
-
-#: mediagoblin/user_pages/views.py:302
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
msgstr "Вы удалили файл."
-#: mediagoblin/user_pages/views.py:309
+#: 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:317
+#: 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:379
+#: mediagoblin/user_pages/views.py:375
msgid "You deleted the item from the collection."
msgstr "Вы исключили файл из коллекции."
-#: mediagoblin/user_pages/views.py:383
+#: 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:393
+#: 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:426
+#: mediagoblin/user_pages/views.py:422
#, python-format
msgid "You deleted the collection \"%s\""
msgstr "Вы удалили коллекцию «%s»"
-#: mediagoblin/user_pages/views.py:433
+#: 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:443
+#: 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 48a3873f..bc92bb13 100644
Binary files a/mediagoblin/i18n/sk/LC_MESSAGES/mediagoblin.mo and b/mediagoblin/i18n/sk/LC_MESSAGES/mediagoblin.mo differ
diff --git a/mediagoblin/i18n/sk/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/sk/LC_MESSAGES/mediagoblin.po
index 4d59ccd5..07932b77 100644
--- a/mediagoblin/i18n/sk/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/sk/LC_MESSAGES/mediagoblin.po
@@ -1,16 +1,20 @@
# 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 , 2013.
# Martin Zatroch , 2012.
+# Morten Juhl-Johansen Zölde-Fejér , 2012.
+# Olle Jonsson , 2012.
+# Tanja Trudslev , 2012.
# , 2011-2012.
msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://issues.mediagoblin.org/\n"
-"POT-Creation-Date: 2012-09-24 14:01-0500\n"
-"PO-Revision-Date: 2012-09-24 18:57+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 \n"
"Language-Team: LANGUAGE \n"
"MIME-Version: 1.0\n"
@@ -20,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
-msgid "Username"
-msgstr "Prihlasovacie meno"
+#: 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:30 mediagoblin/auth/forms.py:45
+#: 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 "Používateľské meno"
+
+#: mediagoblin/auth/forms.py:56 mediagoblin/auth/forms.py:71
msgid "Password"
msgstr "Heslo"
-#: mediagoblin/auth/forms.py:34
+#: mediagoblin/auth/forms.py:60
msgid "Email address"
-msgstr "E-mailová adresa"
+msgstr "Email adresse"
-#: mediagoblin/auth/forms.py:51
+#: mediagoblin/auth/forms.py:78
msgid "Username or email"
msgstr "Používateľské meno alebo e-mailová adresa"
-#: mediagoblin/auth/forms.py:58
-msgid "Incorrect input"
-msgstr "Nesprávny vstup"
-
-#: mediagoblin/auth/views.py:55
+#: mediagoblin/auth/views.py:54
msgid "Sorry, registration is disabled on this instance."
-msgstr "Prepáč, registrácia na tejto inštancii nie je povolená."
+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 "Prepáč, rovnaké prihlasovacie meno už niekto používa."
+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 "Prepáč, používateľ s rovnakou e-mailovou adresou už existuje."
+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 "Tvoja e-mailová adresa bola úspešne overená. Môžeš sa hneď prihlásiť, upraviť svoj profil a vkladať výtvory! "
+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 "Nesprávny overovací kľúč alebo používateľský identifikátor"
+msgstr "Overovací kľúč, prípadne používateľské meno je nesprávne."
+
+#: mediagoblin/auth/views.py:198
+msgid "You must be logged in so we know who to send the email to!"
+msgstr "Je potrebné prihlásiť sa, aby sme vedeli kam máme e-mail zaslať!"
#: mediagoblin/auth/views.py:206
-msgid "You must be logged in so we know who to send the email to!"
-msgstr "Aby sme ti mohli zaslať e-mailovú správu, je potrebné byť prihláseným!"
-
-#: mediagoblin/auth/views.py:214
msgid "You've already verified your email address!"
-msgstr "Tvoja e-mailová adresa už bola raz overená!"
+msgstr "Už máš overenú e-mailovú adresu!"
-#: mediagoblin/auth/views.py:227
+#: mediagoblin/auth/views.py:219
msgid "Resent your verification email."
-msgstr "Opätovne zaslať overovaciu správu na e-mail."
+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 "E-mailová správa s inštrukciami pre zmenu tvojho hesla bola odoslaná."
+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 "Nebolo ti možné zaslať e-mailovú správu ohľadom obnovy hesla, nakoľko je tvoje používateľské meno buď neaktívne alebo e-mailová adresa účtu neoverená."
+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:285
-msgid "Couldn't find someone with that username or email."
-msgstr "Nebolo možné nájsť nikoho s týmto používateľským menom alebo e-mailovou adresou."
-
-#: mediagoblin/auth/views.py:333
+#: mediagoblin/auth/views.py:328
msgid "You can now log in using your new password."
-msgstr "Teraz sa môžeš prihlásiť so svojim novým heslom."
+msgstr "Už môžeš použiť nové heslo pri prihlasovaní."
-#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:83
+#: 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 "Nadpis"
+msgstr "Titulok"
#: mediagoblin/edit/forms.py:28 mediagoblin/submit/forms.py:31
msgid "Description of this work"
-msgstr "Charakteristika tohto diela"
+msgstr "Popis výtvoru"
#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:52
-#: mediagoblin/edit/forms.py:87 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"
" \n"
" Markdown for formatting."
-msgstr "Môžeš využiť\n \n Markdown pri formátovaní."
+msgstr "Môžeš využiť\n \n Markdown pre formátovanie príspevku."
#: mediagoblin/edit/forms.py:33 mediagoblin/submit/forms.py:36
msgid "Tags"
-msgstr "Značky"
+msgstr "Štítky"
#: mediagoblin/edit/forms.py:35 mediagoblin/submit/forms.py:38
msgid "Separate tags by commas."
-msgstr "Oddeľ jednotlivé štítky čiarkami."
+msgstr "Oddeľ štítky pomocou čiarky."
-#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:91
+#: 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:92
+#: 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"
@@ -132,7 +150,7 @@ 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 "Titulná časť adresy tohto výtvoru. Väčšinou nie je potrebná zmena."
+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
@@ -149,7 +167,7 @@ msgstr "Webstránka"
#: mediagoblin/edit/forms.py:58
msgid "This address contains errors"
-msgstr "Adresa obsahuje chyby"
+msgstr "Daná adresa obsahuje chybu"
#: mediagoblin/edit/forms.py:63
msgid "Old password"
@@ -157,72 +175,93 @@ msgstr "Staré heslo"
#: mediagoblin/edit/forms.py:64
msgid "Enter your old password to prove you own this account."
-msgstr "Potvrď, že vlastníš tento účet zadaním svojho starého hesla."
+msgstr "Vlož svoje staré heslo na dôkaz toho, že vlastníš daný účet."
#: mediagoblin/edit/forms.py:67
msgid "New password"
msgstr "Nové heslo"
-#: mediagoblin/edit/forms.py:72
+#: 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:82
msgid "Email me when others comment on my media"
-msgstr "Zaslať mi e-mail, keď ostatní pridajú komentár k médiu"
+msgstr "Zašli mi e-mail keď ostatní okomentujú môj výtvor"
-#: mediagoblin/edit/forms.py:84
+#: mediagoblin/edit/forms.py:94
msgid "The title can't be empty"
-msgstr ""
+msgstr "Titulok nesmie byť prázdny."
-#: mediagoblin/edit/forms.py:86 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 "Popis danej kolekcie"
-#: mediagoblin/edit/forms.py:93
+#: mediagoblin/edit/forms.py:103
msgid ""
"The title part of this collection's address. You usually don't need to "
"change this."
-msgstr ""
+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 "Upravuješ médiá niekoho iného. Dbaj na to."
+msgstr "Upravuješ výtvory iného používateľa. Pristupuj zodpovedne. "
+
+#: mediagoblin/edit/views.py:155
+#, python-format
+msgid "You added the attachment %s!"
+msgstr "Príloha %s pridaná!"
#: 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 "Upravuješ používateľský profil. Dbaj na to."
+msgstr "Upravuješ profil iného používateľa. Pristupuj zodpovedne. "
-#: mediagoblin/edit/views.py:198
+#: mediagoblin/edit/views.py:204
msgid "Profile changes saved"
-msgstr "Úpravy profilu uložené"
+msgstr "Zmeny v profile uložené"
-#: mediagoblin/edit/views.py:227 mediagoblin/edit/views.py:247
-msgid "Account settings saved"
-msgstr "Nastavenia účtu uložené"
-
-#: mediagoblin/edit/views.py:252
+#: mediagoblin/edit/views.py:241
msgid "Wrong password"
msgstr "Nesprávne heslo"
-#: mediagoblin/edit/views.py:288 mediagoblin/submit/views.py:211
-#: mediagoblin/user_pages/views.py:215
+#: mediagoblin/edit/views.py:252
+msgid "Account settings saved"
+msgstr "Nastavenia účtu uložené"
+
+#: 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:322 mediagoblin/submit/views.py:142
+#: mediagoblin/user_pages/views.py:214
#, python-format
msgid "You already have a collection called \"%s\"!"
-msgstr ""
+msgstr "Už máš kolekciu nazvanú ako \"%s\"!"
-#: mediagoblin/edit/views.py:292
+#: mediagoblin/edit/views.py:326
msgid "A collection with that slug already exists for this user."
-msgstr ""
+msgstr "Kolekcia s týmto štítkom už máš."
-#: mediagoblin/edit/views.py:309
+#: mediagoblin/edit/views.py:343
msgid "You are editing another user's collection. Proceed with caution."
-msgstr ""
+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 "Nemôžem priradiť tému.. žiadny set témy\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"
@@ -230,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/media_types/__init__.py:60
-#: mediagoblin/media_types/__init__.py:120
+#: mediagoblin/meddleware/csrf.py:134
+msgid ""
+"CSRF cookie not present. This is most likely the result of a cookie blocker "
+"or somesuch. Make sure to permit the settings of cookies for this "
+"domain."
+msgstr "CSRF \"cookie\" neprítomný. Toto vidíš najskôr ako výsledok blokovania \"cookie\" súborov a pod. Uisti sa, že máš povolené ukladanie \"cookies\" pre danú doménu."
+
+#: mediagoblin/media_types/__init__.py:61
+#: mediagoblin/media_types/__init__.py:102
msgid "Sorry, I don't support that file type :("
-msgstr "Prepáč, nepodporujem tento súborový typ =("
+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 ""
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
+msgid "Location"
+msgstr "Poloha"
-#: 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 OpenStreetMap"
+msgstr "Zobraziť na OpenStreetMap"
+
+#: mediagoblin/plugins/oauth/forms.py:29
+msgid "Allow"
+msgstr "Povoliť"
#: mediagoblin/plugins/oauth/forms.py:30
-msgid "Allow"
-msgstr ""
-
-#: mediagoblin/plugins/oauth/forms.py:31
msgid "Deny"
-msgstr ""
+msgstr "Zakázať"
+
+#: mediagoblin/plugins/oauth/forms.py:34
+msgid "Name"
+msgstr "Meno"
#: mediagoblin/plugins/oauth/forms.py:35
-msgid "Name"
-msgstr ""
+msgid "The name of the OAuth client"
+msgstr "Meno v rámci OAuth klienta"
#: mediagoblin/plugins/oauth/forms.py:36
-msgid "The name of the OAuth client"
-msgstr ""
-
-#: mediagoblin/plugins/oauth/forms.py:37
msgid "Description"
-msgstr ""
+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 ""
+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 ""
+msgstr "Typ"
-#: mediagoblin/plugins/oauth/forms.py:46
+#: mediagoblin/plugins/oauth/forms.py:45
msgid ""
"Confidential - The client can\n"
" make requests to the GNU MediaGoblin instance that can not be\n"
@@ -287,146 +334,88 @@ msgid ""
" Public - The client can't make confidential\n"
" requests to the GNU MediaGoblin instance (e.g. client-side\n"
" JavaScript client)."
-msgstr ""
+msgstr "Dôverné - 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). \nVerejné - 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 ""
+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 required for public clients."
-msgstr ""
+msgstr "Presmerovacie URI pre aplikácie, toto pole\nje požadované 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 ""
+msgstr "Dané pole je požadované pre verejných klientov."
#: mediagoblin/plugins/oauth/views.py:59
msgid "The client {0} has been registered!"
-msgstr ""
+msgstr "Klient {0} bol registrovaný!"
-#: mediagoblin/processing/__init__.py:138
+#: mediagoblin/plugins/oauth/templates/oauth/client/connections.html:22
+msgid "OAuth client connections"
+msgstr "OAuth klientské spojenia"
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/list.html:22
+msgid "Your OAuth clients"
+msgstr "Tvoji autorizovaní OAuth klienti"
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/register.html:29
+#: mediagoblin/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 "Odovzdaný nesprávny súbor pre daný typ média."
+msgstr "Nesprávny typ súboru pre dané médium."
#: mediagoblin/submit/forms.py:26
msgid "File"
msgstr "Súbor"
-#: mediagoblin/submit/views.py:57
+#: mediagoblin/submit/views.py:51
msgid "You must provide a file."
msgstr "Musíš poskytnúť súbor."
-#: mediagoblin/submit/views.py:164
+#: mediagoblin/submit/views.py:97
msgid "Woohoo! Submitted!"
-msgstr "Juchú! Úspešne vložené!"
+msgstr "Skvelé! Pridané!"
-#: mediagoblin/submit/views.py:215
+#: mediagoblin/submit/views.py:146
#, python-format
msgid "Collection \"%s\" added!"
-msgstr ""
+msgstr "Kolekcia \"%s\" pridaná!"
-#: mediagoblin/templates/mediagoblin/404.html:24
-msgid "Image of 404 goblin stressing out"
-msgstr "Obrázok stresujúceho goblina pri chybovom kóde č. 404"
-
-#: mediagoblin/templates/mediagoblin/404.html:25
-msgid "Oops!"
-msgstr "Ajaj!"
-
-#: mediagoblin/templates/mediagoblin/404.html:26
-msgid "There doesn't seem to be a page at this address. Sorry!"
-msgstr "Na danej adrese sa stránka zrejme nenachádza. Prepáč!"
-
-#: mediagoblin/templates/mediagoblin/404.html:28
-msgid ""
-"If you're sure the address is correct, maybe the page you're looking for has"
-" been moved or deleted."
-msgstr "Ak vieš s istotou, že adresa je správna, tak najskôr bola hľadaná stánka presunutá alebo zmazaná."
-
-#: mediagoblin/templates/mediagoblin/base.html:50
-msgid "MediaGoblin logo"
-msgstr "MediaGoblin logo"
-
-#: mediagoblin/templates/mediagoblin/base.html:60
+#: mediagoblin/templates/mediagoblin/base.html:64
msgid "Verify your email!"
msgstr "Over si e-mailovú adresu!"
-#: mediagoblin/templates/mediagoblin/base.html:66
-msgid "+ Add media"
-msgstr "+ Pridať výtvor"
-
-#: mediagoblin/templates/mediagoblin/base.html:67
-msgid "+ Add collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:69
-msgid "View your profile"
-msgstr "Zobraziť svoj profil"
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "log out"
+msgstr "odhlásiť sa"
#: mediagoblin/templates/mediagoblin/base.html:70
-msgid "Log out"
-msgstr "Odhlásiť sa"
-
-#: mediagoblin/templates/mediagoblin/base.html:75
#: 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ásenie"
+msgstr "Prihlásiť sa"
-#: mediagoblin/templates/mediagoblin/base.html:89
-msgid ""
-"Powered by MediaGoblin, a GNU project."
-msgstr "Poháňa nás MediaGoblin, súčasť projektu GNU."
-
-#: mediagoblin/templates/mediagoblin/base.html:92
+#: mediagoblin/templates/mediagoblin/base.html:79
#, python-format
-msgid ""
-"Released under the AGPL. Source code available."
-msgstr "Vydané pod AGPL. Zdrojový kód dostupný."
+msgid "%(user_name)s's account"
+msgstr "Účet používateľa %(user_name)s"
-#: mediagoblin/templates/mediagoblin/root.html:24
-msgid "Explore"
-msgstr "Preskúmať"
-
-#: mediagoblin/templates/mediagoblin/root.html:26
-msgid "Hi there, welcome to this MediaGoblin site!"
-msgstr "Ahoj, vitaj na tejto MediaGoblin stránke!"
-
-#: mediagoblin/templates/mediagoblin/root.html:28
-msgid ""
-"This site is running MediaGoblin, an "
-"extraordinarily great piece of media hosting software."
-msgstr "Táto stránka používa MediaGoblin, výnimočne skvelý kus softvéru na hostovanie médií."
-
-#: mediagoblin/templates/mediagoblin/root.html:29
-msgid ""
-"To add your own media, place comments, and more, you can log in with your "
-"MediaGoblin account."
-msgstr "Pre umiestnenie vlastných médií, pridanie komentárov a viac, sa môžeš prihlásiť so svojim MediaGoblin účtom."
-
-#: mediagoblin/templates/mediagoblin/root.html:31
-msgid "Don't have one yet? It's easy!"
-msgstr "Ešte žiaden nemáš? Je to jednoduché!"
-
-#: mediagoblin/templates/mediagoblin/root.html:32
-#, python-format
-msgid ""
-"Create an account at this site\n"
-" or\n"
-" Set up MediaGoblin on your own server"
-msgstr "Vytvoriť účet na tejto stránke\n alebo\n Založiť MediaGoblin na vlastnom serveri"
-
-#: mediagoblin/templates/mediagoblin/root.html:40
-msgid "Most recent media"
-msgstr "Najčerstvejšie výtvory"
+#: mediagoblin/templates/mediagoblin/base.html:86
+msgid "Change account settings"
+msgstr "Zmeniť nastavenia účtu"
+#: 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
@@ -434,10 +423,79 @@ msgstr "Najčerstvejšie výtvory"
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:99
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:41
+msgid "Create new collection"
+msgstr "Vytvoriť novú kolekciu"
+
+#: mediagoblin/templates/mediagoblin/base.html:122
+#, python-format
+msgid ""
+"Powered by MediaGoblin, a GNU project."
+msgstr "Poháňa nás MediaGoblin, súčasť projektu GNU."
+
+#: mediagoblin/templates/mediagoblin/base.html:125
+#, python-format
+msgid ""
+"Released under the AGPL. Source code available."
+msgstr "Uvoľnené pod AGPL. Zdrojový kód 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:31
+msgid "Explore"
+msgstr "Preskúmať"
+
+#: mediagoblin/templates/mediagoblin/root.html:33
+msgid "Hi there, welcome to this MediaGoblin site!"
+msgstr "Ahoj, vitaj na tejto MediaGoblin stránke!"
+
+#: mediagoblin/templates/mediagoblin/root.html:35
+msgid ""
+"This site is running MediaGoblin, an "
+"extraordinarily great piece of media hosting software."
+msgstr "Táto stránka používa MediaGoblin, výnimočne skvelý kus softvéru na hostovanie médií."
+
+#: 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 "Pre pridanie vlastných výtvorov, komentárov a viac.. sa prihlás zo svojim MediaGoblin účtom."
+
+#: 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:39
+#, python-format
+msgid ""
+"Create an account at this site\n"
+" or\n"
+" Set up MediaGoblin on your own server"
+msgstr "Vytvoriť účet na tejto stránke\n alebo\n Založiť MediaGoblin na vlastnom serveri"
+
+#: mediagoblin/templates/mediagoblin/root.html:47
+msgid "Most recent media"
+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
@@ -447,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
@@ -457,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"
@@ -471,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
@@ -484,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
@@ -506,7 +564,7 @@ msgstr "Prihlásenie zlyhalo!"
#: mediagoblin/templates/mediagoblin/auth/login.html:44
msgid "Don't have an account yet?"
-msgstr "Ešte nemáš účet?"
+msgstr "Ešte stále nemáš účet?"
#: mediagoblin/templates/mediagoblin/auth/login.html:45
msgid "Create one here!"
@@ -519,7 +577,7 @@ msgstr "Zabudnuté heslo?"
#: mediagoblin/templates/mediagoblin/auth/register.html:28
#: mediagoblin/templates/mediagoblin/auth/register.html:36
msgid "Create an account!"
-msgstr "Vytvoriť účet!"
+msgstr "Opret en konto!"
#: mediagoblin/templates/mediagoblin/auth/register.html:40
msgid "Create"
@@ -536,50 +594,88 @@ 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: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:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
+msgid "Add attachment"
+msgstr "Pridať prílohu"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr "Zrušiť"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
+#: mediagoblin/templates/mediagoblin/edit/edit.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:40
+msgid "Save changes"
+msgstr "Uložiť zmeny"
+
+#: mediagoblin/templates/mediagoblin/edit/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
#, python-format
msgid "Editing %(media_title)s"
msgstr "Úprava %(media_title)s"
-#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: 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:53
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Cancel"
-msgstr "Zrušiť"
-
-#: mediagoblin/templates/mediagoblin/edit/edit.html:43
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
-msgid "Save changes"
-msgstr "Uložiť zmeny"
-
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
#, python-format
msgid "Changing %(username)s's account settings"
msgstr "Mením nastavenia účtu používateľa %(username)s"
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html: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 ""
+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 "Úprava profilu, ktorý vlastní %(username)s"
+msgstr "Úprava profilu, ktorý vlastní %(username)s "
#: mediagoblin/templates/mediagoblin/listings/collection.html:30
#: mediagoblin/templates/mediagoblin/listings/collection.html:35
@@ -591,13 +687,12 @@ 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/image.html:23
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
msgstr "Stiahnuť"
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:27
msgid "Original"
msgstr "Originál"
@@ -616,7 +711,7 @@ msgid ""
msgstr "Môžeš získať moderný prehliadač, ktorý\n\ttento zvuk hravo prehrá \n\t http://getfirefox.com!"
#: 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"
@@ -624,33 +719,77 @@ msgstr "Originálny súbor"
msgid "WebM file (Vorbis codec)"
msgstr "WebM súbor (Vorbis kodek)"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
-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» tvoj webový prehliadač nepodporuje HTML5 \n» video."
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:87
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:93
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:99
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:105
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:65
+#, python-format
+msgid "Image for %(media_title)s"
+msgstr "Obrázok pre %(media_title)s"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:43
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:112
+msgid "Toggle Rotate"
+msgstr "Zapnúť rotáciu"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:113
+msgid "Perspective"
+msgstr "Perspektíva"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:116
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
+msgid "Front"
+msgstr "Čelo"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:121
+msgid "Top"
+msgstr "Vrch"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:124
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:125
+msgid "Side"
+msgstr "Strana"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:130
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
+msgid "WebGL"
+msgstr "WebGL"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:138
+msgid "Download model"
+msgstr "Stiahnuť model"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
+msgid "File Format"
+msgstr "Súborový formát"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
+msgid "Object Height"
+msgstr "Výška objektu"
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr "Prepáč, tento video súbor nepôjde prehrať, \n\tnakoľko tvoj prehliadač nepodporuje HTML5 \n\tvideo."
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:47
msgid ""
"You can get a modern web browser that \n"
-"\t can play this video at \n"
-"\t http://getfirefox.com!"
-msgstr "Môžeš získať moderný prehliadač, ktorý \n» vie prehrať toto video na \n» http://getfirefox.com!"
+" can play this video at \n"
+" http://getfirefox.com!"
+msgstr "Môžeš získať moderný prehliadač, ktorý\n\ttento video súbor hravo prehrá na \n\t http://getfirefox.com!"
-#: 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)"
#: 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:83
-msgid "Add"
-msgstr "Pridať"
+msgstr "Pridať kolekciu"
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
@@ -660,126 +799,109 @@ msgstr "Pridaj svoj výtvor"
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:30
#, python-format
msgid "%(collection_title)s (%(username)s's collection)"
-msgstr ""
+msgstr "%(collection_title)s (kolekcia používateľa %(username)s) "
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:39
#, python-format
msgid "%(collection_title)s by %(username)s"
-msgstr ""
+msgstr "%(collection_title)s od %(username)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 "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ť"
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:59
-#, python-format
-msgid ""
-"
\n"
-" %(collection_description)s\n"
-"
"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:30
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
#, python-format
msgid "Really delete %(title)s?"
msgstr "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:50
-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 ""
+msgstr "Skutočne odstrániť %(media_title)s z %(collection_title)s?"
-#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:54
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:53
msgid "Remove"
-msgstr ""
+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 "%(username)s's collections"
+msgstr "Kolekcie používateľa %(username)s"
#: 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 ""
+"%(username)s's media with tag %(tag)s"
+msgstr "Výtvory používateľa %(username)s zo štítkom %(tag)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
#, python-format
msgid "%(username)s's media"
msgstr "Výtvory, ktoré vlastní %(username)s"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
#, python-format
msgid "❖ Browsing media by %(username)s"
-msgstr "❖ Prezeranie výtvorov podľa %(username)s"
+msgstr "❖ Prehliadanie výtvorov od %(username)s"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:67
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
-#, python-format
-msgid "Image for %(media_title)s"
-msgstr "Obrázok pre %(media_title)s"
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:94
+msgid "Add a comment"
+msgstr "Pridať komentár"
#: mediagoblin/templates/mediagoblin/user_pages/media.html:102
-msgid "Add a comment"
-msgstr "Pridaj komentár"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:109
-msgid ""
-"You can use Markdown for"
-" formatting."
-msgstr "Môžeš využiť Markdown pre formátovanie."
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:113
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 ""
"
Added on
\n"
"
%(date)s
"
msgstr "
Pridané
\n
%(date)s
"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
-msgid "Attachments"
-msgstr "Prílohy"
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
-msgid "Add attachment"
-msgstr "Pridať prílohu"
-
-#: 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 "Pridať “%(media_title)s” do kolekcie"
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
-msgstr ""
+msgstr "+"
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
-msgstr ""
+msgstr "Pridať novú kolekciu"
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
msgid ""
@@ -798,114 +920,98 @@ msgstr "Profil, ktorý vlastní %(username)s"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:43
msgid "Sorry, no such user found."
-msgstr "Prepáč, zadané používateľské meno nenájdené."
+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 "Takmer hotovo! Ešte ti musí byť aktivovaný účet."
+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 "E-mailová správa s popisom ako to spraviť, by mal zanedlho doraziť."
+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 "V prípade, že sa tak nestalo:"
+msgstr "V prípade, že nie:"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:65
msgid "Resend verification email"
-msgstr "Opätovne zaslať overovaciu správu na e-mail"
+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 log in and resend it."
-msgstr "Pokiaľ si to ty, ale už nemáš overovaciu e-mailovú správu, tak sa môžeš prihlásiť a preposlať si ju."
+msgstr "Pokiaľ si to ty, ale už nemáš uloženú kópiu overovacej správy, tak sa môžeš prihlásiť a preposlať si ju."
#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
msgid "Here's a spot to tell others about yourself."
-msgstr "Miesto, kde smieš povedať čo to o sebe ostatným."
+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 "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:125
-msgid "Change account settings"
-msgstr "Zmeniť nastavenia účtu"
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:124
+msgid "Browse collections"
+msgstr "Prehliadať kolekcie"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:138
+#: 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:151
+#: 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
-msgid "Add media"
-msgstr "Pridať výtvor"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:163
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:87
-#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:72
+#: 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:39
-#, python-format
-msgid ""
-" \n"
-" %(note)s"
-msgstr ""
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
+msgid "(remove)"
+msgstr "(odstrániť)"
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:47
-#, python-format
-msgid " (remove)"
-msgstr ""
+#: mediagoblin/templates/mediagoblin/utils/collections.html:21
+msgid "Collected in"
+msgstr "Zahrnuté"
-#: mediagoblin/templates/mediagoblin/utils/collections.html:20
-#, python-format
-msgid "In collections (%(collected)s)"
-msgstr ""
+#: 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:38
-#, python-format
-msgid "View on OpenStreetMap"
-msgstr "Zobraziť na OpenStreetMap"
+msgstr "Atom čítačka"
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
@@ -937,98 +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/user_pages/forms.py:28
+#: mediagoblin/tools/response.py:35
+msgid "Oops!"
+msgstr "Hopla!"
+
+#: mediagoblin/tools/response.py:36
+msgid "An error occured"
+msgstr "Vyskytla sa chyba"
+
+#: mediagoblin/tools/response.py:51
+msgid "Operation not allowed"
+msgstr "Nepovolená operácia"
+
+#: mediagoblin/tools/response.py:52
+msgid ""
+"Sorry Dave, I can't let you do that!
You have tried to perform a "
+"function that you are not allowed to. Have you been trying to delete all "
+"user accounts again?"
+msgstr "Prepáč Človeče, toto nesmieš!
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:60
+msgid ""
+"There doesn't seem to be a page at this address. Sorry!
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áč!
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:23
+msgid "Comment"
+msgstr "Komentár"
+
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use Markdown for"
+" formatting."
+msgstr "Môžeš využiť Markdown 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
-msgid "I am sure I want to remove this item from the collection"
-msgstr ""
-
#: mediagoblin/user_pages/forms.py:35
-msgid "-- Select --"
-msgstr ""
+msgid "I am sure I want to remove this item from the collection"
+msgstr "Skutočne chcem odstrániť danú položku z kolekcie"
-#: mediagoblin/user_pages/forms.py:37
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
+msgstr "Kolekcia"
+
+#: mediagoblin/user_pages/forms.py:40
+msgid "-- Select --"
+msgstr "-- Vybrať --"
+
+#: mediagoblin/user_pages/forms.py:42
msgid "Include a note"
-msgstr ""
+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:161
+#: 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:167
+#: 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:235
+#: 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 ""
+msgstr "Musíš vybrať, prípadne pridať kolekciu"
-#: mediagoblin/user_pages/views.py:243
+#: mediagoblin/user_pages/views.py:248
#, python-format
msgid "\"%s\" already in collection \"%s\""
-msgstr ""
+msgstr "\"%s\" sa už nachádza v kolekcii \"%s\""
-#: mediagoblin/user_pages/views.py:258
+#: mediagoblin/user_pages/views.py:264
#, python-format
msgid "\"%s\" added to collection \"%s\""
-msgstr ""
+msgstr "\"%s pridané do kolekcie \"%s\""
-#: mediagoblin/user_pages/views.py:266
-msgid "Please check your entries and try again."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:297
-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:302
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
msgstr "Výtvor bol tebou odstránený."
-#: mediagoblin/user_pages/views.py:309
+#: 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:317
+#: 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:375
+msgid "You deleted the item from the collection."
+msgstr "Položka bola z kolekcie odstránená."
#: mediagoblin/user_pages/views.py:379
-msgid "You deleted the item from the collection."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:383
msgid "The item was not removed because you didn't check that you were sure."
-msgstr ""
+msgstr "Položka nebola odstránená, nakoľko políčko potvrdenia nebolo označné."
-#: mediagoblin/user_pages/views.py:393
+#: mediagoblin/user_pages/views.py:389
msgid ""
"You are about to delete an item from another user's collection. Proceed with"
" caution."
-msgstr ""
+msgstr "Chystáš sa odstrániť položku z kolekcie iného používateľa. Pristupuj zodpovedne. "
-#: mediagoblin/user_pages/views.py:426
+#: mediagoblin/user_pages/views.py:422
#, python-format
msgid "You deleted the collection \"%s\""
-msgstr ""
+msgstr "Kolekcia \"%s\" bola úspešne odstránená."
-#: mediagoblin/user_pages/views.py:433
+#: mediagoblin/user_pages/views.py:429
msgid ""
"The collection was not deleted because you didn't check that you were sure."
-msgstr ""
+msgstr "Kolekcia nebola odstránená, nakoľko políčko potrvdenia nebolo označené."
-#: mediagoblin/user_pages/views.py:443
+#: mediagoblin/user_pages/views.py:439
msgid ""
"You are about to delete another user's collection. Proceed with caution."
-msgstr ""
+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 38a19ef6..dd3de81b 100644
Binary files a/mediagoblin/i18n/sl/LC_MESSAGES/mediagoblin.mo and b/mediagoblin/i18n/sl/LC_MESSAGES/mediagoblin.mo differ
diff --git a/mediagoblin/i18n/sl/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/sl/LC_MESSAGES/mediagoblin.po
index d05f1ebc..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-09-24 14:01-0500\n"
-"PO-Revision-Date: 2012-09-24 18:57+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 \n"
"Language-Team: LANGUAGE \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:83
+#: 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:87 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"
" \n"
@@ -119,11 +133,11 @@ msgstr "Oznake"
msgid "Separate tags by commas."
msgstr ""
-#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:91
+#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:101
msgid "Slug"
msgstr "Oznaka"
-#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:92
+#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:102
msgid "The slug can't be empty"
msgstr "Oznaka ne sme biti prazna"
@@ -162,60 +176,81 @@ msgstr ""
msgid "New password"
msgstr ""
-#: mediagoblin/edit/forms.py:72
+#: 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:84
+#: mediagoblin/edit/forms.py:94
msgid "The title can't be empty"
msgstr ""
-#: mediagoblin/edit/forms.py:86 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:93
+#: 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:155
+#, python-format
+msgid "You added the attachment %s!"
+msgstr ""
+
#: 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:198
+#: mediagoblin/edit/views.py:204
msgid "Profile changes saved"
msgstr ""
-#: mediagoblin/edit/views.py:227 mediagoblin/edit/views.py:247
-msgid "Account settings saved"
-msgstr ""
-
-#: mediagoblin/edit/views.py:252
+#: mediagoblin/edit/views.py:241
msgid "Wrong password"
msgstr ""
-#: mediagoblin/edit/views.py:288 mediagoblin/submit/views.py:211
-#: mediagoblin/user_pages/views.py:215
+#: mediagoblin/edit/views.py:252
+msgid "Account settings saved"
+msgstr ""
+
+#: mediagoblin/edit/views.py:286
+msgid "You need to confirm the deletion of your account."
+msgstr ""
+
+#: 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:292
+#: mediagoblin/edit/views.py:326
msgid "A collection with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:309
+#: mediagoblin/edit/views.py:343
msgid "You are editing another user's collection. Proceed with caution."
msgstr ""
@@ -231,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:120
+#: mediagoblin/meddleware/csrf.py:134
+msgid ""
+"CSRF cookie not present. This is most likely the result of a cookie blocker "
+"or somesuch. Make sure to permit the 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 OpenStreetMap"
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 ""
"Confidential - The client can\n"
" make requests to the GNU MediaGoblin instance that can not be\n"
@@ -288,17 +331,17 @@ 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 required 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 ""
@@ -306,7 +349,22 @@ msgstr ""
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."
@@ -314,75 +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/404.html:24
-msgid "Image of 404 goblin stressing out"
-msgstr "Slika napake 404 s paničnim škratom"
-
-#: mediagoblin/templates/mediagoblin/404.html:25
-msgid "Oops!"
-msgstr "Opa!"
-
-#: mediagoblin/templates/mediagoblin/404.html:26
-msgid "There doesn't seem to be a page at this address. Sorry!"
-msgstr "Oprostite. Videti je, da na tem naslovu ni nobene strani."
-
-#: mediagoblin/templates/mediagoblin/404.html:28
-msgid ""
-"If you're sure the address is correct, maybe the page you're looking for has"
-" been moved or deleted."
-msgstr "Če ste v točnost naslova prepričani, je bila iskana stran morda premaknjena ali pa izbrisana."
-
-#: mediagoblin/templates/mediagoblin/base.html:50
-msgid "MediaGoblin logo"
-msgstr "Logotip MediaGoblin"
-
-#: mediagoblin/templates/mediagoblin/base.html:60
+#: mediagoblin/templates/mediagoblin/base.html:64
msgid "Verify your email!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:66
-msgid "+ Add media"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:67
-msgid "+ Add collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:69
-msgid "View your profile"
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "log out"
msgstr ""
#: mediagoblin/templates/mediagoblin/base.html:70
-msgid "Log out"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:75
#: 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:89
-msgid ""
-"Powered by MediaGoblin, a GNU project."
+#: mediagoblin/templates/mediagoblin/base.html:79
+#, python-format
+msgid "%(user_name)s's account"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:92
+#: 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 "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: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 MediaGoblin, a GNU project."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:125
#, python-format
msgid ""
"Released under the Source code available."
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:24
+#: mediagoblin/templates/mediagoblin/error.html:24
+msgid "Image of goblin stressing out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/root.html:31
msgid "Explore"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:26
+#: mediagoblin/templates/mediagoblin/root.html:33
msgid "Hi there, welcome to this MediaGoblin site!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:28
+#: mediagoblin/templates/mediagoblin/root.html:35
msgid ""
"This site is running MediaGoblin, an "
"extraordinarily great piece of media hosting software."
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:29
+#: 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:31
+#: mediagoblin/templates/mediagoblin/root.html:38
msgid "Don't have one yet? It's easy!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:32
+#: mediagoblin/templates/mediagoblin/root.html:39
#, python-format
msgid ""
"Create an account at this site\n"
@@ -422,17 +483,10 @@ msgid ""
" Set up MediaGoblin on your own server"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:40
+#: mediagoblin/templates/mediagoblin/root.html:47
msgid "Most recent media"
msgstr ""
-#: 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/admin/panel.html:29
msgid ""
"Here you can track the state of media being processed on this instance."
@@ -535,47 +589,85 @@ 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: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:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
+msgid "Add attachment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr "Prekliči"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
+#: mediagoblin/templates/mediagoblin/edit/edit.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
+#: 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
msgid "Editing %(media_title)s"
msgstr "Urejanje %(media_title)s"
-#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: 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:53
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Cancel"
-msgstr "Prekliči"
-
-#: mediagoblin/templates/mediagoblin/edit/edit.html:43
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
-msgid "Save changes"
-msgstr "Shrani spremembe"
-
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
#, python-format
msgid "Changing %(username)s's account settings"
msgstr ""
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html: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"
@@ -590,13 +682,12 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:23
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
msgstr ""
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:27
msgid "Original"
msgstr ""
@@ -615,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 ""
@@ -623,21 +714,71 @@ msgstr ""
msgid "WebM file (Vorbis codec)"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
-msgid ""
-"Sorry, this video will not work because \n"
-"\t your web browser does not support HTML5 \n"
-"\t video."
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:87
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:93
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:99
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:105
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:65
+#, python-format
+msgid "Image for %(media_title)s"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:43
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:112
+msgid "Toggle Rotate"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:113
+msgid "Perspective"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:116
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
+msgid "Front"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:121
+msgid "Top"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:124
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:125
+msgid "Side"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:130
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
+msgid "WebGL"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:138
+msgid "Download model"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
+msgid "File Format"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
+msgid "Object Height"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:47
msgid ""
"You can get a modern web browser that \n"
-"\t can play this video at \n"
-"\t http://getfirefox.com!"
+" can play this video at \n"
+" http://getfirefox.com!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:69
msgid "WebM file (640p; VP8/Vorbis)"
msgstr ""
@@ -645,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:83
-msgid "Add"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
msgid "Add your media"
@@ -667,43 +802,40 @@ msgid "%(collection_title)s by %(username)s"
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 ""
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:59
-#, python-format
-msgid ""
-"
"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
-msgid "Attachments"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
-msgid "Add attachment"
-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:52
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
msgstr ""
@@ -838,74 +956,58 @@ msgstr "Če ste ta oseba vi, a ste izgubili potrditveno e-pošto, se lahko \n"
-" %(note)s"
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
+msgid "(remove)"
msgstr ""
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:47
-#, python-format
-msgid " (remove)"
+#: 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 "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:38
-#, python-format
-msgid "View on OpenStreetMap"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
msgstr ""
@@ -936,23 +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/user_pages/forms.py:28
+#: mediagoblin/tools/response.py:35
+msgid "Oops!"
+msgstr "Opa!"
+
+#: mediagoblin/tools/response.py:36
+msgid "An error occured"
+msgstr ""
+
+#: mediagoblin/tools/response.py:51
+msgid "Operation not allowed"
+msgstr ""
+
+#: mediagoblin/tools/response.py:52
+msgid ""
+"Sorry Dave, I can't let you do that!
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:60
+msgid ""
+"There doesn't seem to be a page at this address. Sorry!
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:23
+msgid "Comment"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use Markdown 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 ""
@@ -960,74 +1103,69 @@ msgstr ""
msgid "commented on your post"
msgstr ""
-#: mediagoblin/user_pages/views.py:161
+#: mediagoblin/user_pages/views.py:166
msgid "Oops, your comment was empty."
msgstr ""
-#: mediagoblin/user_pages/views.py:167
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
msgstr ""
-#: mediagoblin/user_pages/views.py:235
+#: 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:243
+#: mediagoblin/user_pages/views.py:248
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:258
+#: mediagoblin/user_pages/views.py:264
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:266
-msgid "Please check your entries and try again."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:297
-msgid ""
-"Some of the files with this entry seem to be missing. Deleting anyway."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:302
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
msgstr ""
-#: mediagoblin/user_pages/views.py:309
+#: 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:317
+#: 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:379
+#: mediagoblin/user_pages/views.py:375
msgid "You deleted the item from the collection."
msgstr ""
-#: mediagoblin/user_pages/views.py:383
+#: 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:393
+#: 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:426
+#: mediagoblin/user_pages/views.py:422
#, python-format
msgid "You deleted the collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:433
+#: 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:443
+#: 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 be3b75db..276f1273 100644
Binary files a/mediagoblin/i18n/sq/LC_MESSAGES/mediagoblin.mo and b/mediagoblin/i18n/sq/LC_MESSAGES/mediagoblin.mo differ
diff --git a/mediagoblin/i18n/sq/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/sq/LC_MESSAGES/mediagoblin.po
index 5147dcc3..5c965623 100644
--- a/mediagoblin/i18n/sq/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/sq/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:
+# Besnik Bleta , 2012.
# FIRST AUTHOR , 2012.
msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://issues.mediagoblin.org/\n"
-"POT-Creation-Date: 2012-09-24 14:01-0500\n"
-"PO-Revision-Date: 2012-09-24 18:57+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 \n"
"Language-Team: Albanian (http://www.transifex.com/projects/p/mediagoblin/language/sq/)\n"
"MIME-Version: 1.0\n"
@@ -19,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:83
+#: 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"
@@ -103,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:87 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"
" \n"
@@ -119,11 +134,11 @@ msgstr "Etiketa"
msgid "Separate tags by commas."
msgstr "Ndajini etiketat me presje."
-#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:91
+#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:101
msgid "Slug"
msgstr "Identifikues"
-#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:92
+#: 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"
@@ -162,123 +177,152 @@ 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:72
+#: 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 ""
+msgstr "Dërgomë email kur të tjerët komentojnë te media ime"
-#: mediagoblin/edit/forms.py:84
+#: mediagoblin/edit/forms.py:94
msgid "The title can't be empty"
-msgstr ""
+msgstr "Titulli s'mund të jetë i zbrazët"
-#: mediagoblin/edit/forms.py:86 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 "Përshkrim i këtij koleksioni"
-#: mediagoblin/edit/forms.py:93
+#: mediagoblin/edit/forms.py:103
msgid ""
"The title part of this collection's address. You usually don't need to "
"change this."
-msgstr ""
+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. Bëni kujdes."
+msgstr "Po përpunoni media të një tjetër përdoruesi. Hapni sytë."
+
+#: mediagoblin/edit/views.py:155
+#, python-format
+msgid "You added the attachment %s!"
+msgstr "Shtuat bashkangjitjen %s!"
#: mediagoblin/edit/views.py:182
-msgid "You are editing a user's profile. Proceed with caution."
-msgstr "Po përpunoni profilin e një përdoruesi. Bëni kujdes."
+msgid "You can only edit your own profile."
+msgstr ""
-#: mediagoblin/edit/views.py:198
+#: 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:204
msgid "Profile changes saved"
msgstr "Ndryshimet e profilit u ruajtën"
-#: mediagoblin/edit/views.py:227 mediagoblin/edit/views.py:247
-msgid "Account settings saved"
-msgstr "Rregullimet e llogarisë u ruajtën"
-
-#: mediagoblin/edit/views.py:252
+#: mediagoblin/edit/views.py:241
msgid "Wrong password"
msgstr "Fjalëkalim i gabuar"
-#: mediagoblin/edit/views.py:288 mediagoblin/submit/views.py:211
-#: mediagoblin/user_pages/views.py:215
+#: mediagoblin/edit/views.py:252
+msgid "Account settings saved"
+msgstr "Rregullimet e llogarisë u ruajtën"
+
+#: mediagoblin/edit/views.py:286
+msgid "You need to confirm the deletion of your account."
+msgstr ""
+
+#: 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 "Keni tashmë një koleksion të quajtur \"%s\"!"
-#: mediagoblin/edit/views.py:292
+#: mediagoblin/edit/views.py:326
msgid "A collection with that slug already exists for this user."
-msgstr ""
+msgstr "Ka tashmë një koleksion me atë identifikues për këtë përdorues."
-#: mediagoblin/edit/views.py:309
+#: mediagoblin/edit/views.py:343
msgid "You are editing another user's collection. Proceed with caution."
-msgstr ""
+msgstr "Po përpunoni koleksionin e një tjetër përdoruesi. Hapni sytë."
#: mediagoblin/gmg_commands/theme.py:58
msgid "Cannot link theme... no theme set\n"
-msgstr ""
+msgstr "Nuk krijohet dot lidhje për te tema... nuk ka temë të caktuar\n"
#: mediagoblin/gmg_commands/theme.py:71
msgid "No asset directory for this theme\n"
-msgstr ""
+msgstr "Nuk ka drejtori asetesh për këtë temë\n"
#: mediagoblin/gmg_commands/theme.py:74
msgid "However, old link directory symlink found; removed.\n"
+msgstr "Sidoqoftë, u gjet simlidhje e vjetër drejtorie lidhjesh; u hoq.\n"
+
+#: mediagoblin/meddleware/csrf.py:134
+msgid ""
+"CSRF cookie not present. This is most likely the result of a cookie blocker "
+"or somesuch. Make sure to permit the settings of cookies for this "
+"domain."
msgstr ""
-#: mediagoblin/media_types/__init__.py:60
-#: mediagoblin/media_types/__init__.py:120
+#: 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 ""
+msgstr "Ndërkodimi i videos dështoi"
-#: mediagoblin/plugins/oauth/forms.py:26
-msgid "Client ID"
-msgstr ""
+#: mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html:24
+msgid "Location"
+msgstr "Vend"
-#: 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 OpenStreetMap"
+msgstr "Shiheni te OpenStreetMap"
+
+#: mediagoblin/plugins/oauth/forms.py:29
+msgid "Allow"
+msgstr "Lejoje"
#: mediagoblin/plugins/oauth/forms.py:30
-msgid "Allow"
-msgstr ""
-
-#: mediagoblin/plugins/oauth/forms.py:31
msgid "Deny"
-msgstr ""
+msgstr "Mohoje"
+
+#: mediagoblin/plugins/oauth/forms.py:34
+msgid "Name"
+msgstr "Emër"
#: mediagoblin/plugins/oauth/forms.py:35
-msgid "Name"
-msgstr ""
+msgid "The name of the OAuth client"
+msgstr "Emri i klientit OAuth"
#: mediagoblin/plugins/oauth/forms.py:36
-msgid "The name of the OAuth client"
-msgstr ""
-
-#: mediagoblin/plugins/oauth/forms.py:37
msgid "Description"
-msgstr ""
+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 ""
+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 ""
+msgstr "Lloj"
-#: mediagoblin/plugins/oauth/forms.py:46
+#: mediagoblin/plugins/oauth/forms.py:45
msgid ""
"Confidential - The client can\n"
" make requests to the GNU MediaGoblin instance that can not be\n"
@@ -286,27 +330,42 @@ msgid ""
" Public - The client can't make confidential\n"
" requests to the GNU MediaGoblin instance (e.g. client-side\n"
" JavaScript client)."
-msgstr ""
+msgstr "Konfidenciale - 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). \n Publike - 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 ""
+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 required for public clients."
-msgstr ""
+msgstr "URI ridrejtimi për zbatimin, kjo fushë\n është e domosdoshme 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 ""
+msgstr "Kjo fushë është e domosdoshme për klientë publikë"
#: mediagoblin/plugins/oauth/views.py:59
msgid "The client {0} has been registered!"
+msgstr "Klienti {0} u regjistrua!"
+
+#: mediagoblin/plugins/oauth/templates/oauth/client/connections.html:22
+msgid "OAuth client connections"
msgstr ""
-#: 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 "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."
@@ -314,118 +373,45 @@ 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 ""
+msgstr "U shtua koleksioni \"%s\"!"
-#: mediagoblin/templates/mediagoblin/404.html:24
-msgid "Image of 404 goblin stressing out"
-msgstr "Figurë 404 e djallushit në siklet"
-
-#: mediagoblin/templates/mediagoblin/404.html:25
-msgid "Oops!"
-msgstr "Oooh!"
-
-#: mediagoblin/templates/mediagoblin/404.html:26
-msgid "There doesn't seem to be a page at this address. Sorry!"
-msgstr "Nuk duket të ketë ndonjë faqe te kjo adresë. Na ndjeni!"
-
-#: mediagoblin/templates/mediagoblin/404.html:28
-msgid ""
-"If you're sure the address is correct, maybe the page you're looking for has"
-" been moved or deleted."
-msgstr "Nëse jeni i sigurt se adresa është e saktë, ndoshta faqja që po kërkoni është fshirë ose kaluar gjetkë."
-
-#: mediagoblin/templates/mediagoblin/base.html:50
-msgid "MediaGoblin logo"
-msgstr "Logoja e MediaGoblin-it"
-
-#: mediagoblin/templates/mediagoblin/base.html:60
+#: mediagoblin/templates/mediagoblin/base.html:64
msgid "Verify your email!"
msgstr "Verifikoni email-in tuaj!"
-#: mediagoblin/templates/mediagoblin/base.html:66
-msgid "+ Add media"
-msgstr "+ Shtoni media"
-
-#: mediagoblin/templates/mediagoblin/base.html:67
-msgid "+ Add collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:69
-msgid "View your profile"
-msgstr "Shihni profilin tuaj"
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "log out"
+msgstr "dilni"
#: mediagoblin/templates/mediagoblin/base.html:70
-msgid "Log out"
-msgstr "Dilni"
-
-#: mediagoblin/templates/mediagoblin/base.html:75
#: 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:89
-msgid ""
-"Powered by MediaGoblin, a GNU project."
-msgstr "Bazuar në MediaGoblin, një projekt GNU."
-
-#: mediagoblin/templates/mediagoblin/base.html:92
+#: mediagoblin/templates/mediagoblin/base.html:79
#, python-format
-msgid ""
-"Released under the AGPL. Source code available."
-msgstr "Hedhur në qarkullim sipas AGPL-së. Kodi burim është i passhëm."
+msgid "%(user_name)s's account"
+msgstr "Llogaria e %(user_name)s"
-#: mediagoblin/templates/mediagoblin/root.html:24
-msgid "Explore"
-msgstr "Eksploroni"
-
-#: mediagoblin/templates/mediagoblin/root.html:26
-msgid "Hi there, welcome to this MediaGoblin site!"
-msgstr "Tungjatjeta juaj, mirë se vini te ky site MediaGoblin!"
-
-#: mediagoblin/templates/mediagoblin/root.html:28
-msgid ""
-"This site is running MediaGoblin, an "
-"extraordinarily great piece of media hosting software."
-msgstr "Ky site përdor MediaGoblin, një program jashtëzakonisht i shkëlqyer për strehim mediash."
-
-#: mediagoblin/templates/mediagoblin/root.html:29
-msgid ""
-"To add your own media, place comments, and more, you can log in with your "
-"MediaGoblin account."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:31
-msgid "Don't have one yet? It's easy!"
-msgstr "Nuk keni ende një të tillë? Është e lehtë!"
-
-#: mediagoblin/templates/mediagoblin/root.html:32
-#, python-format
-msgid ""
-"Create an account at this site\n"
-" or\n"
-" Set up MediaGoblin on your own server"
-msgstr "Krijoni një llogarin te ky site\n ose\n Instaloni dhe rregulloni MediaGoblin-in te shërbyesi juaj"
-
-#: mediagoblin/templates/mediagoblin/root.html:40
-msgid "Most recent media"
-msgstr "Mediat më të reja"
+#: 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
@@ -433,10 +419,79 @@ msgstr "Mediat më të reja"
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 MediaGoblin, a GNU project."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:125
+#, python-format
+msgid ""
+"Released under the AGPL. Source code available."
+msgstr "Hedhur në qarkullim sipas AGPL-së. Kodi burim është i passhëm."
+
+#: mediagoblin/templates/mediagoblin/error.html:24
+msgid "Image of goblin stressing out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/root.html:31
+msgid "Explore"
+msgstr "Eksploroni"
+
+#: 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:35
+msgid ""
+"This site is running MediaGoblin, an "
+"extraordinarily great piece of media hosting software."
+msgstr "Ky site përdor MediaGoblin, një program jashtëzakonisht i shkëlqyer për strehim mediash."
+
+#: 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: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:39
+#, python-format
+msgid ""
+"Create an account at this site\n"
+" or\n"
+" Set up MediaGoblin on your own server"
+msgstr "Krijoni një llogarin te ky site\n ose\n Instaloni dhe rregulloni MediaGoblin-in te shërbyesi juaj"
+
+#: mediagoblin/templates/mediagoblin/root.html:47
+msgid "Most recent media"
+msgstr "Mediat më të reja"
+
#: mediagoblin/templates/mediagoblin/admin/panel.html:29
msgid ""
"Here you can track the state of media being processed on this instance."
-msgstr ""
+msgstr "Këtu mund të ndiqni gjendjen e medias që po përpunohet në këtë instancë."
#: mediagoblin/templates/mediagoblin/admin/panel.html:32
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:32
@@ -456,16 +511,16 @@ msgstr "Nuk arritën të kryheshin këto ngarkime:"
#: mediagoblin/templates/mediagoblin/admin/panel.html:90
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
msgid "No failed entries!"
-msgstr ""
+msgstr "Pa zëra të dështuar!"
#: mediagoblin/templates/mediagoblin/admin/panel.html:92
msgid "Last 10 successful uploads"
-msgstr ""
+msgstr "10 Ngarkimet e Fundit të Suksesshme"
#: mediagoblin/templates/mediagoblin/admin/panel.html:112
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
msgid "No processed entries, yet!"
-msgstr ""
+msgstr "Ende pa zëra të përpunuar!"
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:28
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:36
@@ -535,47 +590,85 @@ 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: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:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
+msgid "Add attachment"
+msgstr "Shtoni bashkangjitje"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr "Anuloje"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
+#: mediagoblin/templates/mediagoblin/edit/edit.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
+#: 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
msgid "Editing %(media_title)s"
msgstr "Po përpunohet %(media_title)s"
-#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: 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:53
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Cancel"
-msgstr "Anuloje"
-
-#: mediagoblin/templates/mediagoblin/edit/edit.html:43
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
-msgid "Save changes"
-msgstr "Ruaji ndryshimet"
-
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
#, python-format
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 ""
+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"
@@ -590,13 +683,12 @@ 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/image.html:23
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
msgstr "Shkarkojeni"
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:27
msgid "Original"
msgstr "Origjinal"
@@ -615,41 +707,85 @@ msgid ""
msgstr "Një shfletues web modern që mund të luajë \n\taudion mund ta merrni te \n\t http://getfirefox.com!"
#: 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 "Kartela origjinale"
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:63
msgid "WebM file (Vorbis codec)"
msgstr "Kartelë WebM (kodek Vorbis)"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
-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."
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:87
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:93
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:99
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:105
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:65
+#, python-format
+msgid "Image for %(media_title)s"
+msgstr "Figurë për %(media_title)s"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:43
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:112
+msgid "Toggle Rotate"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:113
+msgid "Perspective"
+msgstr "Perspektivë"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:116
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
+msgid "Front"
+msgstr "Ball"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:121
+msgid "Top"
+msgstr "Krye"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:124
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:125
+msgid "Side"
+msgstr "Anë"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:130
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
+msgid "WebGL"
+msgstr "WebGL"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:138
+msgid "Download model"
+msgstr "Shkarkojeni modelin"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
+msgid "File Format"
+msgstr "Format Kartele"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
+msgid "Object Height"
+msgstr "Lartësi Objekti"
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:47
msgid ""
"You can get a modern web browser that \n"
-"\t can play this video at \n"
-"\t http://getfirefox.com!"
-msgstr "Një shfletues web modern që \n\t mund ta luajë këtë video mund ta merrni te \n\t http://getfirefox.com!"
-
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:59
-msgid "WebM file (640p; VP8/Vorbis)"
+" can play this video at \n"
+" http://getfirefox.com!"
msgstr ""
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:69
+msgid "WebM file (640p; VP8/Vorbis)"
+msgstr "Kartelë 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:83
-msgid "Add"
-msgstr "Shtoni"
+msgstr "Shtoni një koleksion"
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
@@ -659,49 +795,46 @@ msgstr "Shtoni media tuajën"
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:30
#, python-format
msgid "%(collection_title)s (%(username)s's collection)"
-msgstr ""
+msgstr "%(collection_title)s (koleksione nga %(username)s)"
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:39
#, python-format
msgid "%(collection_title)s by %(username)s"
-msgstr ""
+msgstr "%(collection_title)s nga %(username)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 "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"
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:59
-#, python-format
-msgid ""
-"
\n"
-" %(collection_description)s\n"
-"
"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:30
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
#, python-format
msgid "Really delete %(title)s?"
msgstr "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:50
-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?"
+msgstr "Të hiqet vërtet %(media_title)s nga %(collection_title)s?"
+
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:53
+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_item_confirm_remove.html:54
-msgid "Remove"
+#: mediagoblin/templates/mediagoblin/user_pages/collection_list.html:28
+#, python-format
+msgid "%(username)s's collections"
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/comment_email.txt:19
@@ -709,76 +842,62 @@ msgstr ""
msgid ""
"Hi %(username)s,\n"
"%(comment_author)s commented on your post (%(comment_url)s) at %(instance_name)s\n"
-msgstr ""
+msgstr "Tungjatjeta %(username)s,\n%(comment_author)s ka komentuar te postimi juaj (%(comment_url)s) në %(instance_name)s\n"
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
#, python-format
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 ""
+"%(username)s's media with tag %(tag)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
#, python-format
msgid "%(username)s's media"
msgstr "Media nga %(username)s"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:38
#, python-format
msgid "❖ Browsing media by %(username)s"
msgstr "❖ Po shfletoni media nga %(username)s"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:67
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
-#, python-format
-msgid "Image for %(media_title)s"
-msgstr "Figurë për %(media_title)s"
-
-#: 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 Markdown for"
-" formatting."
-msgstr "Për formatime mund të përdorni Markdown."
-
-#: 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 ""
"
Added on
\n"
"
%(date)s
"
msgstr "
Shtuar më
\n
%(date)s
"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
-msgid "Attachments"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
-msgid "Add attachment"
-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:52
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
-msgstr ""
+msgstr "+"
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
-msgstr ""
+msgstr "Shtoni një koleksion të ri"
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
msgid ""
@@ -787,7 +906,7 @@ msgstr "Gjendjen e medias që po përpunohet për galerinë tuaj mund ta ndiqni
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:89
msgid "Your last 10 successful uploads"
-msgstr ""
+msgstr "10 ngarkimet tuaja më të suksesshme"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:31
#: mediagoblin/templates/mediagoblin/user_pages/user.html:89
@@ -838,74 +957,58 @@ 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:125
-msgid "Change account settings"
-msgstr "Ndryshoni rregullime llogarie"
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:124
+msgid "Browse collections"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:138
+#: 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:151
+#: 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
-msgid "Add media"
-msgstr "Shtoni media"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:163
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:87
-#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:72
+#: 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 "Nuk duket ende të ketë ndonjë media këtu..."
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:39
-#, python-format
-msgid ""
-" \n"
-" %(note)s"
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
+msgid "(remove)"
+msgstr "(hiqe)"
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:21
+msgid "Collected in"
msgstr ""
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:47
-#, python-format
-msgid " (remove)"
-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 "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:38
-#, python-format
-msgid "View on OpenStreetMap"
-msgstr "Shiheni te OpenStreetMap"
-
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
msgstr "Tërë të drejtat të rezervuara"
@@ -936,98 +1039,134 @@ 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/user_pages/forms.py:28
+#: mediagoblin/tools/response.py:35
+msgid "Oops!"
+msgstr "Oooh!"
+
+#: mediagoblin/tools/response.py:36
+msgid "An error occured"
+msgstr "Ndodhi një gabim"
+
+#: mediagoblin/tools/response.py:51
+msgid "Operation not allowed"
+msgstr "Veprim i palejuar"
+
+#: mediagoblin/tools/response.py:52
+msgid ""
+"Sorry Dave, I can't let you do that!
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ë!
Provuat të kryeni një funksion që nuk lejohet. Keni provuar prapë të fshini krejt llogaritë e përdoruesve?"
+
+#: mediagoblin/tools/response.py:60
+msgid ""
+"There doesn't seem to be a page at this address. Sorry!
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!
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:23
+msgid "Comment"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use Markdown for"
+" formatting."
+msgstr "Për formatime mund të përdorni Markdown."
+
+#: 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
-msgid "I am sure I want to remove this item from the collection"
-msgstr ""
-
#: mediagoblin/user_pages/forms.py:35
-msgid "-- Select --"
+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:39
+msgid "Collection"
msgstr ""
-#: mediagoblin/user_pages/forms.py:37
+#: mediagoblin/user_pages/forms.py:40
+msgid "-- Select --"
+msgstr "-- Përzgjidhni --"
+
+#: mediagoblin/user_pages/forms.py:42
msgid "Include a note"
-msgstr ""
+msgstr "Përfshini një shënim"
#: mediagoblin/user_pages/lib.py:56
msgid "commented on your post"
-msgstr ""
+msgstr "komentoi te postimi juaj"
-#: mediagoblin/user_pages/views.py:161
+#: 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:167
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
msgstr "Komenti juaj u postua!"
-#: mediagoblin/user_pages/views.py:235
-msgid "You have to select or add a collection"
-msgstr ""
+#: 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:243
+#: 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:248
#, python-format
msgid "\"%s\" already in collection \"%s\""
-msgstr ""
+msgstr "\"%s\" gjendet tashmë te koleksioni \"%s\""
-#: mediagoblin/user_pages/views.py:258
+#: mediagoblin/user_pages/views.py:264
#, python-format
msgid "\"%s\" added to collection \"%s\""
-msgstr ""
+msgstr "\"%s\" u shtua te koleksioni \"%s\""
-#: mediagoblin/user_pages/views.py:266
-msgid "Please check your entries and try again."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:297
-msgid ""
-"Some of the files with this entry seem to be missing. Deleting anyway."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:302
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
msgstr "E fshitë median."
-#: mediagoblin/user_pages/views.py:309
+#: 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:317
+#: 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. Bëni kujdes."
+msgstr "Ju ndan një hap nga fshirja e medias të një tjetër përdoruesi. Hapni sytë."
+
+#: 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:379
-msgid "You deleted the item from the collection."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:383
msgid "The item was not removed because you didn't check that you were sure."
-msgstr ""
+msgstr "Objekti nuk u fshi ngaqë, nuk pohuat se jeni të sigurt për këtë."
-#: mediagoblin/user_pages/views.py:393
+#: mediagoblin/user_pages/views.py:389
msgid ""
"You are about to delete an item from another user's collection. Proceed with"
" caution."
-msgstr ""
+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:426
+#: mediagoblin/user_pages/views.py:422
#, python-format
msgid "You deleted the collection \"%s\""
-msgstr ""
+msgstr "E fshitë koleksionin \"%s\""
-#: mediagoblin/user_pages/views.py:433
+#: mediagoblin/user_pages/views.py:429
msgid ""
"The collection was not deleted because you didn't check that you were sure."
-msgstr ""
+msgstr "Koleksioni nuk u fshi ngaqë, nuk pohuat se jeni të sigurt për këtë."
-#: mediagoblin/user_pages/views.py:443
+#: mediagoblin/user_pages/views.py:439
msgid ""
"You are about to delete another user's collection. Proceed with caution."
-msgstr ""
+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 132ae65d..f6918f71 100644
Binary files a/mediagoblin/i18n/sr/LC_MESSAGES/mediagoblin.mo and b/mediagoblin/i18n/sr/LC_MESSAGES/mediagoblin.mo differ
diff --git a/mediagoblin/i18n/sr/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/sr/LC_MESSAGES/mediagoblin.po
index 168337b2..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-09-24 14:01-0500\n"
-"PO-Revision-Date: 2012-09-24 18:57+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 \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:83
+#: 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:87 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"
" \n"
@@ -118,11 +132,11 @@ msgstr ""
msgid "Separate tags by commas."
msgstr ""
-#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:91
+#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:101
msgid "Slug"
msgstr ""
-#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:92
+#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:102
msgid "The slug can't be empty"
msgstr ""
@@ -161,60 +175,81 @@ msgstr ""
msgid "New password"
msgstr ""
-#: mediagoblin/edit/forms.py:72
+#: 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:84
+#: mediagoblin/edit/forms.py:94
msgid "The title can't be empty"
msgstr ""
-#: mediagoblin/edit/forms.py:86 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:93
+#: 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:155
+#, python-format
+msgid "You added the attachment %s!"
+msgstr ""
+
#: 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:198
+#: mediagoblin/edit/views.py:204
msgid "Profile changes saved"
msgstr ""
-#: mediagoblin/edit/views.py:227 mediagoblin/edit/views.py:247
-msgid "Account settings saved"
-msgstr ""
-
-#: mediagoblin/edit/views.py:252
+#: mediagoblin/edit/views.py:241
msgid "Wrong password"
msgstr ""
-#: mediagoblin/edit/views.py:288 mediagoblin/submit/views.py:211
-#: mediagoblin/user_pages/views.py:215
+#: mediagoblin/edit/views.py:252
+msgid "Account settings saved"
+msgstr ""
+
+#: mediagoblin/edit/views.py:286
+msgid "You need to confirm the deletion of your account."
+msgstr ""
+
+#: 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:292
+#: mediagoblin/edit/views.py:326
msgid "A collection with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:309
+#: mediagoblin/edit/views.py:343
msgid "You are editing another user's collection. Proceed with caution."
msgstr ""
@@ -230,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:120
+#: mediagoblin/meddleware/csrf.py:134
+msgid ""
+"CSRF cookie not present. This is most likely the result of a cookie blocker "
+"or somesuch. Make sure to permit the 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 OpenStreetMap"
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 ""
"Confidential - The client can\n"
" make requests to the GNU MediaGoblin instance that can not be\n"
@@ -287,17 +330,17 @@ 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 required 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 ""
@@ -305,7 +348,22 @@ msgstr ""
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 ""
@@ -313,75 +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/404.html:24
-msgid "Image of 404 goblin stressing out"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/404.html:25
-msgid "Oops!"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/404.html:26
-msgid "There doesn't seem to be a page at this address. Sorry!"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/404.html:28
-msgid ""
-"If you're sure the address is correct, maybe the page you're looking for has"
-" been moved or deleted."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:50
-msgid "MediaGoblin logo"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:60
+#: mediagoblin/templates/mediagoblin/base.html:64
msgid "Verify your email!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:66
-msgid "+ Add media"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:67
-msgid "+ Add collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:69
-msgid "View your profile"
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "log out"
msgstr ""
#: mediagoblin/templates/mediagoblin/base.html:70
-msgid "Log out"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:75
#: 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:89
-msgid ""
-"Powered by MediaGoblin, a GNU project."
+#: mediagoblin/templates/mediagoblin/base.html:79
+#, python-format
+msgid "%(user_name)s's account"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:92
+#: 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 MediaGoblin, a GNU project."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:125
#, python-format
msgid ""
"Released under the Source code available."
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:24
+#: mediagoblin/templates/mediagoblin/error.html:24
+msgid "Image of goblin stressing out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/root.html:31
msgid "Explore"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:26
+#: mediagoblin/templates/mediagoblin/root.html:33
msgid "Hi there, welcome to this MediaGoblin site!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:28
+#: mediagoblin/templates/mediagoblin/root.html:35
msgid ""
"This site is running MediaGoblin, an "
"extraordinarily great piece of media hosting software."
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:29
+#: 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:31
+#: mediagoblin/templates/mediagoblin/root.html:38
msgid "Don't have one yet? It's easy!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:32
+#: mediagoblin/templates/mediagoblin/root.html:39
#, python-format
msgid ""
"Create an account at this site\n"
@@ -421,17 +482,10 @@ msgid ""
" Set up MediaGoblin on your own server"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:40
+#: mediagoblin/templates/mediagoblin/root.html:47
msgid "Most recent media"
msgstr ""
-#: 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/admin/panel.html:29
msgid ""
"Here you can track the state of media being processed on this instance."
@@ -534,47 +588,85 @@ 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: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:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
+msgid "Add attachment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
+#: mediagoblin/templates/mediagoblin/edit/edit.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
+#: 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
msgid "Editing %(media_title)s"
msgstr ""
-#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: 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:53
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Cancel"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/edit/edit.html:43
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
-msgid "Save changes"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
#, python-format
msgid "Changing %(username)s's account settings"
msgstr ""
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html: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 ""
@@ -589,13 +681,12 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:23
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
msgstr ""
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:27
msgid "Original"
msgstr ""
@@ -614,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 ""
@@ -622,21 +713,71 @@ msgstr ""
msgid "WebM file (Vorbis codec)"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
-msgid ""
-"Sorry, this video will not work because \n"
-"\t your web browser does not support HTML5 \n"
-"\t video."
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:87
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:93
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:99
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:105
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:65
+#, python-format
+msgid "Image for %(media_title)s"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:43
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:112
+msgid "Toggle Rotate"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:113
+msgid "Perspective"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:116
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
+msgid "Front"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:121
+msgid "Top"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:124
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:125
+msgid "Side"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:130
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
+msgid "WebGL"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:138
+msgid "Download model"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
+msgid "File Format"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
+msgid "Object Height"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:47
msgid ""
"You can get a modern web browser that \n"
-"\t can play this video at \n"
-"\t http://getfirefox.com!"
+" can play this video at \n"
+" http://getfirefox.com!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:69
msgid "WebM file (640p; VP8/Vorbis)"
msgstr ""
@@ -644,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:83
-msgid "Add"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
msgid "Add your media"
@@ -666,43 +801,40 @@ msgid "%(collection_title)s by %(username)s"
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 ""
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:59
-#, python-format
-msgid ""
-"
"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
-msgid "Attachments"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
-msgid "Add attachment"
-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:52
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
msgstr ""
@@ -837,74 +955,58 @@ 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:125
-msgid "Change account settings"
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:124
+msgid "Browse collections"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:138
+#: 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:151
+#: 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
-msgid "Add media"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:163
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:87
-#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:72
+#: 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 ""
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:39
-#, python-format
-msgid ""
-" \n"
-" %(note)s"
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
+msgid "(remove)"
msgstr ""
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:47
-#, python-format
-msgid " (remove)"
+#: 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 ""
#: 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:38
-#, python-format
-msgid "View on OpenStreetMap"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
msgstr ""
@@ -935,23 +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/user_pages/forms.py:28
+#: mediagoblin/tools/response.py:35
+msgid "Oops!"
+msgstr ""
+
+#: mediagoblin/tools/response.py:36
+msgid "An error occured"
+msgstr ""
+
+#: mediagoblin/tools/response.py:51
+msgid "Operation not allowed"
+msgstr ""
+
+#: mediagoblin/tools/response.py:52
+msgid ""
+"Sorry Dave, I can't let you do that!
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:60
+msgid ""
+"There doesn't seem to be a page at this address. Sorry!
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:23
+msgid "Comment"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use Markdown 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 ""
@@ -959,74 +1102,69 @@ msgstr ""
msgid "commented on your post"
msgstr ""
-#: mediagoblin/user_pages/views.py:161
+#: mediagoblin/user_pages/views.py:166
msgid "Oops, your comment was empty."
msgstr ""
-#: mediagoblin/user_pages/views.py:167
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
msgstr ""
-#: mediagoblin/user_pages/views.py:235
+#: 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:243
+#: mediagoblin/user_pages/views.py:248
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:258
+#: mediagoblin/user_pages/views.py:264
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:266
-msgid "Please check your entries and try again."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:297
-msgid ""
-"Some of the files with this entry seem to be missing. Deleting anyway."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:302
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
msgstr ""
-#: mediagoblin/user_pages/views.py:309
+#: 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:317
+#: 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:379
+#: mediagoblin/user_pages/views.py:375
msgid "You deleted the item from the collection."
msgstr ""
-#: mediagoblin/user_pages/views.py:383
+#: 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:393
+#: 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:426
+#: mediagoblin/user_pages/views.py:422
#, python-format
msgid "You deleted the collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:433
+#: 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:443
+#: 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 e2a0bc66..28ea51f8 100644
Binary files a/mediagoblin/i18n/sv/LC_MESSAGES/mediagoblin.mo and b/mediagoblin/i18n/sv/LC_MESSAGES/mediagoblin.mo differ
diff --git a/mediagoblin/i18n/sv/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/sv/LC_MESSAGES/mediagoblin.po
index fda30875..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-09-24 14:01-0500\n"
-"PO-Revision-Date: 2012-09-24 18:57+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 \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:83
+#: 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:87 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"
" \n"
@@ -120,11 +134,11 @@ msgstr "Taggar"
msgid "Separate tags by commas."
msgstr ""
-#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:91
+#: 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:92
+#: 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,60 +177,81 @@ msgstr ""
msgid "New password"
msgstr ""
-#: mediagoblin/edit/forms.py:72
+#: 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:84
+#: mediagoblin/edit/forms.py:94
msgid "The title can't be empty"
msgstr ""
-#: mediagoblin/edit/forms.py:86 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:93
+#: 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:155
+#, python-format
+msgid "You added the attachment %s!"
+msgstr ""
+
#: 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:198
+#: mediagoblin/edit/views.py:204
msgid "Profile changes saved"
msgstr ""
-#: mediagoblin/edit/views.py:227 mediagoblin/edit/views.py:247
-msgid "Account settings saved"
-msgstr ""
-
-#: mediagoblin/edit/views.py:252
+#: mediagoblin/edit/views.py:241
msgid "Wrong password"
msgstr "Fel lösenord"
-#: mediagoblin/edit/views.py:288 mediagoblin/submit/views.py:211
-#: mediagoblin/user_pages/views.py:215
+#: mediagoblin/edit/views.py:252
+msgid "Account settings saved"
+msgstr ""
+
+#: mediagoblin/edit/views.py:286
+msgid "You need to confirm the deletion of your account."
+msgstr ""
+
+#: 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:292
+#: mediagoblin/edit/views.py:326
msgid "A collection with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:309
+#: mediagoblin/edit/views.py:343
msgid "You are editing another user's collection. Proceed with caution."
msgstr ""
@@ -232,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:120
+#: mediagoblin/meddleware/csrf.py:134
+msgid ""
+"CSRF cookie not present. This is most likely the result of a cookie blocker "
+"or somesuch. Make sure to permit the 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 OpenStreetMap"
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 ""
"Confidential - The client can\n"
" make requests to the GNU MediaGoblin instance that can not be\n"
@@ -289,17 +332,17 @@ 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 required 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 ""
@@ -307,7 +350,22 @@ msgstr ""
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."
@@ -315,75 +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/404.html:24
-msgid "Image of 404 goblin stressing out"
-msgstr "Bild av stressat 404-troll."
-
-#: mediagoblin/templates/mediagoblin/404.html:25
-msgid "Oops!"
-msgstr "Ojoj!"
-
-#: mediagoblin/templates/mediagoblin/404.html:26
-msgid "There doesn't seem to be a page at this address. Sorry!"
-msgstr "Ledsen, det verkar inte vara någonting här."
-
-#: mediagoblin/templates/mediagoblin/404.html:28
-msgid ""
-"If you're sure the address is correct, maybe the page you're looking for has"
-" been moved or deleted."
-msgstr "Om du är säker på att adressen stämmer så kanske sidan du letar efter har flyttats eller tagits bort."
-
-#: mediagoblin/templates/mediagoblin/base.html:50
-msgid "MediaGoblin logo"
-msgstr "MediaGoblin-logotyp"
-
-#: mediagoblin/templates/mediagoblin/base.html:60
+#: mediagoblin/templates/mediagoblin/base.html:64
msgid "Verify your email!"
msgstr "Verifiera din e-postadress"
-#: mediagoblin/templates/mediagoblin/base.html:66
-msgid "+ Add media"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:67
-msgid "+ Add collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:69
-msgid "View your profile"
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "log out"
msgstr ""
#: mediagoblin/templates/mediagoblin/base.html:70
-msgid "Log out"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:75
#: 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:89
-msgid ""
-"Powered by MediaGoblin, a GNU project."
+#: mediagoblin/templates/mediagoblin/base.html:79
+#, python-format
+msgid "%(user_name)s's account"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:92
+#: 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:96
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:156
+msgid "Add media"
+msgstr "Lägg till media"
+
+#: 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 MediaGoblin, a GNU project."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:125
#, python-format
msgid ""
"Released under the Source code available."
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:24
+#: mediagoblin/templates/mediagoblin/error.html:24
+msgid "Image of goblin stressing out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/root.html:31
msgid "Explore"
msgstr "Utforska"
-#: mediagoblin/templates/mediagoblin/root.html:26
+#: 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:28
+#: mediagoblin/templates/mediagoblin/root.html:35
msgid ""
"This site is running MediaGoblin, an "
"extraordinarily great piece of media hosting software."
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:29
+#: 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:31
+#: 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:32
+#: mediagoblin/templates/mediagoblin/root.html:39
#, python-format
msgid ""
"Create an account at this site\n"
@@ -423,17 +484,10 @@ msgid ""
" Set up MediaGoblin on your own server"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:40
+#: mediagoblin/templates/mediagoblin/root.html:47
msgid "Most recent media"
msgstr "Senast medier"
-#: 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/admin/panel.html:29
msgid ""
"Here you can track the state of media being processed on this instance."
@@ -536,47 +590,85 @@ 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: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:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
+msgid "Add attachment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr "Avbryt"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
+#: mediagoblin/templates/mediagoblin/edit/edit.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
+#: 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
msgid "Editing %(media_title)s"
msgstr "Redigerar %(media_title)s"
-#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: 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:53
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Cancel"
-msgstr "Avbryt"
-
-#: mediagoblin/templates/mediagoblin/edit/edit.html:43
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
-msgid "Save changes"
-msgstr "Spara ändringar"
-
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
#, python-format
msgid "Changing %(username)s's account settings"
msgstr ""
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html: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"
@@ -591,13 +683,12 @@ 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/image.html:23
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
msgstr ""
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:27
msgid "Original"
msgstr "Original"
@@ -616,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 ""
@@ -624,21 +715,71 @@ msgstr ""
msgid "WebM file (Vorbis codec)"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
-msgid ""
-"Sorry, this video will not work because \n"
-"\t your web browser does not support HTML5 \n"
-"\t video."
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:87
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:93
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:99
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:105
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:65
+#, python-format
+msgid "Image for %(media_title)s"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:43
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:112
+msgid "Toggle Rotate"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:113
+msgid "Perspective"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:116
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
+msgid "Front"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:121
+msgid "Top"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:124
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:125
+msgid "Side"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:130
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
+msgid "WebGL"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:138
+msgid "Download model"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
+msgid "File Format"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
+msgid "Object Height"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:47
msgid ""
"You can get a modern web browser that \n"
-"\t can play this video at \n"
-"\t http://getfirefox.com!"
+" can play this video at \n"
+" http://getfirefox.com!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:69
msgid "WebM file (640p; VP8/Vorbis)"
msgstr ""
@@ -646,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:83
-msgid "Add"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
msgid "Add your media"
@@ -668,43 +803,40 @@ msgid "%(collection_title)s by %(username)s"
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 ""
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:59
-#, python-format
-msgid ""
-"
"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
-msgid "Attachments"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
-msgid "Add attachment"
-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:52
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
msgstr ""
@@ -839,74 +957,58 @@ 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:125
-msgid "Change account settings"
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:124
+msgid "Browse collections"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:138
+#: 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:151
+#: 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
-msgid "Add media"
-msgstr "Lägg till media"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:163
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:87
-#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:72
+#: 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 "Det verkar inte finnas någon media här ännu."
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:39
-#, python-format
-msgid ""
-" \n"
-" %(note)s"
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
+msgid "(remove)"
msgstr ""
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:47
-#, python-format
-msgid " (remove)"
+#: 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 "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:38
-#, python-format
-msgid "View on OpenStreetMap"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
msgstr ""
@@ -937,23 +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/user_pages/forms.py:28
+#: mediagoblin/tools/response.py:35
+msgid "Oops!"
+msgstr "Ojoj!"
+
+#: mediagoblin/tools/response.py:36
+msgid "An error occured"
+msgstr ""
+
+#: mediagoblin/tools/response.py:51
+msgid "Operation not allowed"
+msgstr ""
+
+#: mediagoblin/tools/response.py:52
+msgid ""
+"Sorry Dave, I can't let you do that!
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:60
+msgid ""
+"There doesn't seem to be a page at this address. Sorry!
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:23
+msgid "Comment"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use Markdown 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 ""
@@ -961,74 +1104,69 @@ msgstr ""
msgid "commented on your post"
msgstr ""
-#: mediagoblin/user_pages/views.py:161
+#: mediagoblin/user_pages/views.py:166
msgid "Oops, your comment was empty."
msgstr ""
-#: mediagoblin/user_pages/views.py:167
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
msgstr ""
-#: mediagoblin/user_pages/views.py:235
+#: 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:243
+#: mediagoblin/user_pages/views.py:248
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:258
+#: mediagoblin/user_pages/views.py:264
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:266
-msgid "Please check your entries and try again."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:297
-msgid ""
-"Some of the files with this entry seem to be missing. Deleting anyway."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:302
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
msgstr ""
-#: mediagoblin/user_pages/views.py:309
+#: 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:317
+#: 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:379
+#: mediagoblin/user_pages/views.py:375
msgid "You deleted the item from the collection."
msgstr ""
-#: mediagoblin/user_pages/views.py:383
+#: 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:393
+#: 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:426
+#: mediagoblin/user_pages/views.py:422
#, python-format
msgid "You deleted the collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:433
+#: 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:443
+#: 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 e341a891..8cef4593 100644
Binary files a/mediagoblin/i18n/te/LC_MESSAGES/mediagoblin.mo and b/mediagoblin/i18n/te/LC_MESSAGES/mediagoblin.mo differ
diff --git a/mediagoblin/i18n/te/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/te/LC_MESSAGES/mediagoblin.po
index 17d5910c..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-09-24 14:01-0500\n"
-"PO-Revision-Date: 2012-09-24 18:57+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 \n"
"Language-Team: LANGUAGE \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:83
+#: 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:87 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"
" \n"
@@ -119,11 +133,11 @@ msgstr ""
msgid "Separate tags by commas."
msgstr ""
-#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:91
+#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:101
msgid "Slug"
msgstr ""
-#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:92
+#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:102
msgid "The slug can't be empty"
msgstr ""
@@ -162,60 +176,81 @@ msgstr ""
msgid "New password"
msgstr ""
-#: mediagoblin/edit/forms.py:72
+#: 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:84
+#: mediagoblin/edit/forms.py:94
msgid "The title can't be empty"
msgstr ""
-#: mediagoblin/edit/forms.py:86 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:93
+#: 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:155
+#, python-format
+msgid "You added the attachment %s!"
+msgstr ""
+
#: 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:198
+#: mediagoblin/edit/views.py:204
msgid "Profile changes saved"
msgstr ""
-#: mediagoblin/edit/views.py:227 mediagoblin/edit/views.py:247
-msgid "Account settings saved"
-msgstr ""
-
-#: mediagoblin/edit/views.py:252
+#: mediagoblin/edit/views.py:241
msgid "Wrong password"
msgstr ""
-#: mediagoblin/edit/views.py:288 mediagoblin/submit/views.py:211
-#: mediagoblin/user_pages/views.py:215
+#: mediagoblin/edit/views.py:252
+msgid "Account settings saved"
+msgstr ""
+
+#: mediagoblin/edit/views.py:286
+msgid "You need to confirm the deletion of your account."
+msgstr ""
+
+#: 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:292
+#: mediagoblin/edit/views.py:326
msgid "A collection with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:309
+#: mediagoblin/edit/views.py:343
msgid "You are editing another user's collection. Proceed with caution."
msgstr ""
@@ -231,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:120
+#: mediagoblin/meddleware/csrf.py:134
+msgid ""
+"CSRF cookie not present. This is most likely the result of a cookie blocker "
+"or somesuch. Make sure to permit the 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 OpenStreetMap"
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 ""
"Confidential - The client can\n"
" make requests to the GNU MediaGoblin instance that can not be\n"
@@ -288,17 +331,17 @@ 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 required 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 ""
@@ -306,7 +349,22 @@ msgstr ""
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 ""
@@ -314,75 +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/404.html:24
-msgid "Image of 404 goblin stressing out"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/404.html:25
-msgid "Oops!"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/404.html:26
-msgid "There doesn't seem to be a page at this address. Sorry!"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/404.html:28
-msgid ""
-"If you're sure the address is correct, maybe the page you're looking for has"
-" been moved or deleted."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:50
-msgid "MediaGoblin logo"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:60
+#: mediagoblin/templates/mediagoblin/base.html:64
msgid "Verify your email!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:66
-msgid "+ Add media"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:67
-msgid "+ Add collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:69
-msgid "View your profile"
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "log out"
msgstr ""
#: mediagoblin/templates/mediagoblin/base.html:70
-msgid "Log out"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:75
#: 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:89
-msgid ""
-"Powered by MediaGoblin, a GNU project."
+#: mediagoblin/templates/mediagoblin/base.html:79
+#, python-format
+msgid "%(user_name)s's account"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:92
+#: 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 MediaGoblin, a GNU project."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:125
#, python-format
msgid ""
"Released under the Source code available."
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:24
+#: mediagoblin/templates/mediagoblin/error.html:24
+msgid "Image of goblin stressing out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/root.html:31
msgid "Explore"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:26
+#: mediagoblin/templates/mediagoblin/root.html:33
msgid "Hi there, welcome to this MediaGoblin site!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:28
+#: mediagoblin/templates/mediagoblin/root.html:35
msgid ""
"This site is running MediaGoblin, an "
"extraordinarily great piece of media hosting software."
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:29
+#: 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:31
+#: mediagoblin/templates/mediagoblin/root.html:38
msgid "Don't have one yet? It's easy!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:32
+#: mediagoblin/templates/mediagoblin/root.html:39
#, python-format
msgid ""
"Create an account at this site\n"
@@ -422,17 +483,10 @@ msgid ""
" Set up MediaGoblin on your own server"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:40
+#: mediagoblin/templates/mediagoblin/root.html:47
msgid "Most recent media"
msgstr ""
-#: 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/admin/panel.html:29
msgid ""
"Here you can track the state of media being processed on this instance."
@@ -535,47 +589,85 @@ 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: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:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
+msgid "Add attachment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr "రద్దుచేయి"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
+#: mediagoblin/templates/mediagoblin/edit/edit.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
+#: 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
msgid "Editing %(media_title)s"
msgstr ""
-#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: 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:53
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Cancel"
-msgstr "రద్దుచేయి"
-
-#: mediagoblin/templates/mediagoblin/edit/edit.html:43
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
-msgid "Save changes"
-msgstr "మార్పులను భద్రపరచు"
-
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
#, python-format
msgid "Changing %(username)s's account settings"
msgstr ""
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html: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 ""
@@ -590,13 +682,12 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:23
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
msgstr ""
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:27
msgid "Original"
msgstr ""
@@ -615,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 ""
@@ -623,21 +714,71 @@ msgstr ""
msgid "WebM file (Vorbis codec)"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
-msgid ""
-"Sorry, this video will not work because \n"
-"\t your web browser does not support HTML5 \n"
-"\t video."
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:87
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:93
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:99
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:105
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:65
+#, python-format
+msgid "Image for %(media_title)s"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:43
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:112
+msgid "Toggle Rotate"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:113
+msgid "Perspective"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:116
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
+msgid "Front"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:121
+msgid "Top"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:124
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:125
+msgid "Side"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:130
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
+msgid "WebGL"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:138
+msgid "Download model"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
+msgid "File Format"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
+msgid "Object Height"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:47
msgid ""
"You can get a modern web browser that \n"
-"\t can play this video at \n"
-"\t http://getfirefox.com!"
+" can play this video at \n"
+" http://getfirefox.com!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:69
msgid "WebM file (640p; VP8/Vorbis)"
msgstr ""
@@ -645,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:83
-msgid "Add"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
msgid "Add your media"
@@ -667,43 +802,40 @@ msgid "%(collection_title)s by %(username)s"
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 ""
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:59
-#, python-format
-msgid ""
-"
"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
-msgid "Attachments"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
-msgid "Add attachment"
-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:52
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
msgstr ""
@@ -838,74 +956,58 @@ 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:125
-msgid "Change account settings"
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:124
+msgid "Browse collections"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:138
+#: 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:151
+#: 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
-msgid "Add media"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:163
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:87
-#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:72
+#: 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 ""
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:39
-#, python-format
-msgid ""
-" \n"
-" %(note)s"
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
+msgid "(remove)"
msgstr ""
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:47
-#, python-format
-msgid " (remove)"
+#: 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 ""
#: 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:38
-#, python-format
-msgid "View on OpenStreetMap"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
msgstr ""
@@ -936,23 +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/user_pages/forms.py:28
+#: mediagoblin/tools/response.py:35
+msgid "Oops!"
+msgstr ""
+
+#: mediagoblin/tools/response.py:36
+msgid "An error occured"
+msgstr ""
+
+#: mediagoblin/tools/response.py:51
+msgid "Operation not allowed"
+msgstr ""
+
+#: mediagoblin/tools/response.py:52
+msgid ""
+"Sorry Dave, I can't let you do that!
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:60
+msgid ""
+"There doesn't seem to be a page at this address. Sorry!
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:23
+msgid "Comment"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use Markdown 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 ""
@@ -960,74 +1103,69 @@ msgstr ""
msgid "commented on your post"
msgstr ""
-#: mediagoblin/user_pages/views.py:161
+#: mediagoblin/user_pages/views.py:166
msgid "Oops, your comment was empty."
msgstr ""
-#: mediagoblin/user_pages/views.py:167
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
msgstr ""
-#: mediagoblin/user_pages/views.py:235
+#: 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:243
+#: mediagoblin/user_pages/views.py:248
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:258
+#: mediagoblin/user_pages/views.py:264
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:266
-msgid "Please check your entries and try again."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:297
-msgid ""
-"Some of the files with this entry seem to be missing. Deleting anyway."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:302
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
msgstr ""
-#: mediagoblin/user_pages/views.py:309
+#: 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:317
+#: 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:379
+#: mediagoblin/user_pages/views.py:375
msgid "You deleted the item from the collection."
msgstr ""
-#: mediagoblin/user_pages/views.py:383
+#: 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:393
+#: 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:426
+#: mediagoblin/user_pages/views.py:422
#, python-format
msgid "You deleted the collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:433
+#: 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:443
+#: 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 99f0c85b..d75d2eb2 100644
Binary files a/mediagoblin/i18n/zh_TW.Big5/LC_MESSAGES/mediagoblin.mo and b/mediagoblin/i18n/zh_TW.Big5/LC_MESSAGES/mediagoblin.mo differ
diff --git a/mediagoblin/i18n/zh_TW.Big5/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/zh_TW.Big5/LC_MESSAGES/mediagoblin.po
index 0729a2e7..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-09-24 14:01-0500\n"
-"PO-Revision-Date: 2012-09-24 18:57+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 \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:83
+#: 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:87 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"
" \n"
@@ -118,11 +132,11 @@ msgstr ""
msgid "Separate tags by commas."
msgstr ""
-#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:91
+#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:101
msgid "Slug"
msgstr ""
-#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:92
+#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:102
msgid "The slug can't be empty"
msgstr ""
@@ -161,60 +175,81 @@ msgstr ""
msgid "New password"
msgstr ""
-#: mediagoblin/edit/forms.py:72
+#: 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:84
+#: mediagoblin/edit/forms.py:94
msgid "The title can't be empty"
msgstr ""
-#: mediagoblin/edit/forms.py:86 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:93
+#: 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:155
+#, python-format
+msgid "You added the attachment %s!"
+msgstr ""
+
#: 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:198
+#: mediagoblin/edit/views.py:204
msgid "Profile changes saved"
msgstr ""
-#: mediagoblin/edit/views.py:227 mediagoblin/edit/views.py:247
-msgid "Account settings saved"
-msgstr ""
-
-#: mediagoblin/edit/views.py:252
+#: mediagoblin/edit/views.py:241
msgid "Wrong password"
msgstr ""
-#: mediagoblin/edit/views.py:288 mediagoblin/submit/views.py:211
-#: mediagoblin/user_pages/views.py:215
+#: mediagoblin/edit/views.py:252
+msgid "Account settings saved"
+msgstr ""
+
+#: mediagoblin/edit/views.py:286
+msgid "You need to confirm the deletion of your account."
+msgstr ""
+
+#: 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:292
+#: mediagoblin/edit/views.py:326
msgid "A collection with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:309
+#: mediagoblin/edit/views.py:343
msgid "You are editing another user's collection. Proceed with caution."
msgstr ""
@@ -230,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:120
+#: mediagoblin/meddleware/csrf.py:134
+msgid ""
+"CSRF cookie not present. This is most likely the result of a cookie blocker "
+"or somesuch. Make sure to permit the 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 OpenStreetMap"
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 ""
"Confidential - The client can\n"
" make requests to the GNU MediaGoblin instance that can not be\n"
@@ -287,17 +330,17 @@ 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 required 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 ""
@@ -305,7 +348,22 @@ msgstr ""
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 ""
@@ -313,75 +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/404.html:24
-msgid "Image of 404 goblin stressing out"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/404.html:25
-msgid "Oops!"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/404.html:26
-msgid "There doesn't seem to be a page at this address. Sorry!"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/404.html:28
-msgid ""
-"If you're sure the address is correct, maybe the page you're looking for has"
-" been moved or deleted."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:50
-msgid "MediaGoblin logo"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:60
+#: mediagoblin/templates/mediagoblin/base.html:64
msgid "Verify your email!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:66
-msgid "+ Add media"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:67
-msgid "+ Add collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:69
-msgid "View your profile"
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "log out"
msgstr ""
#: mediagoblin/templates/mediagoblin/base.html:70
-msgid "Log out"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:75
#: 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:89
-msgid ""
-"Powered by MediaGoblin, a GNU project."
+#: mediagoblin/templates/mediagoblin/base.html:79
+#, python-format
+msgid "%(user_name)s's account"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:92
+#: 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 MediaGoblin, a GNU project."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:125
#, python-format
msgid ""
"Released under the Source code available."
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:24
+#: mediagoblin/templates/mediagoblin/error.html:24
+msgid "Image of goblin stressing out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/root.html:31
msgid "Explore"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:26
+#: mediagoblin/templates/mediagoblin/root.html:33
msgid "Hi there, welcome to this MediaGoblin site!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:28
+#: mediagoblin/templates/mediagoblin/root.html:35
msgid ""
"This site is running MediaGoblin, an "
"extraordinarily great piece of media hosting software."
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:29
+#: 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:31
+#: mediagoblin/templates/mediagoblin/root.html:38
msgid "Don't have one yet? It's easy!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:32
+#: mediagoblin/templates/mediagoblin/root.html:39
#, python-format
msgid ""
"Create an account at this site\n"
@@ -421,17 +482,10 @@ msgid ""
" Set up MediaGoblin on your own server"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:40
+#: mediagoblin/templates/mediagoblin/root.html:47
msgid "Most recent media"
msgstr ""
-#: 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/admin/panel.html:29
msgid ""
"Here you can track the state of media being processed on this instance."
@@ -534,47 +588,85 @@ 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: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:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
+msgid "Add attachment"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
+#: mediagoblin/templates/mediagoblin/edit/edit.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
+#: 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
msgid "Editing %(media_title)s"
msgstr ""
-#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: 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:53
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Cancel"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/edit/edit.html:43
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
-msgid "Save changes"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
#, python-format
msgid "Changing %(username)s's account settings"
msgstr ""
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html: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 ""
@@ -589,13 +681,12 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:56
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:23
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
msgstr ""
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:27
msgid "Original"
msgstr ""
@@ -614,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 ""
@@ -622,21 +713,71 @@ msgstr ""
msgid "WebM file (Vorbis codec)"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
-msgid ""
-"Sorry, this video will not work because \n"
-"\t your web browser does not support HTML5 \n"
-"\t video."
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:87
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:93
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:99
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:105
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:65
+#, python-format
+msgid "Image for %(media_title)s"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:43
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:112
+msgid "Toggle Rotate"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:113
+msgid "Perspective"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:116
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
+msgid "Front"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:121
+msgid "Top"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:124
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:125
+msgid "Side"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:130
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
+msgid "WebGL"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:138
+msgid "Download model"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
+msgid "File Format"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
+msgid "Object Height"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
+msgid ""
+"Sorry, this video will not work because\n"
+" your web browser does not support HTML5 \n"
+" video."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:47
msgid ""
"You can get a modern web browser that \n"
-"\t can play this video at \n"
-"\t http://getfirefox.com!"
+" can play this video at \n"
+" http://getfirefox.com!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:59
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:69
msgid "WebM file (640p; VP8/Vorbis)"
msgstr ""
@@ -644,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:83
-msgid "Add"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
msgid "Add your media"
@@ -666,43 +801,40 @@ msgid "%(collection_title)s by %(username)s"
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 ""
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:59
-#, python-format
-msgid ""
-"
"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
-msgid "Attachments"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
-msgid "Add attachment"
-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:52
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
msgstr ""
@@ -837,74 +955,58 @@ 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:125
-msgid "Change account settings"
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:124
+msgid "Browse collections"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:138
+#: 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:151
+#: 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
-msgid "Add media"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:163
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:87
-#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:72
+#: 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 ""
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:39
-#, python-format
-msgid ""
-" \n"
-" %(note)s"
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
+msgid "(remove)"
msgstr ""
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:47
-#, python-format
-msgid " (remove)"
+#: 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 ""
#: 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:38
-#, python-format
-msgid "View on OpenStreetMap"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
msgstr ""
@@ -935,23 +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/user_pages/forms.py:28
+#: mediagoblin/tools/response.py:35
+msgid "Oops!"
+msgstr ""
+
+#: mediagoblin/tools/response.py:36
+msgid "An error occured"
+msgstr ""
+
+#: mediagoblin/tools/response.py:51
+msgid "Operation not allowed"
+msgstr ""
+
+#: mediagoblin/tools/response.py:52
+msgid ""
+"Sorry Dave, I can't let you do that!
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:60
+msgid ""
+"There doesn't seem to be a page at this address. Sorry!
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:23
+msgid "Comment"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use Markdown 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 ""
@@ -959,74 +1102,69 @@ msgstr ""
msgid "commented on your post"
msgstr ""
-#: mediagoblin/user_pages/views.py:161
+#: mediagoblin/user_pages/views.py:166
msgid "Oops, your comment was empty."
msgstr ""
-#: mediagoblin/user_pages/views.py:167
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
msgstr ""
-#: mediagoblin/user_pages/views.py:235
+#: 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:243
+#: mediagoblin/user_pages/views.py:248
#, python-format
msgid "\"%s\" already in collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:258
+#: mediagoblin/user_pages/views.py:264
#, python-format
msgid "\"%s\" added to collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:266
-msgid "Please check your entries and try again."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:297
-msgid ""
-"Some of the files with this entry seem to be missing. Deleting anyway."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:302
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
msgstr ""
-#: mediagoblin/user_pages/views.py:309
+#: 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:317
+#: 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:379
+#: mediagoblin/user_pages/views.py:375
msgid "You deleted the item from the collection."
msgstr ""
-#: mediagoblin/user_pages/views.py:383
+#: 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:393
+#: 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:426
+#: mediagoblin/user_pages/views.py:422
#, python-format
msgid "You deleted the collection \"%s\""
msgstr ""
-#: mediagoblin/user_pages/views.py:433
+#: 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:443
+#: 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 379f1bdc..3d267cfc 100644
Binary files a/mediagoblin/i18n/zh_TW/LC_MESSAGES/mediagoblin.mo and b/mediagoblin/i18n/zh_TW/LC_MESSAGES/mediagoblin.mo differ
diff --git a/mediagoblin/i18n/zh_TW/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/zh_TW/LC_MESSAGES/mediagoblin.po
index b8673f51..bd50df78 100644
--- a/mediagoblin/i18n/zh_TW/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/zh_TW/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:
# , 2011.
-# Harry Chen , 2011, 2012.
+# Harry Chen , 2011-2012.
+# , 2012.
msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://issues.mediagoblin.org/\n"
-"POT-Creation-Date: 2012-09-24 14:01-0500\n"
-"PO-Revision-Date: 2012-09-24 18:57+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 \n"
"Language-Team: LANGUAGE \n"
"MIME-Version: 1.0\n"
@@ -20,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 "電子郵件位置"
+msgstr "Email 位址"
-#: mediagoblin/auth/forms.py:51
+#: mediagoblin/auth/forms.py:78
msgid "Username or email"
-msgstr "使用者名稱或是電子郵件"
+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 "抱歉, 這個項目已經被暫停註冊."
+msgstr "抱歉,本站已經暫停註冊。"
-#: mediagoblin/auth/views.py:75
+#: mediagoblin/auth/views.py:68
msgid "Sorry, a user with that name already exists."
-msgstr "抱歉, 這個使用者名稱已經存在."
+msgstr "抱歉,這個使用者名稱已經存在。"
-#: mediagoblin/auth/views.py:79
+#: mediagoblin/auth/views.py:72
msgid "Sorry, a user with that email address already exists."
-msgstr "抱歉,此電子郵件已被註冊了。"
+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 "你的電子郵件位址已被認證. 你現在就可以登入, 編輯你的個人檔案而且遞交照片!"
+msgstr "您的 email 位址已被認證。您已經可以登入,編輯您的個人檔案並上傳圖片!"
-#: mediagoblin/auth/views.py:188
+#: mediagoblin/auth/views.py:180
msgid "The verification key or user id is incorrect"
-msgstr "認證碼或是使用者帳號錯誤"
+msgstr "認證碼或是使用者 ID 錯誤"
+
+#: 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:206
-msgid "You must be logged in so we know who to send the email to!"
-msgstr "你必須登入,我們才知道信要送給誰!"
-
-#: mediagoblin/auth/views.py:214
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 "重送認證信."
+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 "修改密碼的指示已經由電子郵件寄送到你的信箱。"
+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 "無法傳送密碼回復信件,因為你的使用者名稱已失效或是帳號尚未認證。"
+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 "你現在可以用新的密碼登入了!"
+msgstr "您現在可以用新的密碼登入了!"
-#: mediagoblin/edit/forms.py:25 mediagoblin/edit/forms.py:83
+#: 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,13 +119,13 @@ msgid "Description of this work"
msgstr "這個作品的描述"
#: mediagoblin/edit/forms.py:29 mediagoblin/edit/forms.py:52
-#: mediagoblin/edit/forms.py:87 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"
" \n"
" Markdown for formatting."
-msgstr "你可以用\n \n Markdown 來排版."
+msgstr "您可以用 Markdown 來排版。"
#: mediagoblin/edit/forms.py:33 mediagoblin/submit/forms.py:36
msgid "Tags"
@@ -120,19 +135,19 @@ msgstr "標籤"
msgid "Separate tags by commas."
msgstr "用逗號分隔標籤。"
-#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:91
+#: mediagoblin/edit/forms.py:38 mediagoblin/edit/forms.py:101
msgid "Slug"
-msgstr "自訂字串"
+msgstr "簡稱"
-#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:92
+#: mediagoblin/edit/forms.py:39 mediagoblin/edit/forms.py:102
msgid "The slug can't be empty"
-msgstr "自訂字串不能空白"
+msgstr "簡稱不能為空白"
#: mediagoblin/edit/forms.py:40
msgid ""
"The title part of this media's address. You usually don't need to change "
"this."
-msgstr "此媒體網址的名稱。你通常不需要變動這個的。"
+msgstr "此媒體網址的標題部份。通常不需要修改。"
#: mediagoblin/edit/forms.py:44 mediagoblin/submit/forms.py:41
#: mediagoblin/templates/mediagoblin/utils/license.html:20
@@ -149,7 +164,7 @@ msgstr "網站"
#: mediagoblin/edit/forms.py:58
msgid "This address contains errors"
-msgstr "網址是不是打錯了? "
+msgstr "本網址出錯了"
#: mediagoblin/edit/forms.py:63
msgid "Old password"
@@ -157,129 +172,158 @@ msgstr "舊的密碼"
#: mediagoblin/edit/forms.py:64
msgid "Enter your old password to prove you own this account."
-msgstr "輸入你的舊密碼來證明你擁有這個帳號。"
+msgstr "輸入您的舊密碼來證明您擁有這個帳號。"
#: mediagoblin/edit/forms.py:67
msgid "New password"
msgstr "新密碼"
-#: mediagoblin/edit/forms.py:72
+#: 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 ""
+msgstr "當有人對我的媒體評論時寄信給我"
-#: mediagoblin/edit/forms.py:84
+#: mediagoblin/edit/forms.py:94
msgid "The title can't be empty"
-msgstr ""
+msgstr "標題不能是空的"
-#: mediagoblin/edit/forms.py:86 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 "這個蒐藏的描述"
-#: mediagoblin/edit/forms.py:93
+#: mediagoblin/edit/forms.py:103
msgid ""
"The title part of this collection's address. You usually don't need to "
"change this."
-msgstr ""
+msgstr "此蒐藏網址的標題部份,通常不需要修改。"
-#: mediagoblin/edit/views.py:65
+#: mediagoblin/edit/views.py:66
msgid "An entry with that slug already exists for this user."
-msgstr "這個自訂字串已經被其他人用了"
+msgstr "這個簡稱已經被其他人用了"
-#: mediagoblin/edit/views.py:86
+#: mediagoblin/edit/views.py:85
msgid "You are editing another user's media. Proceed with caution."
-msgstr "你正在編輯他人的媒體檔案. 請謹慎處理."
+msgstr "您正在修改別人的媒體,請小心操作。"
+
+#: mediagoblin/edit/views.py:155
+#, python-format
+msgid "You added the attachment %s!"
+msgstr "您加上了附件「%s」!"
#: 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 "你正在編輯一位用戶的檔案. 請謹慎處理."
+msgstr "您正在修改別人的個人檔案,請小心操作。"
-#: mediagoblin/edit/views.py:198
+#: mediagoblin/edit/views.py:204
msgid "Profile changes saved"
-msgstr "修改的檔案已存檔"
+msgstr "個人檔案修改已儲存"
-#: mediagoblin/edit/views.py:227 mediagoblin/edit/views.py:247
-msgid "Account settings saved"
-msgstr "帳號設定已存檔"
-
-#: mediagoblin/edit/views.py:252
+#: mediagoblin/edit/views.py:241
msgid "Wrong password"
msgstr "密碼錯誤"
-#: mediagoblin/edit/views.py:288 mediagoblin/submit/views.py:211
-#: mediagoblin/user_pages/views.py:215
+#: mediagoblin/edit/views.py:252
+msgid "Account settings saved"
+msgstr "帳號設定已儲存"
+
+#: mediagoblin/edit/views.py:286
+msgid "You need to confirm the deletion of your account."
+msgstr ""
+
+#: 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 "您已經有一個稱做「%s」的蒐藏了!"
-#: mediagoblin/edit/views.py:292
+#: mediagoblin/edit/views.py:326
msgid "A collection with that slug already exists for this user."
-msgstr ""
+msgstr "這個使用者已經有使用該簡稱的蒐藏了。"
-#: mediagoblin/edit/views.py:309
+#: mediagoblin/edit/views.py:343
msgid "You are editing another user's collection. Proceed with caution."
-msgstr ""
+msgstr "您正在修改別人的蒐藏,請小心操作。"
#: mediagoblin/gmg_commands/theme.py:58
msgid "Cannot link theme... no theme set\n"
-msgstr ""
+msgstr "無法連結佈景…沒有此佈景\n"
#: mediagoblin/gmg_commands/theme.py:71
msgid "No asset directory for this theme\n"
-msgstr ""
+msgstr "此佈景沒有素材目錄\n"
#: mediagoblin/gmg_commands/theme.py:74
msgid "However, old link directory symlink found; removed.\n"
+msgstr "但是舊的目錄連結已經找到並移除。\n"
+
+#: mediagoblin/meddleware/csrf.py:134
+msgid ""
+"CSRF cookie not present. This is most likely the result of a cookie blocker "
+"or somesuch. Make sure to permit the settings of cookies for this "
+"domain."
msgstr ""
-#: mediagoblin/media_types/__init__.py:60
-#: mediagoblin/media_types/__init__.py:120
+#: 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 ""
+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 OpenStreetMap"
+msgstr "在 OpenStreetMap 上觀看"
+
+#: mediagoblin/plugins/oauth/forms.py:29
+msgid "Allow"
+msgstr "允許"
#: mediagoblin/plugins/oauth/forms.py:30
-msgid "Allow"
-msgstr ""
-
-#: mediagoblin/plugins/oauth/forms.py:31
msgid "Deny"
-msgstr ""
+msgstr "拒絕"
+
+#: mediagoblin/plugins/oauth/forms.py:34
+msgid "Name"
+msgstr "名稱"
#: mediagoblin/plugins/oauth/forms.py:35
-msgid "Name"
-msgstr ""
+msgid "The name of the OAuth client"
+msgstr "OAuth client 的名稱"
#: mediagoblin/plugins/oauth/forms.py:36
-msgid "The name of the OAuth client"
-msgstr ""
-
-#: mediagoblin/plugins/oauth/forms.py:37
msgid "Description"
-msgstr ""
+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 ""
"Confidential - The client can\n"
" make requests to the GNU MediaGoblin instance that can not be\n"
@@ -287,27 +331,42 @@ msgid ""
" Public - The client can't make confidential\n"
" requests to the GNU MediaGoblin instance (e.g. client-side\n"
" JavaScript client)."
-msgstr ""
+msgstr "秘密 — OAuth client 可以對 GNU MediaGoblin 站台發送不被使用者代理攔截的請求 (例如伺服端的 client)。\n公開 — OAuth client 無法對 GNU MediaGoblin 站台發送秘密的請求 (例如客戶端的 JavaScript client)。"
-#: mediagoblin/plugins/oauth/forms.py:53
+#: mediagoblin/plugins/oauth/forms.py:52
msgid "Redirect URI"
-msgstr ""
+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 required for public clients."
-msgstr ""
+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 ""
+msgstr "本欄位在公開類型的 OAuth client 為必填"
#: mediagoblin/plugins/oauth/views.py:59
msgid "The client {0} has been registered!"
+msgstr "OAuth client {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 "指定錯誤的媒體類別!"
@@ -315,118 +374,45 @@ msgstr "指定錯誤的媒體類別!"
msgid "File"
msgstr "檔案"
-#: mediagoblin/submit/views.py:57
+#: mediagoblin/submit/views.py:51
msgid "You must provide a file."
-msgstr "你必須提供一個檔案"
+msgstr "您必須提供一個檔案"
-#: mediagoblin/submit/views.py:164
+#: mediagoblin/submit/views.py:97
msgid "Woohoo! Submitted!"
-msgstr "呼呼! 送出去嚕!"
+msgstr "啊哈!PO 上去啦!"
-#: mediagoblin/submit/views.py:215
+#: mediagoblin/submit/views.py:146
#, python-format
msgid "Collection \"%s\" added!"
-msgstr ""
+msgstr "蒐藏「%s」新增完成!"
-#: mediagoblin/templates/mediagoblin/404.html:24
-msgid "Image of 404 goblin stressing out"
-msgstr "Image of 404 goblin stressing out"
-
-#: mediagoblin/templates/mediagoblin/404.html:25
-msgid "Oops!"
-msgstr "糟糕!"
-
-#: mediagoblin/templates/mediagoblin/404.html:26
-msgid "There doesn't seem to be a page at this address. Sorry!"
-msgstr "這個位址似乎沒有網頁。抱歉!"
-
-#: mediagoblin/templates/mediagoblin/404.html:28
-msgid ""
-"If you're sure the address is correct, maybe the page you're looking for has"
-" been moved or deleted."
-msgstr "如果你確定這個位址是正確的,或許你在找的網頁已經被移除或是刪除了。"
-
-#: mediagoblin/templates/mediagoblin/base.html:50
-msgid "MediaGoblin logo"
-msgstr "MediaGoblin 標誌"
-
-#: mediagoblin/templates/mediagoblin/base.html:60
+#: mediagoblin/templates/mediagoblin/base.html:64
msgid "Verify your email!"
-msgstr "確認你的電子郵件"
+msgstr "確認您的電子郵件"
-#: mediagoblin/templates/mediagoblin/base.html:66
-msgid "+ Add media"
-msgstr "+ 加入媒體"
-
-#: mediagoblin/templates/mediagoblin/base.html:67
-msgid "+ Add collection"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/base.html:69
-msgid "View your profile"
-msgstr "檢視你個人檔案"
-
-#: mediagoblin/templates/mediagoblin/base.html:70
-msgid "Log out"
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "log out"
msgstr "登出"
-#: mediagoblin/templates/mediagoblin/base.html:75
+#: 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:89
-msgid ""
-"Powered by MediaGoblin, a GNU project."
-msgstr "由 MediaGoblin製作, 它是一個 GNU 專案"
-
-#: mediagoblin/templates/mediagoblin/base.html:92
+#: mediagoblin/templates/mediagoblin/base.html:79
#, python-format
-msgid ""
-"Released under the AGPL. Source code available."
-msgstr "基於AGPL授權釋出. 取得原始碼."
+msgid "%(user_name)s's account"
+msgstr "%(user_name)s 的帳號"
-#: mediagoblin/templates/mediagoblin/root.html:24
-msgid "Explore"
-msgstr "探索"
-
-#: mediagoblin/templates/mediagoblin/root.html:26
-msgid "Hi there, welcome to this MediaGoblin site!"
-msgstr "嘿!歡迎來到 媒體怪獸(MediaGoblin) 網站"
-
-#: mediagoblin/templates/mediagoblin/root.html:28
-msgid ""
-"This site is running MediaGoblin, an "
-"extraordinarily great piece of media hosting software."
-msgstr "此網站正運行 媒體怪獸(MediaGoblin), 他是一個超讚的媒體分享架站軟體."
-
-#: mediagoblin/templates/mediagoblin/root.html:29
-msgid ""
-"To add your own media, place comments, and more, you can log in with your "
-"MediaGoblin account."
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:31
-msgid "Don't have one yet? It's easy!"
-msgstr "還沒有嗎?其實非常簡單!"
-
-#: mediagoblin/templates/mediagoblin/root.html:32
-#, python-format
-msgid ""
-"Create an account at this site\n"
-" or\n"
-" Set up MediaGoblin on your own server"
-msgstr "在這網站建立帳號\n 或是\n 在你的伺服器上建立一個自己的媒體怪獸(MedaiGoblin)"
-
-#: mediagoblin/templates/mediagoblin/root.html:40
-msgid "Most recent media"
-msgstr "最新的媒體"
+#: 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
@@ -434,10 +420,79 @@ msgstr "最新的媒體"
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 MediaGoblin, a GNU project."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:125
+#, python-format
+msgid ""
+"Released under the AGPL. Source code available."
+msgstr "以 AGPL 授權釋出。備有原始碼。"
+
+#: mediagoblin/templates/mediagoblin/error.html:24
+msgid "Image of goblin stressing out"
+msgstr "滿臉問號的哥布林"
+
+#: mediagoblin/templates/mediagoblin/root.html:31
+msgid "Explore"
+msgstr "探索"
+
+#: mediagoblin/templates/mediagoblin/root.html:33
+msgid "Hi there, welcome to this MediaGoblin site!"
+msgstr "嘿!歡迎來到 MediaGoblin 站台! "
+
+#: mediagoblin/templates/mediagoblin/root.html:35
+msgid ""
+"This site is running MediaGoblin, an "
+"extraordinarily great piece of media hosting software."
+msgstr "本站使用 MediaGoblin — 與眾不同的媒體分享網站。"
+
+#: 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:38
+msgid "Don't have one yet? It's easy!"
+msgstr "沒有帳號嗎?開帳號很簡單!"
+
+#: mediagoblin/templates/mediagoblin/root.html:39
+#, python-format
+msgid ""
+"Create an account at this site\n"
+" or\n"
+" Set up MediaGoblin on your own server"
+msgstr "在這個網站上建立帳號\n 或是\n 在自己的伺服器上建立 MediaGoblin"
+
+#: mediagoblin/templates/mediagoblin/root.html:47
+msgid "Most recent media"
+msgstr "最新的媒體"
+
#: mediagoblin/templates/mediagoblin/admin/panel.html:29
msgid ""
"Here you can track the state of media being processed on this instance."
-msgstr ""
+msgstr "此處您可以追蹤本站台處理媒體的狀態。"
#: mediagoblin/templates/mediagoblin/admin/panel.html:32
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:32
@@ -452,26 +507,26 @@ msgstr "沒有正在處理中的媒體"
#: mediagoblin/templates/mediagoblin/admin/panel.html:61
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:59
msgid "These uploads failed to process:"
-msgstr "無法處理這些更新"
+msgstr "無法處理這些上傳內容:"
#: mediagoblin/templates/mediagoblin/admin/panel.html:90
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:86
msgid "No failed entries!"
-msgstr ""
+msgstr "沒有失敗的紀錄!"
#: mediagoblin/templates/mediagoblin/admin/panel.html:92
msgid "Last 10 successful uploads"
-msgstr ""
+msgstr "最近 10 次成功上傳的紀錄"
#: mediagoblin/templates/mediagoblin/admin/panel.html:112
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:107
msgid "No processed entries, yet!"
-msgstr ""
+msgstr "現在還沒有處理的紀錄!"
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:28
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:36
msgid "Set your new password"
-msgstr "設定你的新密碼"
+msgstr "設定您的新密碼"
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:39
msgid "Set password"
@@ -498,7 +553,7 @@ msgid ""
"\n"
"If you think this is an error, just ignore this email and continue being\n"
"a happy goblin!"
-msgstr "嗨 %(username)s,\n\n要更改 GNU MediaGoblin的密碼,在瀏覽器中打開下面的網址:\n\n%(verification_url)s\n\n如果你認為這個是個誤會,請忽略此封信件,繼續當個快樂的goblin!"
+msgstr "%(username)s 您好:\n\n要修改 GNU MediaGoblin 的密碼,請在您的瀏覽器中打開下面的網址:\n\n%(verification_url)s\n\n如果您認為這個是個誤會,請忽略此封信件,繼續當個快樂的哥布林!"
#: mediagoblin/templates/mediagoblin/auth/login.html:39
msgid "Logging in failed!"
@@ -506,11 +561,11 @@ msgstr "登入失敗!"
#: mediagoblin/templates/mediagoblin/auth/login.html:44
msgid "Don't have an account yet?"
-msgstr "還沒有帳號嗎?"
+msgstr "還沒有帳號嗎?"
#: mediagoblin/templates/mediagoblin/auth/login.html:45
msgid "Create one here!"
-msgstr "在這裡建立一個吧!"
+msgstr "在這裡建立一個吧!"
#: mediagoblin/templates/mediagoblin/auth/login.html:51
msgid "Forgot your password?"
@@ -519,7 +574,7 @@ msgstr "忘了密碼嗎?"
#: mediagoblin/templates/mediagoblin/auth/register.html:28
#: mediagoblin/templates/mediagoblin/auth/register.html:36
msgid "Create an account!"
-msgstr "建立一個帳號!"
+msgstr "建立一個帳號!"
#: mediagoblin/templates/mediagoblin/auth/register.html:40
msgid "Create"
@@ -534,52 +589,90 @@ msgid ""
"your web browser:\n"
"\n"
"%(verification_url)s"
-msgstr "嗨 %(username)s,\n\n啟動 GNU MediaGoblin 帳號, 在你的瀏覽器中打開下面的網址:\n\n%(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: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:57
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:181
+msgid "Add attachment"
+msgstr "新增附件"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:61
+#: mediagoblin/templates/mediagoblin/edit/delete_account.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/collection_confirm_delete.html:46
+#: mediagoblin/templates/mediagoblin/user_pages/collection_item_confirm_remove.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:67
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:48
+msgid "Cancel"
+msgstr "取消"
+
+#: mediagoblin/templates/mediagoblin/edit/attachments.html:63
+#: mediagoblin/templates/mediagoblin/edit/edit.html:42
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:52
+#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
+#: 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
msgid "Editing %(media_title)s"
-msgstr "編輯 %(media_title)s 中"
-
-#: mediagoblin/templates/mediagoblin/edit/edit.html:42
-#: 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:53
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:82
-#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
-msgid "Cancel"
-msgstr "取消"
-
-#: mediagoblin/templates/mediagoblin/edit/edit.html:43
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:47
-#: mediagoblin/templates/mediagoblin/edit/edit_collection.html:33
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:41
-msgid "Save changes"
-msgstr "儲存變更"
+msgstr "編輯 %(media_title)s"
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:28
-#: mediagoblin/templates/mediagoblin/edit/edit_account.html:41
+#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
#, python-format
msgid "Changing %(username)s's account settings"
-msgstr "正在改變 %(username)s的帳號設定"
+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 ""
+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'的檔案中"
+msgstr "編輯 %(username)s 的個人檔案"
#: mediagoblin/templates/mediagoblin/listings/collection.html:30
#: mediagoblin/templates/mediagoblin/listings/collection.html:35
@@ -587,122 +680,162 @@ msgstr "編輯 %(username)s'的檔案中"
#: mediagoblin/templates/mediagoblin/listings/tag.html:35
#, python-format
msgid "Media tagged with: %(tag_name)s"
-msgstr "此媒體被標識為:%(tag_name)s"
+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/image.html:23
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:52
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:136
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:55
msgid "Download"
msgstr "下載"
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:38
-#: mediagoblin/templates/mediagoblin/media_displays/image.html:27
msgid "Original"
-msgstr "原始的"
+msgstr "原始檔"
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:44
msgid ""
"Sorry, this audio will not work because \n"
"\tyour web browser does not support HTML5 \n"
"\taudio."
-msgstr "抱歉,此聲音檔案無法播放,因為你的瀏覽器不支援HTML5音訊。"
+msgstr "抱歉,此聲音無法播放,因為您的瀏覽器不支援 HTML5 音訊。"
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:47
msgid ""
"You can get a modern web browser that \n"
"\tcan play the audio at \n"
"\t http://getfirefox.com!"
-msgstr "你可以在此取得可以播放音樂的瀏覽器 \n\t http://getfirefox.com!"
+msgstr "您可以在 http://getfirefox.com 取得可以播放此聲音的瀏覽器!"
#: 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 "原始檔案"
#: mediagoblin/templates/mediagoblin/media_displays/audio.html:63
msgid "WebM file (Vorbis codec)"
-msgstr "WebM 檔案 (Vorbis codec)"
+msgstr "WebM 檔案 (Vorbis 編碼)"
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:40
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:87
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:93
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:99
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:105
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:59
+#: mediagoblin/templates/mediagoblin/user_pages/media.html:65
+#, python-format
+msgid "Image for %(media_title)s"
+msgstr " %(media_title)s 的照片"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:112
+msgid "Toggle Rotate"
+msgstr "切換旋轉"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:113
+msgid "Perspective"
+msgstr "視角"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:116
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:117
+msgid "Front"
+msgstr "正面"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:120
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:121
+msgid "Top"
+msgstr "頂面"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:124
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:125
+msgid "Side"
+msgstr "側面"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:130
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:131
+msgid "WebGL"
+msgstr "WebGL"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:138
+msgid "Download model"
+msgstr "下載模型"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:146
+msgid "File Format"
+msgstr "檔案格式"
+
+#: mediagoblin/templates/mediagoblin/media_displays/stl.html:148
+msgid "Object Height"
+msgstr "物件高度"
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:44
msgid ""
-"Sorry, this video will not work because \n"
-"\t your web browser does not support HTML5 \n"
-"\t video."
-msgstr "抱歉, 此影片無法使用,因為 \n» 你的瀏覽器不支援 HTML5 \n» 的影片."
+"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 \n"
-"\t http://getfirefox.com!"
-msgstr "你可以取得\n» 播放這樣檔案的最新瀏覽器 \n» http://getfirefox.com!"
-
-#: mediagoblin/templates/mediagoblin/media_displays/video.html:59
-msgid "WebM file (640p; VP8/Vorbis)"
+" can play this video at \n"
+" http://getfirefox.com!"
msgstr ""
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:69
+msgid "WebM file (640p; VP8/Vorbis)"
+msgstr "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:83
-msgid "Add"
-msgstr "增加"
+msgstr "新增蒐藏"
#: mediagoblin/templates/mediagoblin/submit/start.html:23
#: mediagoblin/templates/mediagoblin/submit/start.html:30
msgid "Add your media"
-msgstr "加入你的媒體"
+msgstr "加入您的媒體"
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:30
#, python-format
msgid "%(collection_title)s (%(username)s's collection)"
-msgstr ""
+msgstr "%(collection_title)s (%(username)s 的蒐藏)"
#: mediagoblin/templates/mediagoblin/user_pages/collection.html:39
#, python-format
msgid "%(collection_title)s by %(username)s"
-msgstr ""
+msgstr "%(collection_title)s by %(username)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 "刪除"
-#: mediagoblin/templates/mediagoblin/user_pages/collection.html:59
-#, python-format
-msgid ""
-"
"
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:171
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:187
-msgid "Attachments"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/user_pages/media.html:192
-msgid "Add attachment"
-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:52
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:54
msgid "+"
-msgstr ""
+msgstr "+"
-#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:57
+#: mediagoblin/templates/mediagoblin/user_pages/media_collect.html:58
msgid "Add a new collection"
-msgstr ""
+msgstr "新增新的蒐藏"
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:29
msgid ""
"You can track the state of media being processed for your gallery here."
-msgstr "針對你的展示區,你可以在這裡追蹤媒體處理的狀態。"
+msgstr "您可以在這裡追蹤您的藝廊中媒體處理的狀態。"
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:89
msgid "Your last 10 successful uploads"
-msgstr ""
+msgstr "您的最近 10 次成功上傳的紀錄"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:31
#: mediagoblin/templates/mediagoblin/user_pages/user.html:89
#, python-format
msgid "%(username)s's profile"
-msgstr "%(username)s的個人檔案"
+msgstr "%(username)s 的個人檔案"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:43
msgid "Sorry, no such user found."
-msgstr "抱歉,找不到這個使用者."
+msgstr "抱歉,找不到這個使用者。"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:50
#: mediagoblin/templates/mediagoblin/user_pages/user.html:70
@@ -807,16 +926,16 @@ msgstr "需要認證電子郵件"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
msgid "Almost done! Your account still needs to be activated."
-msgstr "幾乎完成了!但你的帳號仍然需要被啟用。"
+msgstr "快完成了!但您需要啟用您的帳號。"
#: 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 "馬上會有一封電子郵件告訴你如何做."
+msgstr "啟用步驟的 email 將會寄到您的信箱。"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
msgid "In case it doesn't:"
-msgstr "如果仍然無法認證,你可以:"
+msgstr "如果仍然無法認證,您可以:"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:65
msgid "Resend verification email"
@@ -826,98 +945,82 @@ msgstr "重送認證信"
msgid ""
"Someone has registered an account with this username, but it still has to be"
" activated."
-msgstr "有人用了這個帳號登錄了,但是這個帳號仍需要被啟用。"
+msgstr "有人用了這個帳號登錄了,但是這個帳號需要被啟用。"
#: 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 log in and resend it."
-msgstr "如果你就是那個人, 但是遺失了認證信, 你可以登入 然後重送一次."
+msgstr "如果您就是本人但是掉了認證信,您可以 登入 然後重送一次。"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
msgid "Here's a spot to tell others about yourself."
-msgstr "這個地方能讓你向他人介紹自己。"
+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 "這個使用者還沒(來得及)填寫個人檔案。"
+msgstr "這個使用者(還)沒有填寫個人檔案。"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:125
-msgid "Change account settings"
-msgstr "更改帳號設定"
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:124
+msgid "Browse collections"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:138
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:137
#, python-format
msgid "View all of %(username)s's media"
-msgstr "查看%(username)s的全部媒體檔案"
+msgstr "查看 %(username)s 的全部媒體"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:151
+#: 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 "這個地方是你的媒體檔案會出現的地方,但是你似乎還沒有加入任何東西。"
+msgstr "此處是您的媒體會出現的地方,但是似乎還沒有加入任何東西。"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:157
-msgid "Add media"
-msgstr "新增媒體檔案"
-
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:163
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:87
-#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:72
+#: 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 "似乎還沒有任何的媒體檔案..."
+msgstr "那裡好像還沒有任何的媒體…"
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:39
-#, python-format
-msgid ""
-" \n"
-" %(note)s"
+#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:49
+msgid "(remove)"
+msgstr " (移除)"
+
+#: mediagoblin/templates/mediagoblin/utils/collections.html:21
+msgid "Collected in"
msgstr ""
-#: mediagoblin/templates/mediagoblin/utils/collection_gallery.html:47
-#, python-format
-msgid " (remove)"
-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 "feed圖示"
+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:38
-#, python-format
-msgid "View on OpenStreetMap"
-msgstr "在 OpenStreetMap上觀看"
-
#: mediagoblin/templates/mediagoblin/utils/license.html:25
msgid "All rights reserved"
msgstr "版權所有"
#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
msgid "← Newer"
-msgstr "← 更新"
+msgstr "← 更新的"
#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
msgid "Older →"
-msgstr "更舊 →"
+msgstr "更舊的 →"
#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
msgid "Go to page:"
@@ -926,109 +1029,145 @@ msgstr "跳到頁數:"
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:28
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:33
msgid "newer"
-msgstr "更新"
+msgstr "更新的"
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:39
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:44
msgid "older"
-msgstr "更舊"
+msgstr "更舊的"
#: mediagoblin/templates/mediagoblin/utils/tags.html:20
msgid "Tagged with"
-msgstr "標籤為"
+msgstr "標籤"
-#: mediagoblin/tools/exif.py:78
+#: mediagoblin/tools/exif.py:80
msgid "Could not read the image file."
-msgstr "無法讀取影像檔案。"
+msgstr "無法讀取圖片檔案。"
-#: mediagoblin/user_pages/forms.py:28
-msgid "I am sure I want to delete this"
-msgstr "我確定我想要刪除"
+#: mediagoblin/tools/response.py:35
+msgid "Oops!"
+msgstr "糟糕!"
-#: mediagoblin/user_pages/forms.py:32
-msgid "I am sure I want to remove this item from the collection"
+#: mediagoblin/tools/response.py:36
+msgid "An error occured"
+msgstr "發生錯誤"
+
+#: mediagoblin/tools/response.py:51
+msgid "Operation not allowed"
+msgstr "操作不允許"
+
+#: mediagoblin/tools/response.py:52
+msgid ""
+"Sorry Dave, I can't let you do that!
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 對不起,我不能讓你這樣做!
您正在試著操作不允許您使用的功能。您打算刪除所有使用者的帳號嗎?"
+
+#: mediagoblin/tools/response.py:60
+msgid ""
+"There doesn't seem to be a page at this address. Sorry!
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:23
+msgid "Comment"
msgstr ""
+#: mediagoblin/user_pages/forms.py:25
+msgid ""
+"You can use Markdown for"
+" formatting."
+msgstr "您可以用 Markdown 來排版。"
+
+#: mediagoblin/user_pages/forms.py:31
+msgid "I am sure I want to delete this"
+msgstr "我確定我要刪除這個媒體"
+
#: mediagoblin/user_pages/forms.py:35
-msgid "-- Select --"
+msgid "I am sure I want to remove this item from the collection"
+msgstr "我確定我要從蒐藏中移除此項目"
+
+#: mediagoblin/user_pages/forms.py:39
+msgid "Collection"
msgstr ""
-#: mediagoblin/user_pages/forms.py:37
+#: mediagoblin/user_pages/forms.py:40
+msgid "-- Select --"
+msgstr "— 請選擇 —"
+
+#: mediagoblin/user_pages/forms.py:42
msgid "Include a note"
-msgstr ""
+msgstr "加註"
#: mediagoblin/user_pages/lib.py:56
msgid "commented on your post"
-msgstr ""
+msgstr "在您的內容張貼評論"
-#: mediagoblin/user_pages/views.py:161
+#: mediagoblin/user_pages/views.py:166
msgid "Oops, your comment was empty."
-msgstr "啊,你的留言是空的。"
+msgstr "啊,您的留言是空的。"
-#: mediagoblin/user_pages/views.py:167
+#: mediagoblin/user_pages/views.py:172
msgid "Your comment has been posted!"
-msgstr "你的留言已經刊登!"
+msgstr "您的留言已經張貼完成!"
-#: mediagoblin/user_pages/views.py:235
+#: 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 ""
+msgstr "您需要選擇或是新增一個蒐藏"
-#: mediagoblin/user_pages/views.py:243
+#: mediagoblin/user_pages/views.py:248
#, python-format
msgid "\"%s\" already in collection \"%s\""
-msgstr ""
+msgstr "「%s」已經在「%s」蒐藏"
-#: mediagoblin/user_pages/views.py:258
+#: mediagoblin/user_pages/views.py:264
#, python-format
msgid "\"%s\" added to collection \"%s\""
-msgstr ""
+msgstr "「%s」加入「%s」蒐藏"
-#: mediagoblin/user_pages/views.py:266
-msgid "Please check your entries and try again."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:297
-msgid ""
-"Some of the files with this entry seem to be missing. Deleting anyway."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:302
+#: mediagoblin/user_pages/views.py:286
msgid "You deleted the media."
-msgstr "你已刪除此媒體檔案。"
+msgstr "您已經刪除此媒體。"
-#: mediagoblin/user_pages/views.py:309
+#: mediagoblin/user_pages/views.py:293
msgid "The media was not deleted because you didn't check that you were sure."
-msgstr "此媒體檔案尚未被刪除因為你還沒有確認你真的要刪除。"
+msgstr "由於您沒有勾選確認,該媒體沒有被移除。"
-#: mediagoblin/user_pages/views.py:317
+#: mediagoblin/user_pages/views.py:301
msgid "You are about to delete another user's media. Proceed with caution."
-msgstr "你在刪除其他人的媒體檔案。請小心處理喔。"
+msgstr "您正在刪除別人的媒體,請小心操作。"
+
+#: mediagoblin/user_pages/views.py:375
+msgid "You deleted the item from the collection."
+msgstr "您已經從該蒐藏中刪除該項目。"
#: mediagoblin/user_pages/views.py:379
-msgid "You deleted the item from the collection."
-msgstr ""
-
-#: mediagoblin/user_pages/views.py:383
msgid "The item was not removed because you didn't check that you were sure."
-msgstr ""
+msgstr "由於您沒有勾選確認,該項目沒有被移除。"
-#: mediagoblin/user_pages/views.py:393
+#: mediagoblin/user_pages/views.py:389
msgid ""
"You are about to delete an item from another user's collection. Proceed with"
" caution."
-msgstr ""
+msgstr "您正在從別人的蒐藏中刪除項目,請小心操作。"
-#: mediagoblin/user_pages/views.py:426
+#: mediagoblin/user_pages/views.py:422
#, python-format
msgid "You deleted the collection \"%s\""
-msgstr ""
+msgstr "您已經刪除「%s」蒐藏。"
-#: mediagoblin/user_pages/views.py:433
+#: mediagoblin/user_pages/views.py:429
msgid ""
"The collection was not deleted because you didn't check that you were sure."
-msgstr ""
+msgstr "由於您沒有勾選確認,該蒐藏沒有被移除。"
-#: mediagoblin/user_pages/views.py:443
+#: mediagoblin/user_pages/views.py:439
msgid ""
"You are about to delete another user's collection. Proceed with caution."
-msgstr ""
+msgstr "您正在刪除別人的蒐藏,請小心操作。"
diff --git a/mediagoblin/init/__init__.py b/mediagoblin/init/__init__.py
index 9b0025c9..d16027db 100644
--- a/mediagoblin/init/__init__.py
+++ b/mediagoblin/init/__init__.py
@@ -14,18 +14,17 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see .
-from beaker.cache import CacheManager
-from beaker.util import parse_cache_config_options
import jinja2
from mediagoblin.tools import staticdirect
+from mediagoblin.tools.translate import set_available_locales
from mediagoblin.init.config import (
read_mediagoblin_config, generate_validation_report)
from mediagoblin import mg_globals
from mediagoblin.mg_globals import setup_globals
from mediagoblin.db.open import setup_connection_and_db_from_config, \
check_db_migrations_current, load_models
-from mediagoblin.workbench import WorkbenchManager
+from mediagoblin.tools.workbench import WorkbenchManager
from mediagoblin.storage import storage_system_from_config
@@ -37,6 +36,11 @@ class ImproperlyConfigured(Error):
pass
+def setup_locales():
+ """Checks which language translations are available and sets them"""
+ set_available_locales()
+
+
def setup_global_and_app_config(config_path):
global_config, validation_result = read_mediagoblin_config(config_path)
app_config = global_config['mediagoblin']
@@ -60,15 +64,13 @@ def setup_database():
load_models(app_config)
# Set up the database
- connection, db = setup_connection_and_db_from_config(app_config)
+ db = setup_connection_and_db_from_config(app_config)
check_db_migrations_current(db)
- setup_globals(
- db_connection=connection,
- database=db)
+ setup_globals(database=db)
- return connection, db
+ return db
def get_jinja_loader(user_template_path=None, current_theme=None,
@@ -142,16 +144,3 @@ def setup_workbench():
workbench_manager = WorkbenchManager(app_config['workbench_path'])
setup_globals(workbench_manager=workbench_manager)
-
-
-def setup_beaker_cache():
- """
- Setup the Beaker Cache manager.
- """
- cache_config = mg_globals.global_config['beaker.cache']
- cache_config = dict(
- [(u'cache.%s' % key, value)
- for key, value in cache_config.iteritems()])
- cache = CacheManager(**parse_cache_config_options(cache_config))
- setup_globals(cache=cache)
- return cache
diff --git a/mediagoblin/init/celery/__init__.py b/mediagoblin/init/celery/__init__.py
index fc595ea7..169cc935 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 hook_runall
MANDATORY_CELERY_IMPORTS = ['mediagoblin.processing.task']
@@ -65,6 +66,8 @@ def setup_celery_app(app_config, global_config,
celery_app = Celery()
celery_app.config_from_object(celery_settings)
+ hook_runall('celery_setup', 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..b395a826 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 hook_runall
OUR_MODULENAME = __name__
@@ -36,49 +36,18 @@ 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)
+ logging.config.fileConfig(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)
-
- for handler in logger.handlers:
- handler.setFormatter(formatter)
+ hook_runall('celery_logging_setup')
setup_logging.connect(setup_logging_from_paste_ini)
diff --git a/mediagoblin/init/config.py b/mediagoblin/init/config.py
index ac4ab9bf..11a91cff 100644
--- a/mediagoblin/init/config.py
+++ b/mediagoblin/init/config.py
@@ -14,6 +14,7 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see .
+import logging
import os
import pkg_resources
@@ -21,6 +22,9 @@ from configobj import ConfigObj, flatten_errors
from validate import Validator
+_log = logging.getLogger(__name__)
+
+
CONFIG_SPEC_PATH = pkg_resources.resource_filename(
'mediagoblin', 'config_spec.ini')
@@ -42,6 +46,9 @@ def read_mediagoblin_config(config_path, config_spec=CONFIG_SPEC_PATH):
Also provides %(__file__)s and %(here)s values of this file and
its directory respectively similar to paste deploy.
+ Also reads for [plugins] section, appends all config_spec.ini
+ files from said plugins into the general config_spec specification.
+
This function doesn't itself raise any exceptions if validation
fails, you'll have to do something
@@ -57,10 +64,45 @@ def read_mediagoblin_config(config_path, config_spec=CONFIG_SPEC_PATH):
"""
config_path = os.path.abspath(config_path)
+ # PRE-READ of config file. This allows us to fetch the plugins so
+ # we can add their plugin specs to the general config_spec.
+ config = ConfigObj(
+ config_path,
+ interpolation='ConfigParser')
+
+ plugins = config.get("plugins", {}).keys()
+ plugin_configs = {}
+
+ for plugin in plugins:
+ try:
+ plugin_config_spec_path = pkg_resources.resource_filename(
+ plugin, "config_spec.ini")
+ if not os.path.exists(plugin_config_spec_path):
+ continue
+
+ plugin_config_spec = ConfigObj(
+ plugin_config_spec_path,
+ encoding='UTF8', list_values=False, _inspec=True)
+ _setup_defaults(plugin_config_spec, config_path)
+
+ if not "plugin_spec" in plugin_config_spec:
+ continue
+
+ plugin_configs[plugin] = plugin_config_spec["plugin_spec"]
+
+ except ImportError:
+ _log.warning(
+ "When setting up config section, could not import '%s'" %
+ plugin)
+
+ # Now load the main config spec
config_spec = ConfigObj(
config_spec,
encoding='UTF8', list_values=False, _inspec=True)
+ # append the plugin specific sections of the config spec
+ config_spec['plugins'] = plugin_configs
+
_setup_defaults(config_spec, config_path)
config = ConfigObj(
diff --git a/mediagoblin/init/plugins/__init__.py b/mediagoblin/init/plugins/__init__.py
index cdf9b5ad..0df4f381 100644
--- a/mediagoblin/init/plugins/__init__.py
+++ b/mediagoblin/init/plugins/__init__.py
@@ -59,6 +59,4 @@ def setup_plugins():
pman.register_hooks(plugin.hooks)
# Execute anything registered to the setup hook.
- setup_list = pman.get_hook_callables('setup')
- for fun in setup_list:
- fun()
+ pluginapi.hook_runall('setup')
diff --git a/mediagoblin/listings/routing.py b/mediagoblin/listings/routing.py
index d25f1c8c..ee8f5020 100644
--- a/mediagoblin/listings/routing.py
+++ b/mediagoblin/listings/routing.py
@@ -14,10 +14,16 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see .
-from mediagoblin.routing import add_route
+from mediagoblin.tools.routing import add_route
add_route('mediagoblin.listings.tags_listing',
"/tag//",
"mediagoblin.listings.views:tag_listing")
+
+# Atom feeds:
add_route('mediagoblin.listings.tag_atom_feed', "/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 a8824390..35af7148 100644
--- a/mediagoblin/listings/views.py
+++ b/mediagoblin/listings/views.py
@@ -14,8 +14,8 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see .
-from mediagoblin.db.util import media_entries_for_tag_slug, DESCENDING
-
+from mediagoblin.db.models import MediaEntry
+from mediagoblin.db.util import media_entries_for_tag_slug
from mediagoblin.tools.pagination import Pagination
from mediagoblin.tools.response import render_to_response
from mediagoblin.decorators import uses_pagination
@@ -36,10 +36,6 @@ def _get_tag_name_from_entries(media_entries, tag_slug):
tag_name = tag['name']
break
break
- # TODO: Remove after SQL-switch, it's mongo specific
- if hasattr(media_entries, "rewind"):
- media_entries.rewind()
-
return tag_name
@@ -49,7 +45,7 @@ def tag_listing(request, page):
tag_slug = request.matchdict[u'tag']
cursor = media_entries_for_tag_slug(request.db, tag_slug)
- cursor = cursor.sort('created', DESCENDING)
+ cursor = cursor.order_by(MediaEntry.created.desc())
pagination = Pagination(page, cursor)
media_entries = pagination()
@@ -68,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.sort('created', DESCENDING)
+ 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/meddleware/__init__.py b/mediagoblin/meddleware/__init__.py
index a9c712d7..886c9ad9 100644
--- a/mediagoblin/meddleware/__init__.py
+++ b/mediagoblin/meddleware/__init__.py
@@ -14,10 +14,9 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see .
-ENABLED_MEDDLEWARE = (
- 'mediagoblin.meddleware.noop:NoOpMeddleware',
+ENABLED_MEDDLEWARE = [
'mediagoblin.meddleware.csrf:CsrfMeddleware',
- )
+ ]
class BaseMeddleware(object):
diff --git a/mediagoblin/meddleware/csrf.py b/mediagoblin/meddleware/csrf.py
index 1488e6d9..661f0ba2 100644
--- a/mediagoblin/meddleware/csrf.py
+++ b/mediagoblin/meddleware/csrf.py
@@ -17,11 +17,12 @@
import random
import logging
-from webob.exc import HTTPForbidden
+from werkzeug.exceptions import Forbidden
from wtforms import Form, HiddenField, validators
from mediagoblin import mg_globals
from mediagoblin.meddleware import BaseMeddleware
+from mediagoblin.tools.translate import lazy_pass_to_ugettext as _
_log = logging.getLogger(__name__)
@@ -127,9 +128,13 @@ class CsrfMeddleware(BaseMeddleware):
None)
if cookie_token is None:
- # the CSRF cookie must be present in the request
+ # the CSRF cookie must be present in the request, if not a
+ # cookie blocker might be in action (in the best case)
_log.error('CSRF cookie not present')
- return HTTPForbidden()
+ raise Forbidden(_('CSRF cookie not present. This is most likely '
+ 'the result of a cookie blocker or somesuch. '
+ 'Make sure to permit the settings of cookies for '
+ 'this domain.'))
# get the form token and confirm it matches
form = CsrfForm(request.form)
@@ -142,5 +147,6 @@ class CsrfMeddleware(BaseMeddleware):
# either the tokens didn't match or the form token wasn't
# present; either way, the request is denied
- _log.error('CSRF validation failed')
- return HTTPForbidden()
+ errstr = 'CSRF validation failed'
+ _log.error(errstr)
+ raise Forbidden(errstr)
diff --git a/mediagoblin/media_types/__init__.py b/mediagoblin/media_types/__init__.py
index 5bf0124c..20e1918e 100644
--- a/mediagoblin/media_types/__init__.py
+++ b/mediagoblin/media_types/__init__.py
@@ -20,6 +20,7 @@ import logging
import tempfile
from mediagoblin import mg_globals
+from mediagoblin.tools.common import import_component
from mediagoblin.tools.translate import lazy_pass_to_ugettext as _
_log = logging.getLogger(__name__)
@@ -31,6 +32,56 @@ class InvalidFileType(Exception):
pass
+class MediaManagerBase(object):
+ "Base class for all media managers"
+
+ # Please override in actual media managers
+ media_fetch_order = None
+
+ @staticmethod
+ def sniff_handler(*args, **kwargs):
+ return False
+
+ def __init__(self, entry):
+ self.entry = entry
+
+ def __getitem__(self, i):
+ return getattr(self, i)
+
+ def __contains__(self, i):
+ return hasattr(self, i)
+
+
+class CompatMediaManager(object):
+ def __init__(self, mm_dict, entry=None):
+ self.mm_dict = mm_dict
+ self.entry = entry
+
+ def __call__(self, entry):
+ "So this object can look like a class too, somehow"
+ assert self.entry is None
+ return self.__class__(self.mm_dict, entry)
+
+ def __getitem__(self, i):
+ return self.mm_dict[i]
+
+ def __contains__(self, i):
+ return (i in self.mm_dict)
+
+ @property
+ def media_fetch_order(self):
+ return self.mm_dict.get('media_fetch_order')
+
+ def sniff_handler(self, *args, **kwargs):
+ func = self.mm_dict.get("sniff_handler", None)
+ if func is not None:
+ return func(*args, **kwargs)
+ return False
+
+ def __getattr__(self, i):
+ return self.mm_dict[i]
+
+
def sniff_media(media):
'''
Iterate through the enabled media types and find those suited
@@ -49,7 +100,7 @@ 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 manager.sniff_handler(media_file, media=media):
_log.info('{0} accepts the file'.format(media_type))
return media_type, manager
else:
@@ -73,28 +124,12 @@ def get_media_managers():
Generator, yields all enabled media managers
'''
for media_type in get_media_types():
- __import__(media_type)
+ mm = import_component(media_type + ":MEDIA_MANAGER")
- yield media_type, sys.modules[media_type].MEDIA_MANAGER
+ if isinstance(mm, dict):
+ mm = CompatMediaManager(mm)
-
-def get_media_manager(_media_type):
- '''
- Get the MEDIA_MANAGER based on a media type string
-
- Example::
- get_media_type('mediagoblin.media_types.image')
- '''
- if not _media_type:
- return False
-
- for media_type, manager in get_media_managers():
- if media_type in _media_type:
- return manager
-
- # Nope? Then raise an error
- raise FileTypeNotSupported(
- "MediaManager not in enabled types. Check media_types in config?")
+ yield media_type, mm
def get_media_type_and_manager(filename):
@@ -110,7 +145,7 @@ def get_media_type_and_manager(filename):
for media_type, manager in get_media_managers():
# Omit the dot from the extension and match it against
# the media manager
- if ext[1:] in manager['accepted_extensions']:
+ if ext[1:] in manager.accepted_extensions:
return media_type, manager
else:
_log.info('File {0} has no file extension, let\'s hope the sniffers get it.'.format(
diff --git a/mediagoblin/media_types/ascii/__init__.py b/mediagoblin/media_types/ascii/__init__.py
index 856d1d7b..0931e83a 100644
--- a/mediagoblin/media_types/ascii/__init__.py
+++ b/mediagoblin/media_types/ascii/__init__.py
@@ -14,16 +14,18 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see .
+from mediagoblin.media_types import MediaManagerBase
from mediagoblin.media_types.ascii.processing import process_ascii, \
sniff_handler
-MEDIA_MANAGER = {
- "human_readable": "ASCII",
- "processor": process_ascii, # alternately a string,
- # 'mediagoblin.media_types.image.processing'?
- "sniff_handler": sniff_handler,
- "display_template": "mediagoblin/media_displays/ascii.html",
- "default_thumb": "images/media_thumbs/ascii.jpg",
- "accepted_extensions": [
- "txt", "asc", "nfo"]}
+class ASCIIMediaManager(MediaManagerBase):
+ human_readable = "ASCII"
+ processor = staticmethod(process_ascii)
+ sniff_handler = staticmethod(sniff_handler)
+ display_template = "mediagoblin/media_displays/ascii.html"
+ default_thumb = "images/media_thumbs/ascii.jpg"
+ accepted_extensions = ["txt", "asc", "nfo"]
+
+
+MEDIA_MANAGER = ASCIIMediaManager
diff --git a/mediagoblin/media_types/ascii/asciitoimage.py b/mediagoblin/media_types/ascii/asciitoimage.py
index 108de023..786941f6 100644
--- a/mediagoblin/media_types/ascii/asciitoimage.py
+++ b/mediagoblin/media_types/ascii/asciitoimage.py
@@ -14,9 +14,14 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see .
-import Image
-import ImageFont
-import ImageDraw
+try:
+ from PIL import Image
+ from PIL import ImageFont
+ from PIL import ImageDraw
+except ImportError:
+ import Image
+ import ImageFont
+ import ImageDraw
import logging
import pkg_resources
import os
diff --git a/mediagoblin/media_types/ascii/models.py b/mediagoblin/media_types/ascii/models.py
index 865c216c..c7505292 100644
--- a/mediagoblin/media_types/ascii/models.py
+++ b/mediagoblin/media_types/ascii/models.py
@@ -15,13 +15,16 @@
# along with this program. If not, see .
-from mediagoblin.db.sql.base import Base
+from mediagoblin.db.base import Base
from sqlalchemy import (
Column, Integer, ForeignKey)
from sqlalchemy.orm import relationship, backref
+BACKREF_NAME = "ascii__media_data"
+
+
class AsciiData(Base):
__tablename__ = "ascii__mediadata"
@@ -29,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("ascii__media_data", 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 04d1166c..2f6079be 100644
--- a/mediagoblin/media_types/ascii/processing.py
+++ b/mediagoblin/media_types/ascii/processing.py
@@ -15,7 +15,10 @@
# along with this program. If not, see .
import chardet
import os
-import Image
+try:
+ from PIL import Image
+except ImportError:
+ import Image
import logging
from mediagoblin import mg_globals as mgg
@@ -38,12 +41,15 @@ def sniff_handler(media_file, **kw):
return False
-def process_ascii(entry):
- '''
- Code to process a txt file
- '''
+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']
- workbench = mgg.workbench_manager.create_workbench()
# Conversions subdirectory to avoid collisions
conversions_subdir = os.path.join(
workbench.dir, 'conversions')
@@ -124,8 +130,14 @@ def process_ascii(entry):
'ascii',
'xmlcharrefreplace'))
- mgg.queue_store.delete_file(queued_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 = []
+
media_files_dict = entry.setdefault('media_files', {})
media_files_dict['thumb'] = thumb_filepath
media_files_dict['unicode'] = unicode_filepath
diff --git a/mediagoblin/media_types/audio/__init__.py b/mediagoblin/media_types/audio/__init__.py
index 4f3ead60..2eb7300e 100644
--- a/mediagoblin/media_types/audio/__init__.py
+++ b/mediagoblin/media_types/audio/__init__.py
@@ -14,12 +14,17 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see .
+from mediagoblin.media_types import MediaManagerBase
from mediagoblin.media_types.audio.processing import process_audio, \
sniff_handler
-MEDIA_MANAGER = {
- 'human_readable': 'Audio',
- 'processor': process_audio,
- 'sniff_handler': sniff_handler,
- 'display_template': 'mediagoblin/media_displays/audio.html',
- 'accepted_extensions': ['mp3', 'flac', 'wav', 'm4a']}
+
+class AudioMediaManager(MediaManagerBase):
+ human_readable = "Audio"
+ processor = staticmethod(process_audio)
+ sniff_handler = staticmethod(sniff_handler)
+ display_template = "mediagoblin/media_displays/audio.html"
+ accepted_extensions = ["mp3", "flac", "wav", "m4a"]
+
+
+MEDIA_MANAGER = AudioMediaManager
diff --git a/mediagoblin/media_types/audio/models.py b/mediagoblin/media_types/audio/models.py
index 5f18d2c2..d01367d5 100644
--- a/mediagoblin/media_types/audio/models.py
+++ b/mediagoblin/media_types/audio/models.py
@@ -15,13 +15,16 @@
# along with this program. If not, see .
-from mediagoblin.db.sql.base import Base
+from mediagoblin.db.base import Base
from sqlalchemy import (
Column, Integer, ForeignKey)
from sqlalchemy.orm import relationship, backref
+BACKREF_NAME = "audio__media_data"
+
+
class AudioData(Base):
__tablename__ = "audio__mediadata"
@@ -29,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("audio__media_data", 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 fada083f..101b83e5 100644
--- a/mediagoblin/media_types/audio/processing.py
+++ b/mediagoblin/media_types/audio/processing.py
@@ -15,7 +15,7 @@
# along with this program. If not, see .
import logging
-import tempfile
+from tempfile import NamedTemporaryFile
import os
from mediagoblin import mg_globals as mgg
@@ -42,10 +42,15 @@ def sniff_handler(media_file, **kw):
return False
-def process_audio(entry):
- audio_config = mgg.global_config['media_type:mediagoblin.media_types.audio']
+def process_audio(proc_state):
+ """Code to process uploaded audio. Will be run by celery.
- workbench = mgg.workbench_manager.create_workbench()
+ 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
queued_filename = workbench.localized_file(
@@ -73,7 +78,7 @@ def process_audio(entry):
transcoder = AudioTranscoder()
- with tempfile.NamedTemporaryFile() as webm_audio_tmp:
+ with NamedTemporaryFile(dir=workbench.dir) as webm_audio_tmp:
progress_callback = ProgressCallback(entry)
transcoder.transcode(
@@ -99,7 +104,7 @@ def process_audio(entry):
original=os.path.splitext(
queued_filepath[-1])[0]))
- with tempfile.NamedTemporaryFile(suffix='.ogg') as wav_tmp:
+ with NamedTemporaryFile(dir=workbench.dir, suffix='.ogg') as wav_tmp:
_log.info('Creating OGG source for spectrogram')
transcoder.transcode(
queued_filename,
@@ -109,7 +114,7 @@ def process_audio(entry):
thumbnailer = AudioThumbnailer()
- with tempfile.NamedTemporaryFile(suffix='.jpg') as spectrogram_tmp:
+ with NamedTemporaryFile(dir=workbench.dir, suffix='.jpg') as spectrogram_tmp:
thumbnailer.spectrogram(
wav_tmp.name,
spectrogram_tmp.name,
@@ -122,7 +127,7 @@ def process_audio(entry):
entry.media_files['spectrogram'] = spectrogram_filepath
- with tempfile.NamedTemporaryFile(suffix='.jpg') as thumb_tmp:
+ with NamedTemporaryFile(dir=workbench.dir, suffix='.jpg') as thumb_tmp:
thumbnailer.thumbnail_spectrogram(
spectrogram_tmp.name,
thumb_tmp.name,
@@ -142,9 +147,10 @@ def process_audio(entry):
else:
entry.media_files['thumb'] = ['fake', 'thumb', 'path.jpg']
- mgg.queue_store.delete_file(queued_filepath)
-
- entry.save()
-
- # clean up workbench
- workbench.destroy_self()
+ # 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 = []
diff --git a/mediagoblin/media_types/audio/spectrogram.py b/mediagoblin/media_types/audio/spectrogram.py
index 458855c1..dd4d0299 100644
--- a/mediagoblin/media_types/audio/spectrogram.py
+++ b/mediagoblin/media_types/audio/spectrogram.py
@@ -19,7 +19,10 @@
# Bram de Jong
# 2012, Joar Wandborg
-from PIL import Image
+try:
+ from PIL import Image
+except ImportError:
+ import Image
import math
import numpy
diff --git a/mediagoblin/media_types/audio/transcoders.py b/mediagoblin/media_types/audio/transcoders.py
index f3d49c30..84e6af7e 100644
--- a/mediagoblin/media_types/audio/transcoders.py
+++ b/mediagoblin/media_types/audio/transcoders.py
@@ -14,9 +14,11 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see .
-import pdb
import logging
-import Image
+try:
+ from PIL import Image
+except ImportError:
+ import Image
from mediagoblin.processing import BadMediaFail
from mediagoblin.media_types.audio import audioprocessing
@@ -233,5 +235,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 d4720fab..5130ef48 100644
--- a/mediagoblin/media_types/image/__init__.py
+++ b/mediagoblin/media_types/image/__init__.py
@@ -14,15 +14,42 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see .
+import datetime
+
+from mediagoblin.media_types import MediaManagerBase
from mediagoblin.media_types.image.processing import process_image, \
sniff_handler
-MEDIA_MANAGER = {
- "human_readable": "Image",
- "processor": process_image, # alternately a string,
- # 'mediagoblin.media_types.image.processing'?
- "sniff_handler": sniff_handler,
- "display_template": "mediagoblin/media_displays/image.html",
- "default_thumb": "images/media_thumbs/image.jpg",
- "accepted_extensions": ["jpg", "jpeg", "png", "gif", "tiff"]}
+class ImageMediaManager(MediaManagerBase):
+ human_readable = "Image"
+ processor = staticmethod(process_image)
+ sniff_handler = staticmethod(sniff_handler)
+ display_template = "mediagoblin/media_displays/image.html"
+ default_thumb = "images/media_thumbs/image.png"
+ accepted_extensions = ["jpg", "jpeg", "png", "gif", "tiff"]
+ media_fetch_order = [u'medium', u'original', u'thumb']
+
+ def get_original_date(self):
+ """
+ Get the original date and time from the EXIF information. Returns
+ either a datetime object or None (if anything goes wrong)
+ """
+ if not self.entry.media_data or not self.entry.media_data.exif_all:
+ return None
+
+ try:
+ # Try wrapped around all since exif_all might be none,
+ # EXIF DateTimeOriginal or printable might not exist
+ # or strptime might not be able to parse date correctly
+ exif_date = self.entry.media_data.exif_all[
+ 'EXIF DateTimeOriginal']['printable']
+ original_date = datetime.datetime.strptime(
+ exif_date,
+ '%Y:%m:%d %H:%M:%S')
+ return original_date
+ except (KeyError, ValueError):
+ return None
+
+
+MEDIA_MANAGER = ImageMediaManager
diff --git a/mediagoblin/media_types/image/models.py b/mediagoblin/media_types/image/models.py
index fc518daa..b2ea3960 100644
--- a/mediagoblin/media_types/image/models.py
+++ b/mediagoblin/media_types/image/models.py
@@ -15,12 +15,15 @@
# along with this program. If not, see .
-from mediagoblin.db.sql.base import Base
+from mediagoblin.db.base import Base
from sqlalchemy import (
Column, Integer, Float, ForeignKey)
from sqlalchemy.orm import relationship, backref
-from mediagoblin.db.sql.extratypes import JSONEncoded
+from mediagoblin.db.extratypes import JSONEncoded
+
+
+BACKREF_NAME = "image__media_data"
class ImageData(Base):
@@ -30,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("image__media_data", 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 bdb2290f..bc0ce3f8 100644
--- a/mediagoblin/media_types/image/processing.py
+++ b/mediagoblin/media_types/image/processing.py
@@ -14,45 +14,85 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see .
-import Image
+try:
+ from PIL import Image
+except ImportError:
+ import Image
import os
import logging
from mediagoblin import mg_globals as mgg
-from mediagoblin.processing import BadMediaFail, \
- create_pub_filepath, FilenameBuilder
+from mediagoblin.processing import BadMediaFail, FilenameBuilder
from mediagoblin.tools.exif import exif_fix_image_orientation, \
extract_exif, clean_exif, get_gps_data, get_useful, \
exif_image_needs_rotation
_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)):
+
+def resize_image(proc_state, resized, keyname, target_name, new_size,
+ exif_tags, workdir):
"""
Store a resized version of an image and return its pathname.
Arguments:
- entry -- the entry for the image to resize
- filename -- the filename of the original image being resized
- new_path -- public file path for the new resized image
+ proc_state -- the processing state for the image to resize
+ resized -- an image from Image.open() of the original image being resized
+ keyname -- Under what key to save in the db.
+ target_name -- public file path for the new resized image
exif_tags -- EXIF data for the original image
workdir -- directory path for storing converted image files
new_size -- 2-tuple size for the resized image
"""
- try:
- resized = Image.open(filename)
- except IOError:
- raise BadMediaFail()
+ config = mgg.global_config['media_type:mediagoblin.media_types.image']
+
resized = exif_fix_image_orientation(resized, exif_tags) # Fix orientation
- resized.thumbnail(new_size, Image.ANTIALIAS)
+
+ filter_config = config['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])
+ tmp_resized_filename = os.path.join(workdir, target_name)
with file(tmp_resized_filename, 'w') as resized_file:
- resized.save(resized_file)
- mgg.public_store.copy_local_to_storage(tmp_resized_filename, new_path)
+ resized.save(resized_file, quality=config['quality'])
+ proc_state.store_public(keyname, tmp_resized_filename, target_name)
+
+
+def resize_tool(proc_state, force, keyname, target_name,
+ conversions_subdir, exif_tags):
+ # filename -- the filename of the original image being resized
+ filename = proc_state.get_queued_filename()
+ max_width = mgg.global_config['media:' + keyname]['max_width']
+ max_height = mgg.global_config['media:' + keyname]['max_height']
+ # If the size of the original file exceeds the specified size for the desized
+ # file, a target_name file is created and later associated with the media
+ # entry.
+ # Also created if the file needs rotation, or if forced.
+ try:
+ im = Image.open(filename)
+ except IOError:
+ raise BadMediaFail()
+ if force \
+ or im.size[0] > max_width \
+ or im.size[1] > max_height \
+ or exif_image_needs_rotation(exif_tags):
+ resize_image(
+ proc_state, im, unicode(keyname), target_name,
+ (max_width, max_height),
+ exif_tags, conversions_subdir)
SUPPORTED_FILETYPES = ['png', 'gif', 'jpg', 'jpeg']
@@ -76,19 +116,21 @@ def sniff_handler(media_file, **kw):
return False
-def process_image(entry):
+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.
"""
- Code to process an image
- """
- workbench = mgg.workbench_manager.create_workbench()
+ 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
@@ -96,52 +138,20 @@ def process_image(entry):
gps_data = get_gps_data(exif_tags)
# Always create a small thumbnail
- thumb_filepath = create_pub_filepath(
- entry, name_builder.fill('{basename}.thumbnail{ext}'))
- resize_image(entry, queued_filename, thumb_filepath,
- exif_tags, conversions_subdir,
- (mgg.global_config['media:thumb']['max_width'],
- mgg.global_config['media:thumb']['max_height']))
+ resize_tool(proc_state, True, 'thumb',
+ name_builder.fill('{basename}.thumbnail{ext}'),
+ conversions_subdir, exif_tags)
- # 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
- # entry.
- medium = Image.open(queued_filename)
- if medium.size[0] > mgg.global_config['media:medium']['max_width'] \
- or medium.size[1] > mgg.global_config['media:medium']['max_height'] \
- or exif_image_needs_rotation(exif_tags):
- medium_filepath = create_pub_filepath(
- entry, name_builder.fill('{basename}.medium{ext}'))
- resize_image(
- entry, queued_filename, medium_filepath,
- exif_tags, conversions_subdir,
- (mgg.global_config['media:medium']['max_width'],
- mgg.global_config['media:medium']['max_height']))
- else:
- medium_filepath = None
+ # Possibly create a medium
+ resize_tool(proc_state, False, 'medium',
+ name_builder.fill('{basename}.medium{ext}'),
+ conversions_subdir, exif_tags)
- # we have to re-read because unlike PIL, not everything reads
- # things in string representation :)
- queued_file = file(queued_filename, 'rb')
-
- with queued_file:
- original_filepath = create_pub_filepath(
- entry, name_builder.fill('{basename}{ext}'))
-
- with mgg.public_store.get_file(original_filepath, 'wb') \
- as original_file:
- original_file.write(queued_file.read())
+ # Copy our queued local workbench to its final destination
+ proc_state.copy_original(name_builder.fill('{basename}{ext}'))
# Remove queued media file from storage and database
- mgg.queue_store.delete_file(queued_filepath)
- 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.delete_queue_file()
# Insert exif data into database
exif_all = clean_exif(exif_tags)
@@ -154,8 +164,6 @@ def process_image(entry):
gps_data['gps_' + key] = gps_data.pop(key)
entry.media_data_init(**gps_data)
- # clean up workbench
- workbench.destroy_self()
if __name__ == '__main__':
import sys
diff --git a/mediagoblin/media_types/pdf/__init__.py b/mediagoblin/media_types/pdf/__init__.py
new file mode 100644
index 00000000..f0ba7867
--- /dev/null
+++ b/mediagoblin/media_types/pdf/__init__.py
@@ -0,0 +1,31 @@
+# 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 .
+
+from mediagoblin.media_types import MediaManagerBase
+from mediagoblin.media_types.pdf.processing import process_pdf, \
+ sniff_handler
+
+
+class PDFMediaManager(MediaManagerBase):
+ human_readable = "PDF"
+ processor = staticmethod(process_pdf)
+ sniff_handler = staticmethod(sniff_handler)
+ display_template = "mediagoblin/media_displays/pdf.html"
+ default_thumb = "images/media_thumbs/pdf.jpg"
+ accepted_extensions = ["pdf"]
+
+
+MEDIA_MANAGER = PDFMediaManager
diff --git a/mediagoblin/media_types/pdf/migrations.py b/mediagoblin/media_types/pdf/migrations.py
new file mode 100644
index 00000000..f54c23ea
--- /dev/null
+++ b/mediagoblin/media_types/pdf/migrations.py
@@ -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 .
+
+MIGRATIONS = {}
diff --git a/mediagoblin/media_types/pdf/models.py b/mediagoblin/media_types/pdf/models.py
new file mode 100644
index 00000000..c39262d1
--- /dev/null
+++ b/mediagoblin/media_types/pdf/models.py
@@ -0,0 +1,58 @@
+# 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 .
+
+
+from mediagoblin.db.base import Base
+
+from sqlalchemy import (
+ Column, Float, Integer, String, DateTime, ForeignKey)
+from sqlalchemy.orm import relationship, backref
+
+
+BACKREF_NAME = "pdf__media_data"
+
+
+class PdfData(Base):
+ __tablename__ = "pdf__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, uselist=False,
+ cascade="all, delete-orphan"))
+ pages = Column(Integer)
+
+ # These are taken from what pdfinfo can do, perhaps others make sense too
+ pdf_author = Column(String)
+ pdf_title = Column(String)
+ # note on keywords: this is the pdf parsed string, it should be considered a cached
+ # value like the rest of these values, since they can be deduced at query time / client
+ # side too.
+ pdf_keywords = Column(String)
+ pdf_creator = Column(String)
+ pdf_producer = Column(String)
+ pdf_creation_date = Column(DateTime)
+ pdf_modified_date = Column(DateTime)
+ pdf_version_major = Column(Integer)
+ pdf_version_minor = Column(Integer)
+ pdf_page_size_width = Column(Float) # unit: pts
+ pdf_page_size_height = Column(Float)
+ pdf_pages = Column(Integer)
+
+
+DATA_MODEL = PdfData
+MODELS = [PdfData]
diff --git a/mediagoblin/media_types/pdf/processing.py b/mediagoblin/media_types/pdf/processing.py
new file mode 100644
index 00000000..49742fd7
--- /dev/null
+++ b/mediagoblin/media_types/pdf/processing.py
@@ -0,0 +1,277 @@
+# 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 .
+import os
+import logging
+import dateutil.parser
+from subprocess import PIPE, Popen
+
+from mediagoblin import mg_globals as mgg
+from mediagoblin.processing import (create_pub_filepath,
+ FilenameBuilder, BadMediaFail)
+from mediagoblin.tools.translate import fake_ugettext_passthrough as _
+
+_log = logging.getLogger(__name__)
+
+# TODO - cache (memoize) util
+
+# This is a list created via uniconv --show and hand removing some types that
+# we already support via other media types better.
+unoconv_supported = [
+ 'bib', # - BibTeX [.bib]
+ #bmp - Windows Bitmap [.bmp]
+ 'csv', # - Text CSV [.csv]
+ 'dbf', # - dBASE [.dbf]
+ 'dif', # - Data Interchange Format [.dif]
+ 'doc6', # - Microsoft Word 6.0 [.doc]
+ 'doc95', # - Microsoft Word 95 [.doc]
+ 'docbook', # - DocBook [.xml]
+ 'doc', # - Microsoft Word 97/2000/XP [.doc]
+ 'docx7', # - Microsoft Office Open XML [.docx]
+ 'docx', # - Microsoft Office Open XML [.docx]
+ #emf - Enhanced Metafile [.emf]
+ 'eps', # - Encapsulated PostScript [.eps]
+ 'fodp', # - OpenDocument Presentation (Flat XML) [.fodp]
+ 'fods', # - OpenDocument Spreadsheet (Flat XML) [.fods]
+ 'fodt', # - OpenDocument Text (Flat XML) [.fodt]
+ #gif - Graphics Interchange Format [.gif]
+ 'html', # - HTML Document (OpenOffice.org Writer) [.html]
+ #jpg - Joint Photographic Experts Group [.jpg]
+ 'latex', # - LaTeX 2e [.ltx]
+ 'mediawiki', # - MediaWiki [.txt]
+ 'met', # - OS/2 Metafile [.met]
+ 'odd', # - OpenDocument Drawing [.odd]
+ 'odg', # - ODF Drawing (Impress) [.odg]
+ 'odp', # - ODF Presentation [.odp]
+ 'ods', # - ODF Spreadsheet [.ods]
+ 'odt', # - ODF Text Document [.odt]
+ 'ooxml', # - Microsoft Office Open XML [.xml]
+ 'otg', # - OpenDocument Drawing Template [.otg]
+ 'otp', # - ODF Presentation Template [.otp]
+ 'ots', # - ODF Spreadsheet Template [.ots]
+ 'ott', # - Open Document Text [.ott]
+ #pbm - Portable Bitmap [.pbm]
+ #pct - Mac Pict [.pct]
+ 'pdb', # - AportisDoc (Palm) [.pdb]
+ #pdf - Portable Document Format [.pdf]
+ #pgm - Portable Graymap [.pgm]
+ #png - Portable Network Graphic [.png]
+ 'pot', # - Microsoft PowerPoint 97/2000/XP Template [.pot]
+ 'potm', # - Microsoft PowerPoint 2007/2010 XML Template [.potm]
+ #ppm - Portable Pixelmap [.ppm]
+ 'pps', # - Microsoft PowerPoint 97/2000/XP (Autoplay) [.pps]
+ 'ppt', # - Microsoft PowerPoint 97/2000/XP [.ppt]
+ 'pptx', # - Microsoft PowerPoint 2007/2010 XML [.pptx]
+ 'psw', # - Pocket Word [.psw]
+ 'pwp', # - PlaceWare [.pwp]
+ 'pxl', # - Pocket Excel [.pxl]
+ #ras - Sun Raster Image [.ras]
+ 'rtf', # - Rich Text Format [.rtf]
+ 'sda', # - StarDraw 5.0 (OpenOffice.org Impress) [.sda]
+ 'sdc3', # - StarCalc 3.0 [.sdc]
+ 'sdc4', # - StarCalc 4.0 [.sdc]
+ 'sdc', # - StarCalc 5.0 [.sdc]
+ 'sdd3', # - StarDraw 3.0 (OpenOffice.org Impress) [.sdd]
+ 'sdd4', # - StarImpress 4.0 [.sdd]
+ 'sdd', # - StarImpress 5.0 [.sdd]
+ 'sdw3', # - StarWriter 3.0 [.sdw]
+ 'sdw4', # - StarWriter 4.0 [.sdw]
+ 'sdw', # - StarWriter 5.0 [.sdw]
+ 'slk', # - SYLK [.slk]
+ 'stc', # - OpenOffice.org 1.0 Spreadsheet Template [.stc]
+ 'std', # - OpenOffice.org 1.0 Drawing Template [.std]
+ 'sti', # - OpenOffice.org 1.0 Presentation Template [.sti]
+ 'stw', # - Open Office.org 1.0 Text Document Template [.stw]
+ #svg - Scalable Vector Graphics [.svg]
+ 'svm', # - StarView Metafile [.svm]
+ 'swf', # - Macromedia Flash (SWF) [.swf]
+ 'sxc', # - OpenOffice.org 1.0 Spreadsheet [.sxc]
+ 'sxd3', # - StarDraw 3.0 [.sxd]
+ 'sxd5', # - StarDraw 5.0 [.sxd]
+ 'sxd', # - OpenOffice.org 1.0 Drawing (OpenOffice.org Impress) [.sxd]
+ 'sxi', # - OpenOffice.org 1.0 Presentation [.sxi]
+ 'sxw', # - Open Office.org 1.0 Text Document [.sxw]
+ #text - Text Encoded [.txt]
+ #tiff - Tagged Image File Format [.tiff]
+ #txt - Text [.txt]
+ 'uop', # - Unified Office Format presentation [.uop]
+ 'uos', # - Unified Office Format spreadsheet [.uos]
+ 'uot', # - Unified Office Format text [.uot]
+ 'vor3', # - StarDraw 3.0 Template (OpenOffice.org Impress) [.vor]
+ 'vor4', # - StarWriter 4.0 Template [.vor]
+ 'vor5', # - StarDraw 5.0 Template (OpenOffice.org Impress) [.vor]
+ 'vor', # - StarCalc 5.0 Template [.vor]
+ #wmf - Windows Metafile [.wmf]
+ 'xhtml', # - XHTML Document [.html]
+ 'xls5', # - Microsoft Excel 5.0 [.xls]
+ 'xls95', # - Microsoft Excel 95 [.xls]
+ 'xls', # - Microsoft Excel 97/2000/XP [.xls]
+ 'xlt5', # - Microsoft Excel 5.0 Template [.xlt]
+ 'xlt95', # - Microsoft Excel 95 Template [.xlt]
+ 'xlt', # - Microsoft Excel 97/2000/XP Template [.xlt]
+ #xpm - X PixMap [.xpm]
+]
+
+def is_unoconv_working():
+ # TODO: must have libreoffice-headless installed too, need to check for it
+ unoconv = where('unoconv')
+ if not unoconv:
+ return False
+ try:
+ proc = Popen([unoconv, '--show'], stderr=PIPE)
+ output = proc.stderr.read()
+ except OSError, e:
+ _log.warn(_('unoconv failing to run, check log file'))
+ return False
+ if 'ERROR' in output:
+ return False
+ return True
+
+def supported_extensions(cache=[None]):
+ if cache[0] == None:
+ cache[0] = 'pdf'
+ if is_unoconv_working():
+ cache.extend(unoconv_supported)
+ return cache
+
+def where(name):
+ for p in os.environ['PATH'].split(os.pathsep):
+ fullpath = os.path.join(p, name)
+ if os.path.exists(fullpath):
+ return fullpath
+ return None
+
+def check_prerequisites():
+ if not where('pdfinfo'):
+ _log.warn('missing pdfinfo')
+ return False
+ if not where('pdftocairo'):
+ _log.warn('missing pdfcairo')
+ return False
+ return True
+
+def sniff_handler(media_file, **kw):
+ if not check_prerequisites():
+ return False
+ if kw.get('media') is not None:
+ name, ext = os.path.splitext(kw['media'].filename)
+ clean_ext = ext[1:].lower()
+
+ if clean_ext in supported_extensions():
+ return True
+
+ return False
+
+def create_pdf_thumb(original, thumb_filename, width, height):
+ # Note: pdftocairo adds '.png', remove it
+ thumb_filename = thumb_filename[:-4]
+ executable = where('pdftocairo')
+ args = [executable, '-scale-to', str(min(width, height)),
+ '-singlefile', '-png', original, thumb_filename]
+ _log.debug('calling {0}'.format(repr(' '.join(args))))
+ Popen(executable=executable, args=args).wait()
+
+def pdf_info(original):
+ """
+ Extract dictionary of pdf information. This could use a library instead
+ of a process.
+
+ Note: I'm assuming pdfinfo output is sanitized (integers where integers are
+ expected, etc.) - if this is wrong then an exception will be raised and caught
+ leading to the dreaded error page. It seems a safe assumption.
+ """
+ ret_dict = {}
+ pdfinfo = where('pdfinfo')
+ try:
+ proc = Popen(executable=pdfinfo,
+ args=[pdfinfo, original], stdout=PIPE)
+ lines = proc.stdout.readlines()
+ except OSError:
+ _log.debug('pdfinfo could not read the pdf file.')
+ raise BadMediaFail()
+
+ info_dict = dict([[part.strip() for part in l.strip().split(':', 1)]
+ for l in lines if ':' in l])
+
+ for date_key in [('pdf_mod_date', 'ModDate'),
+ ('pdf_creation_date', 'CreationDate')]:
+ if date_key in info_dict:
+ ret_dict[date_key] = dateutil.parser.parse(info_dict[date_key])
+ for db_key, int_key in [('pdf_pages', 'Pages')]:
+ if int_key in info_dict:
+ ret_dict[db_key] = int(info_dict[int_key])
+
+ # parse 'PageSize' field: 595 x 842 pts (A4)
+ page_size_parts = info_dict['Page size'].split()
+ ret_dict['pdf_page_size_width'] = float(page_size_parts[0])
+ ret_dict['pdf_page_size_height'] = float(page_size_parts[2])
+
+ for db_key, str_key in [('pdf_keywords', 'Keywords'),
+ ('pdf_creator', 'Creator'), ('pdf_producer', 'Producer'),
+ ('pdf_author', 'Author'), ('pdf_title', 'Title')]:
+ ret_dict[db_key] = info_dict.get(str_key, None)
+ ret_dict['pdf_version_major'], ret_dict['pdf_version_minor'] = \
+ map(int, info_dict['PDF version'].split('.'))
+
+ return ret_dict
+
+def process_pdf(proc_state):
+ """Code to process a pdf 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
+
+ queued_filename = proc_state.get_queued_filename()
+ name_builder = FilenameBuilder(queued_filename)
+
+ # Copy our queued local workbench to its final destination
+ original_dest = name_builder.fill('{basename}{ext}')
+ proc_state.copy_original(original_dest)
+
+ # Create a pdf if this is a different doc, store pdf for viewer
+ ext = queued_filename.rsplit('.', 1)[-1].lower()
+ if ext == 'pdf':
+ pdf_filename = queued_filename
+ else:
+ pdf_filename = queued_filename.rsplit('.', 1)[0] + '.pdf'
+ unoconv = where('unoconv')
+ call(executable=unoconv,
+ args=[unoconv, '-v', '-f', 'pdf', queued_filename])
+ if not os.path.exists(pdf_filename):
+ _log.debug('unoconv failed to convert file to pdf')
+ raise BadMediaFail()
+ proc_state.store_public(keyname=u'pdf', local_file=pdf_filename)
+
+ pdf_info_dict = pdf_info(pdf_filename)
+
+ for name, width, height in [
+ (u'thumb', mgg.global_config['media:thumb']['max_width'],
+ mgg.global_config['media:thumb']['max_height']),
+ (u'medium', mgg.global_config['media:medium']['max_width'],
+ mgg.global_config['media:medium']['max_height']),
+ ]:
+ filename = name_builder.fill('{basename}.%s.png' % name)
+ path = workbench.joinpath(filename)
+ create_pdf_thumb(pdf_filename, path, width, height)
+ assert(os.path.exists(path))
+ proc_state.store_public(keyname=name, local_file=path)
+
+ proc_state.delete_queue_file()
+
+ entry.media_data_init(**pdf_info_dict)
+ entry.save()
diff --git a/mediagoblin/media_types/stl/__init__.py b/mediagoblin/media_types/stl/__init__.py
new file mode 100644
index 00000000..6ae8a8b9
--- /dev/null
+++ b/mediagoblin/media_types/stl/__init__.py
@@ -0,0 +1,31 @@
+# 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 .
+
+from mediagoblin.media_types import MediaManagerBase
+from mediagoblin.media_types.stl.processing import process_stl, \
+ sniff_handler
+
+
+class STLMediaManager(MediaManagerBase):
+ human_readable = "stereo lithographics"
+ processor = staticmethod(process_stl)
+ sniff_handler = staticmethod(sniff_handler)
+ display_template = "mediagoblin/media_displays/stl.html"
+ default_thumb = "images/media_thumbs/video.jpg"
+ accepted_extensions = ["obj", "stl"]
+
+
+MEDIA_MANAGER = STLMediaManager
diff --git a/mediagoblin/media_types/stl/assets/blender_render.blend b/mediagoblin/media_types/stl/assets/blender_render.blend
new file mode 100644
index 00000000..dd356a06
Binary files /dev/null and b/mediagoblin/media_types/stl/assets/blender_render.blend differ
diff --git a/mediagoblin/media_types/stl/assets/blender_render.py b/mediagoblin/media_types/stl/assets/blender_render.py
new file mode 100644
index 00000000..99d5fa31
--- /dev/null
+++ b/mediagoblin/media_types/stl/assets/blender_render.py
@@ -0,0 +1,84 @@
+# 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 .
+
+
+import bpy, json, os
+
+
+try:
+ CONFIG = json.loads(os.environ["RENDER_SETUP"])
+ MODEL_EXT = CONFIG["model_ext"]
+ MODEL_PATH = CONFIG["model_path"]
+ CAMERA_COORD = CONFIG["camera_coord"]
+ CAMERA_FOCUS = CONFIG["camera_focus"]
+ CAMERA_CLIP = CONFIG["camera_clip"]
+ CAMERA_TYPE = CONFIG["projection"]
+ CAMERA_ORTHO = CONFIG["greatest"] * 1.5
+ RENDER_WIDTH = CONFIG["width"]
+ RENDER_HEIGHT = CONFIG["height"]
+ RENDER_FILE = CONFIG["out_file"]
+except KeyError:
+ print("Failed to load RENDER_SETUP environment variable.")
+ exit(1)
+
+
+# add and setup camera
+bpy.ops.object.camera_add(view_align=False, enter_editmode=False,
+ location = CAMERA_COORD)
+camera_ob = bpy.data.objects[0]
+camera = bpy.data.cameras[0]
+camera.clip_end = CAMERA_CLIP
+camera.ortho_scale = CAMERA_ORTHO
+camera.type = CAMERA_TYPE
+
+
+
+# add an empty for focusing the camera
+bpy.ops.object.add(location=CAMERA_FOCUS)
+target = bpy.data.objects[1]
+bpy.ops.object.select_all(action="SELECT")
+bpy.ops.object.track_set(type="TRACKTO")
+bpy.ops.object.select_all(action="DESELECT")
+
+
+if MODEL_EXT == 'stl':
+ # import an stl model
+ bpy.ops.import_mesh.stl(filepath=MODEL_PATH)
+
+elif MODEL_EXT == 'obj':
+ # import an obj model
+ bpy.ops.import_scene.obj(
+ filepath=MODEL_PATH,
+ use_smooth_groups=False,
+ use_image_search=False,
+ axis_forward="Y",
+ axis_up="Z")
+
+
+# rotate the imported objects with meshes in the scene
+if CAMERA_TYPE == "PERSP":
+ for obj in bpy.data.objects[2:]:
+ obj.rotation_euler[2]=-.3
+
+
+# attempt to render
+scene = bpy.data.scenes.values()[0]
+scene.camera = camera_ob
+scene.render.filepath = RENDER_FILE
+scene.render.resolution_x = RENDER_WIDTH
+scene.render.resolution_y = RENDER_HEIGHT
+scene.render.resolution_percentage = 100
+bpy.ops.render.render(write_still=True)
diff --git a/mediagoblin/media_types/stl/migrations.py b/mediagoblin/media_types/stl/migrations.py
new file mode 100644
index 00000000..f54c23ea
--- /dev/null
+++ b/mediagoblin/media_types/stl/migrations.py
@@ -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 .
+
+MIGRATIONS = {}
diff --git a/mediagoblin/media_types/stl/model_loader.py b/mediagoblin/media_types/stl/model_loader.py
new file mode 100644
index 00000000..88f19314
--- /dev/null
+++ b/mediagoblin/media_types/stl/model_loader.py
@@ -0,0 +1,137 @@
+# 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 .
+
+
+import struct
+
+
+class ThreeDeeParseError(Exception):
+ pass
+
+
+class ThreeDee():
+ """
+ 3D model parser base class. Derrived classes are used for basic
+ analysis of 3D models, and are not intended to be used for 3D
+ rendering.
+ """
+
+ def __init__(self, fileob):
+ self.verts = []
+ self.average = [0, 0, 0]
+ self.min = [None, None, None]
+ self.max = [None, None, None]
+ self.width = 0 # x axis
+ self.depth = 0 # y axis
+ self.height = 0 # z axis
+
+ self.load(fileob)
+ if not len(self.verts):
+ raise ThreeDeeParseError("Empty model.")
+
+ for vector in self.verts:
+ for i in range(3):
+ num = vector[i]
+ self.average[i] += num
+ if not self.min[i]:
+ self.min[i] = num
+ self.max[i] = num
+ else:
+ if self.min[i] > num:
+ self.min[i] = num
+ if self.max[i] < num:
+ self.max[i] = num
+
+ for i in range(3):
+ self.average[i]/=len(self.verts)
+
+ self.width = abs(self.min[0] - self.max[0])
+ self.depth = abs(self.min[1] - self.max[1])
+ self.height = abs(self.min[2] - self.max[2])
+
+
+ def load(self, fileob):
+ """Override this method in your subclass."""
+ pass
+
+
+class ObjModel(ThreeDee):
+ """
+ Parser for textureless wavefront obj files. File format
+ reference: http://en.wikipedia.org/wiki/Wavefront_.obj_file
+ """
+
+ def __vector(self, line, expected=3):
+ nums = map(float, line.strip().split(" ")[1:])
+ return tuple(nums[:expected])
+
+ def load(self, fileob):
+ for line in fileob:
+ line = line.strip()
+ if line[0] == "v":
+ self.verts.append(self.__vector(line))
+
+
+class BinaryStlModel(ThreeDee):
+ """
+ Parser for ascii-encoded stl files. File format reference:
+ http://en.wikipedia.org/wiki/STL_%28file_format%29#Binary_STL
+ """
+
+ def load(self, fileob):
+ fileob.seek(80) # skip the header
+ count = struct.unpack(".
+
+
+from mediagoblin.db.base import Base
+
+from sqlalchemy import (
+ Column, Integer, Float, String, ForeignKey)
+from sqlalchemy.orm import relationship, backref
+
+
+BACKREF_NAME = "stl__media_data"
+
+
+class StlData(Base):
+ __tablename__ = "stl__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, uselist=False,
+ cascade="all, delete-orphan"))
+
+ center_x = Column(Float)
+ center_y = Column(Float)
+ center_z = Column(Float)
+
+ width = Column(Float)
+ height = Column(Float)
+ depth = Column(Float)
+
+ file_type = Column(String)
+
+
+DATA_MODEL = StlData
+MODELS = [StlData]
diff --git a/mediagoblin/media_types/stl/processing.py b/mediagoblin/media_types/stl/processing.py
new file mode 100644
index 00000000..49382495
--- /dev/null
+++ b/mediagoblin/media_types/stl/processing.py
@@ -0,0 +1,193 @@
+# 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 .
+
+import os
+import json
+import logging
+import subprocess
+import pkg_resources
+
+from mediagoblin import mg_globals as mgg
+from mediagoblin.processing import create_pub_filepath, \
+ FilenameBuilder
+
+from mediagoblin.media_types.stl import model_loader
+
+
+_log = logging.getLogger(__name__)
+SUPPORTED_FILETYPES = ['stl', 'obj']
+
+BLEND_FILE = pkg_resources.resource_filename(
+ 'mediagoblin.media_types.stl',
+ os.path.join(
+ 'assets',
+ 'blender_render.blend'))
+BLEND_SCRIPT = pkg_resources.resource_filename(
+ 'mediagoblin.media_types.stl',
+ os.path.join(
+ 'assets',
+ 'blender_render.py'))
+
+
+def sniff_handler(media_file, **kw):
+ if kw.get('media') is not None:
+ name, ext = os.path.splitext(kw['media'].filename)
+ clean_ext = ext[1:].lower()
+
+ if clean_ext in SUPPORTED_FILETYPES:
+ _log.info('Found file extension in supported filetypes')
+ return True
+ else:
+ _log.debug('Media present, extension not found in {0}'.format(
+ SUPPORTED_FILETYPES))
+ else:
+ _log.warning('Need additional information (keyword argument \'media\')'
+ ' to be able to handle sniffing')
+
+ return False
+
+
+def blender_render(config):
+ """
+ Called to prerender a model.
+ """
+ env = {"RENDER_SETUP" : json.dumps(config), "DISPLAY":":0"}
+ subprocess.call(
+ ["blender",
+ "-b", BLEND_FILE,
+ "-F", "JPEG",
+ "-P", BLEND_SCRIPT],
+ env=env)
+
+
+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')
+ name_builder = FilenameBuilder(queued_filename)
+
+ ext = queued_filename.lower().strip()[-4:]
+ if ext.startswith("."):
+ ext = ext[1:]
+ else:
+ ext = None
+
+ # Attempt to parse the model file and divine some useful
+ # information about it.
+ with open(queued_filename, 'rb') as model_file:
+ model = model_loader.auto_detect(model_file, ext)
+
+ # generate preview images
+ greatest = [model.width, model.height, model.depth]
+ greatest.sort()
+ greatest = greatest[-1]
+
+ def snap(name, camera, width=640, height=640, project="ORTHO"):
+ filename = name_builder.fill(name)
+ workbench_path = workbench.joinpath(filename)
+ shot = {
+ "model_path": queued_filename,
+ "model_ext": ext,
+ "camera_coord": camera,
+ "camera_focus": model.average,
+ "camera_clip": greatest*10,
+ "greatest": greatest,
+ "projection": project,
+ "width": width,
+ "height": height,
+ "out_file": workbench_path,
+ }
+ blender_render(shot)
+
+ # make sure the image rendered to the workbench path
+ assert os.path.exists(workbench_path)
+
+ # copy it up!
+ with open(workbench_path, 'rb') as rendered_file:
+ public_path = create_pub_filepath(entry, filename)
+
+ with mgg.public_store.get_file(public_path, "wb") as public_file:
+ public_file.write(rendered_file.read())
+
+ return public_path
+
+ thumb_path = snap(
+ "{basename}.thumb.jpg",
+ [0, greatest*-1.5, greatest],
+ mgg.global_config['media:thumb']['max_width'],
+ mgg.global_config['media:thumb']['max_height'],
+ project="PERSP")
+
+ perspective_path = snap(
+ "{basename}.perspective.jpg",
+ [0, greatest*-1.5, greatest], project="PERSP")
+
+ topview_path = snap(
+ "{basename}.top.jpg",
+ [model.average[0], model.average[1], greatest*2])
+
+ frontview_path = snap(
+ "{basename}.front.jpg",
+ [model.average[0], greatest*-2, model.average[2]])
+
+ sideview_path = snap(
+ "{basename}.side.jpg",
+ [greatest*-2, model.average[1], model.average[2]])
+
+ ## Save the public file stuffs
+ model_filepath = create_pub_filepath(
+ entry, name_builder.fill('{basename}{ext}'))
+
+ with mgg.public_store.get_file(model_filepath, 'wb') as model_file:
+ with open(queued_filename, 'rb') as queued_file:
+ model_file.write(queued_file.read())
+
+ # 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'original'] = model_filepath
+ media_files_dict[u'thumb'] = thumb_path
+ media_files_dict[u'perspective'] = perspective_path
+ media_files_dict[u'top'] = topview_path
+ media_files_dict[u'side'] = sideview_path
+ media_files_dict[u'front'] = frontview_path
+
+ # Put model dimensions into the database
+ dimensions = {
+ "center_x" : model.average[0],
+ "center_y" : model.average[1],
+ "center_z" : model.average[2],
+ "width" : model.width,
+ "height" : model.height,
+ "depth" : model.depth,
+ "file_type" : ext,
+ }
+ entry.media_data_init(**dimensions)
diff --git a/mediagoblin/media_types/video/__init__.py b/mediagoblin/media_types/video/__init__.py
index 3faa5b9f..569cf11a 100644
--- a/mediagoblin/media_types/video/__init__.py
+++ b/mediagoblin/media_types/video/__init__.py
@@ -14,16 +14,23 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see .
+from mediagoblin.media_types import MediaManagerBase
from mediagoblin.media_types.video.processing import process_video, \
sniff_handler
-MEDIA_MANAGER = {
- "human_readable": "Video",
- "processor": process_video, # alternately a string,
- # 'mediagoblin.media_types.image.processing'?
- "sniff_handler": sniff_handler,
- "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"]}
+class VideoMediaManager(MediaManagerBase):
+ human_readable = "Video"
+ processor = staticmethod(process_video)
+ sniff_handler = staticmethod(sniff_handler)
+ 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"]
+
+ # 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"'
+
+
+MEDIA_MANAGER = VideoMediaManager
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 .
+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 35ed92bf..0b52c53f 100644
--- a/mediagoblin/media_types/video/models.py
+++ b/mediagoblin/media_types/video/models.py
@@ -15,25 +15,83 @@
# along with this program. If not, see .
-from mediagoblin.db.sql.base import Base
+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("video__media_data", 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:
+
+
+ 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.VideoMediaManager.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 ce47313f..ff2c94a0 100644
--- a/mediagoblin/media_types/video/processing.py
+++ b/mediagoblin/media_types/video/processing.py
@@ -14,8 +14,9 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see .
-import tempfile
+from tempfile import NamedTemporaryFile
import logging
+import datetime
from mediagoblin import mg_globals as mgg
from mediagoblin.processing import \
@@ -23,6 +24,7 @@ from mediagoblin.processing import \
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,19 +54,20 @@ def sniff_handler(media_file, **kw):
return False
-def process_video(entry):
+def process_video(proc_state):
"""
Process a video entry, transcode the queued media files (originals) and
create a thumbnail for the entry.
+
+ 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']
- workbench = mgg.workbench_manager.create_workbench()
-
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(
@@ -73,34 +76,61 @@ def process_video(entry):
thumbnail_filepath = create_pub_filepath(
entry, name_builder.fill('{basename}.thumbnail.jpg'))
- # Create a temporary file for the video destination
- tmp_dst = tempfile.NamedTemporaryFile()
-
+ # Create a temporary file for the video destination (cleaned up with workbench)
+ tmp_dst = NamedTemporaryFile(dir=workbench.dir, delete=False)
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.get_file(medium_filepath, 'wb').write(
- tmp_dst.read())
- _log.debug('Saved medium')
+ dimensions = (
+ mgg.global_config['media:medium']['max_width'],
+ mgg.global_config['media:medium']['max_height'])
- entry.media_files['webm_640'] = medium_filepath
+ # 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
+
+ # 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')
+
+ entry.media_files['webm_640'] = medium_filepath
+
+ did_transcode = True
# Save the width and height of the transcoded video
entry.media_data_init(
- width=transcoder.dst_data.videowidth,
- height=transcoder.dst_data.videoheight)
+ width=dst_dimensions[0],
+ height=dst_dimensions[1])
- # Create a temporary file for the video thumbnail
- tmp_thumb = tempfile.NamedTemporaryFile(suffix='.jpg')
+ # Temporary file for the video thumbnail (cleaned up with workbench)
+ tmp_thumb = NamedTemporaryFile(dir=workbench.dir, suffix='.jpg', delete=False)
with tmp_thumb:
# Create a thumbnail.jpg that fits in a 180x180 square
@@ -111,30 +141,72 @@ def process_video(entry):
# Push the thumbnail to public storage
_log.debug('Saving thumbnail...')
- mgg.public_store.get_file(thumbnail_filepath, 'wb').write(
- tmp_thumb.read())
- _log.debug('Saved 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
- queued_file = file(queued_filename, 'rb')
+ _log.debug('Saving original...')
+ proc_state.copy_original(queued_filepath[-1])
- with queued_file:
- original_filepath = create_pub_filepath(
- entry,
- queued_filepath[-1])
+ # Remove queued media file from storage and database
+ proc_state.delete_queue_file()
- with mgg.public_store.get_file(original_filepath, 'wb') as \
- original_file:
- _log.debug('Saving original...')
- original_file.write(queued_file.read())
- _log.debug('Saved original')
- entry.media_files['original'] = original_filepath
+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])
- mgg.queue_store.delete_file(queued_filepath)
+ # We have to convert videorate into a sequence because it's a
+ # special type normally..
- # Save the MediaEntry
- entry.save()
+ 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 26f96b5f..90a767dd 100644
--- a/mediagoblin/media_types/video/transcoders.py
+++ b/mediagoblin/media_types/video/transcoders.py
@@ -26,7 +26,10 @@ import pygst
pygst.require('0.10')
import gst
import struct
-import Image
+try:
+ from PIL import Image
+except ImportError:
+ import Image
from gst.extend import discoverer
@@ -53,283 +56,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 +124,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 +136,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 +160,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 +204,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 +221,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 +237,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 +302,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 +381,7 @@ pending: {2}'.format(
return self.get_duration(pipeline, attempt + 1)
-class VideoTranscoder:
+class VideoTranscoder(object):
'''
Video transcoder
@@ -636,7 +395,7 @@ class VideoTranscoder:
'''
def __init__(self):
_log.info('Initializing VideoTranscoder...')
-
+ self.progress_percentage = None
self.loop = gobject.MainLoop()
def transcode(self, src, dst, **kwargs):
@@ -673,6 +432,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 +553,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',
@@ -913,12 +674,14 @@ class VideoTranscoder:
elif message.type == gst.MESSAGE_ELEMENT:
if message.structure.get_name() == 'progress':
data = dict(message.structure)
+ # Update progress state if it has changed
+ if self.progress_percentage != data.get('percent'):
+ self.progress_percentage = data.get('percent')
+ if self._progress_callback:
+ self._progress_callback(data.get('percent'))
- if self._progress_callback:
- self._progress_callback(data.get('percent'))
-
- _log.info('{percent}% done...'.format(
- percent=data.get('percent')))
+ _log.info('{percent}% done...'.format(
+ percent=data.get('percent')))
_log.debug(data)
elif t == gst.MESSAGE_ERROR:
@@ -980,6 +743,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:
@@ -999,10 +766,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 .
+
+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/messages.py b/mediagoblin/messages.py
index 80d8ece7..d58f13d4 100644
--- a/mediagoblin/messages.py
+++ b/mediagoblin/messages.py
@@ -14,16 +14,24 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see .
+from mediagoblin.tools import common
+
DEBUG = 'debug'
INFO = 'info'
SUCCESS = 'success'
WARNING = 'warning'
ERROR = 'error'
+ADD_MESSAGE_TEST = []
+
def add_message(request, level, text):
messages = request.session.setdefault('messages', [])
messages.append({'level': level, 'text': text})
+
+ if common.TESTS_ENABLED:
+ ADD_MESSAGE_TEST.append(messages)
+
request.session.save()
@@ -33,4 +41,10 @@ def fetch_messages(request, clear_from_session=True):
# Save that we removed the messages from the session
request.session['messages'] = []
request.session.save()
+
return messages
+
+
+def clear_add_message():
+ global ADD_MESSAGE_TEST
+ ADD_MESSAGE_TEST = []
diff --git a/mediagoblin/mg_globals.py b/mediagoblin/mg_globals.py
index fffa1dda..26ed66fa 100644
--- a/mediagoblin/mg_globals.py
+++ b/mediagoblin/mg_globals.py
@@ -26,15 +26,9 @@ import threading
# General mediagoblin globals
#############################
-# mongokit.Connection
-db_connection = None
-
-# mongokit.Connection
+# SQL database engine
database = None
-# beaker's cache manager
-cache = None
-
# should be the same as the
public_store = None
queue_store = None
@@ -45,11 +39,13 @@ workbench_manager = None
# A thread-local scope
thread_scope = threading.local()
-# gettext
-thread_scope.translations = gettext.find(
+# 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', 'translations'), ['en'])
+ 'mediagoblin', 'i18n'), ['en'], fallback=True)
# app and global config objects
app_config = None
diff --git a/mediagoblin/plugins/api/__init__.py b/mediagoblin/plugins/api/__init__.py
index d3fdf2ef..1eddd9e0 100644
--- a/mediagoblin/plugins/api/__init__.py
+++ b/mediagoblin/plugins/api/__init__.py
@@ -23,11 +23,11 @@ _log = logging.getLogger(__name__)
PLUGIN_DIR = os.path.dirname(__file__)
-config = pluginapi.get_config(__name__)
-
def setup_plugin():
_log.info('Setting up API...')
+ config = pluginapi.get_config(__name__)
+
_log.debug('API config: {0}'.format(config))
routes = [
diff --git a/mediagoblin/plugins/api/tools.py b/mediagoblin/plugins/api/tools.py
index ecc50364..92411f4b 100644
--- a/mediagoblin/plugins/api/tools.py
+++ b/mediagoblin/plugins/api/tools.py
@@ -18,9 +18,9 @@ import logging
import json
from functools import wraps
-from webob import exc, Response
from urlparse import urljoin
-
+from werkzeug.exceptions import Forbidden
+from werkzeug.wrappers import Response
from mediagoblin import mg_globals
from mediagoblin.tools.pluginapi import PluginManager
from mediagoblin.storage.filestorage import BasicFileStorage
@@ -54,23 +54,23 @@ class Auth(object):
def json_response(serializable, _disable_cors=False, *args, **kw):
'''
- Serializes a json objects and returns a webob.Response object with the
+ Serializes a json objects and returns a werkzeug Response object with the
serialized value as the response body and Content-Type: application/json.
:param serializable: A json-serializable object
Any extra arguments and keyword arguments are passed to the
- webob.Response.__init__ method.
+ Response.__init__ method.
'''
- response = Response(json.dumps(serializable), *args, **kw)
- response.headers['Content-Type'] = 'application/json'
+ response = Response(json.dumps(serializable), *args, content_type='application/json', **kw)
if not _disable_cors:
cors_headers = {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'POST, GET, OPTIONS',
'Access-Control-Allow-Headers': 'Content-Type, X-Requested-With'}
- response.headers.update(cors_headers)
+ for key, value in cors_headers.iteritems():
+ response.headers.set(key, value)
return response
@@ -136,14 +136,14 @@ def api_auth(controller):
auth_candidates = []
for auth in PluginManager().get_hook_callables('auth'):
- _log.debug('Plugin auth: {0}'.format(auth))
if auth.trigger(request):
+ _log.debug('{0} believes it is capable of authenticating this request.'.format(auth))
auth_candidates.append(auth)
# If we can't find any authentication methods, we should not let them
# pass.
if not auth_candidates:
- return exc.HTTPForbidden()
+ raise Forbidden()
# For now, just select the first one in the list
auth = auth_candidates[0]
@@ -157,7 +157,7 @@ def api_auth(controller):
'status': 403,
'errors': auth.errors})
- return exc.HTTPForbidden()
+ raise Forbidden()
return controller(request, *args, **kw)
diff --git a/mediagoblin/plugins/api/views.py b/mediagoblin/plugins/api/views.py
index a1b1bcac..fde76fe4 100644
--- a/mediagoblin/plugins/api/views.py
+++ b/mediagoblin/plugins/api/views.py
@@ -16,22 +16,18 @@
import json
import logging
-import uuid
from os.path import splitext
-from webob import exc, Response
-from werkzeug.utils import secure_filename
-from werkzeug.datastructures import FileStorage
-from celery import registry
+from werkzeug.exceptions import BadRequest, Forbidden
+from werkzeug.wrappers import Response
-from mediagoblin.db.util import ObjectId
from mediagoblin.decorators import require_active_login
-from mediagoblin.processing import mark_entry_failed
-from mediagoblin.processing.task import ProcessMedia
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 check_file_field, prepare_queue_task, \
+ run_process_media
_log = logging.getLogger(__name__)
@@ -47,20 +43,17 @@ def post_entry(request):
if request.method != 'POST':
_log.debug('Must POST against post_entry')
- return exc.HTTPBadRequest()
+ 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')
- return exc.HTTPBadRequest()
+ raise BadRequest()
media_file = request.files['file']
media_type, media_manager = sniff_media(media_file)
entry = request.db.MediaEntry()
- entry.id = ObjectId()
entry.media_type = unicode(media_type)
entry.title = unicode(request.form.get('title')
or splitext(media_file.filename)[0])
@@ -72,28 +65,14 @@ def post_entry(request):
entry.generate_slug()
- task_id = unicode(uuid.uuid4())
-
- # Now store generate the queueing related filename
- queue_filepath = request.app.queue_store.get_unique_filepath(
- ['media_entries',
- task_id,
- secure_filename(media_file.filename)])
-
# queue appropriately
- queue_file = request.app.queue_store.get_file(
- queue_filepath, 'wb')
+ queue_file = prepare_queue_task(request.app, entry, media_file.filename)
with queue_file:
queue_file.write(request.files['file'].stream.read())
- # Add queued filename to the entry
- entry.queued_media_file = queue_filepath
-
- entry.queued_task_id = task_id
-
# Save now so we have this data before kicking off processing
- entry.save(validate=True)
+ entry.save()
if request.form.get('callback_url'):
metadata = request.db.ProcessingMetaData()
@@ -105,36 +84,23 @@ def post_entry(request):
#
# (... don't change entry after this point to avoid race
# conditions with changes to the document via processing code)
- process_media = registry.tasks[ProcessMedia.name]
- try:
- process_media.apply_async(
- [unicode(entry._id)], {},
- task_id=task_id)
- except BaseException as e:
- # The purpose of this section is because when running in "lazy"
- # or always-eager-with-exceptions-propagated celery mode that
- # the failure handling won't happen on Celery end. Since we
- # expect a lot of users to run things in this way we have to
- # capture stuff here.
- #
- # ... not completely the diaper pattern because the
- # exception is re-raised :)
- mark_entry_failed(entry._id, e)
- # re-raise the exception
- raise
+ feed_url = request.urlgen(
+ 'mediagoblin.user_pages.atom_feed',
+ qualified=True, user=request.user.username)
+ run_process_media(entry, feed_url)
return json_response(get_entry_serializable(entry, request.urlgen))
@api_auth
+@require_active_login
def api_test(request):
- if not request.user:
- return exc.HTTPForbidden()
-
user_data = {
'username': request.user.username,
'email': request.user.email}
+ # TODO: This is the *only* thing using Response() here, should that
+ # not simply use json_response()?
return Response(json.dumps(user_data))
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 .
+
+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
similarity index 70%
rename from mediagoblin/templates/mediagoblin/utils/geolocation_map.html
rename to mediagoblin/plugins/geolocation/templates/mediagoblin/plugins/geolocation/map.html
index cd57d1f8..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 %}
@@ -33,6 +32,21 @@
+
+