aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--AUTHORS34
-rw-r--r--COPYING13
-rw-r--r--docs/source/conf.py4
-rw-r--r--mediagoblin/__init__.py3
-rw-r--r--mediagoblin/_version.py (renamed from mediagoblin/templates/mediagoblin/auth/resent_verification_email.html)11
-rw-r--r--mediagoblin/app.py35
-rw-r--r--mediagoblin/auth/__init__.py2
-rw-r--r--mediagoblin/auth/forms.py6
-rw-r--r--mediagoblin/auth/lib.py2
-rw-r--r--mediagoblin/auth/routing.py2
-rw-r--r--mediagoblin/auth/views.py13
-rw-r--r--mediagoblin/buildout_recipes.py2
-rw-r--r--mediagoblin/config_spec.ini6
-rw-r--r--mediagoblin/db/__init__.py2
-rw-r--r--mediagoblin/db/indexes.py2
-rw-r--r--mediagoblin/db/migrations.py2
-rw-r--r--mediagoblin/db/models.py2
-rw-r--r--mediagoblin/db/open.py2
-rw-r--r--mediagoblin/db/util.py2
-rw-r--r--mediagoblin/decorators.py19
-rw-r--r--mediagoblin/edit/__init__.py2
-rw-r--r--mediagoblin/edit/forms.py13
-rw-r--r--mediagoblin/edit/lib.py2
-rw-r--r--mediagoblin/edit/routing.py2
-rw-r--r--mediagoblin/edit/views.py24
-rw-r--r--mediagoblin/errormiddleware.py2
-rw-r--r--mediagoblin/gmg_commands/__init__.py2
-rw-r--r--mediagoblin/gmg_commands/import_export.py2
-rw-r--r--mediagoblin/gmg_commands/migrate.py2
-rw-r--r--mediagoblin/gmg_commands/shell.py2
-rw-r--r--mediagoblin/gmg_commands/users.py2
-rw-r--r--mediagoblin/gmg_commands/util.py2
-rw-r--r--mediagoblin/gmg_commands/wipealldata.py2
-rw-r--r--mediagoblin/i18n/ar/LC_MESSAGES/mediagoblin.mobin8634 -> 9631 bytes
-rw-r--r--mediagoblin/i18n/ar/LC_MESSAGES/mediagoblin.po144
-rw-r--r--mediagoblin/i18n/de/LC_MESSAGES/mediagoblin.mobin8220 -> 9020 bytes
-rw-r--r--mediagoblin/i18n/de/LC_MESSAGES/mediagoblin.po94
-rw-r--r--mediagoblin/i18n/en/LC_MESSAGES/mediagoblin.po76
-rw-r--r--mediagoblin/i18n/eo/LC_MESSAGES/mediagoblin.mobin7968 -> 8804 bytes
-rw-r--r--mediagoblin/i18n/eo/LC_MESSAGES/mediagoblin.po115
-rw-r--r--mediagoblin/i18n/es/LC_MESSAGES/mediagoblin.mobin8328 -> 9151 bytes
-rw-r--r--mediagoblin/i18n/es/LC_MESSAGES/mediagoblin.po89
-rw-r--r--mediagoblin/i18n/fr/LC_MESSAGES/mediagoblin.mobin8263 -> 9314 bytes
-rw-r--r--mediagoblin/i18n/fr/LC_MESSAGES/mediagoblin.po155
-rw-r--r--mediagoblin/i18n/ja/LC_MESSAGES/mediagoblin.mobin8482 -> 9266 bytes
-rw-r--r--mediagoblin/i18n/ja/LC_MESSAGES/mediagoblin.po83
-rw-r--r--mediagoblin/i18n/nl/LC_MESSAGES/mediagoblin.mobin7962 -> 8737 bytes
-rw-r--r--mediagoblin/i18n/nl/LC_MESSAGES/mediagoblin.po83
-rw-r--r--mediagoblin/i18n/nn_NO/LC_MESSAGES/mediagoblin.mobin7739 -> 8343 bytes
-rw-r--r--mediagoblin/i18n/nn_NO/LC_MESSAGES/mediagoblin.po143
-rw-r--r--mediagoblin/i18n/pt_BR/LC_MESSAGES/mediagoblin.mobin7906 -> 8690 bytes
-rw-r--r--mediagoblin/i18n/pt_BR/LC_MESSAGES/mediagoblin.po83
-rw-r--r--mediagoblin/i18n/ro/LC_MESSAGES/mediagoblin.mobin8249 -> 9008 bytes
-rw-r--r--mediagoblin/i18n/ro/LC_MESSAGES/mediagoblin.po126
-rw-r--r--mediagoblin/i18n/ru/LC_MESSAGES/mediagoblin.mobin8585 -> 11125 bytes
-rw-r--r--mediagoblin/i18n/ru/LC_MESSAGES/mediagoblin.po179
-rw-r--r--mediagoblin/i18n/sl/LC_MESSAGES/mediagoblin.mobin8028 -> 8806 bytes
-rw-r--r--mediagoblin/i18n/sl/LC_MESSAGES/mediagoblin.po83
-rw-r--r--mediagoblin/i18n/sr/LC_MESSAGES/mediagoblin.mobin7885 -> 8669 bytes
-rw-r--r--mediagoblin/i18n/sr/LC_MESSAGES/mediagoblin.po79
-rw-r--r--mediagoblin/i18n/sv/LC_MESSAGES/mediagoblin.mobin8142 -> 8930 bytes
-rw-r--r--mediagoblin/i18n/sv/LC_MESSAGES/mediagoblin.po85
-rw-r--r--mediagoblin/i18n/zh_TW/LC_MESSAGES/mediagoblin.mobin7758 -> 8545 bytes
-rw-r--r--mediagoblin/i18n/zh_TW/LC_MESSAGES/mediagoblin.po176
-rw-r--r--mediagoblin/init/__init__.py18
-rw-r--r--mediagoblin/init/celery/__init__.py2
-rw-r--r--mediagoblin/init/celery/from_celery.py2
-rw-r--r--mediagoblin/init/celery/from_tests.py2
-rw-r--r--mediagoblin/init/config.py2
-rw-r--r--mediagoblin/listings/__init__.py2
-rw-r--r--mediagoblin/listings/routing.py2
-rw-r--r--mediagoblin/listings/views.py2
-rw-r--r--mediagoblin/messages.py2
-rw-r--r--mediagoblin/mg_globals.py5
-rw-r--r--mediagoblin/middleware/__init__.py19
-rw-r--r--mediagoblin/middleware/noop.py26
-rw-r--r--mediagoblin/process_media/__init__.py25
-rw-r--r--mediagoblin/process_media/errors.py2
-rw-r--r--mediagoblin/routing.py2
-rw-r--r--mediagoblin/static/css/base.css35
-rw-r--r--mediagoblin/staticdirect.py2
-rw-r--r--mediagoblin/storage.py78
-rw-r--r--mediagoblin/submit/__init__.py2
-rw-r--r--mediagoblin/submit/forms.py5
-rw-r--r--mediagoblin/submit/routing.py2
-rw-r--r--mediagoblin/submit/security.py2
-rw-r--r--mediagoblin/submit/views.py6
-rw-r--r--mediagoblin/templates/mediagoblin/404.html2
-rw-r--r--mediagoblin/templates/mediagoblin/auth/login.html2
-rw-r--r--mediagoblin/templates/mediagoblin/auth/register.html2
-rw-r--r--mediagoblin/templates/mediagoblin/auth/verification_email.txt2
-rw-r--r--mediagoblin/templates/mediagoblin/base.html4
-rw-r--r--mediagoblin/templates/mediagoblin/edit/attachments.html2
-rw-r--r--mediagoblin/templates/mediagoblin/edit/edit.html2
-rw-r--r--mediagoblin/templates/mediagoblin/edit/edit_profile.html2
-rw-r--r--mediagoblin/templates/mediagoblin/listings/tag.html2
-rw-r--r--mediagoblin/templates/mediagoblin/root.html4
-rw-r--r--mediagoblin/templates/mediagoblin/submit/start.html2
-rw-r--r--mediagoblin/templates/mediagoblin/test_submit.html2
-rw-r--r--mediagoblin/templates/mediagoblin/user_pages/gallery.html2
-rw-r--r--mediagoblin/templates/mediagoblin/user_pages/media.html19
-rw-r--r--mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html54
-rw-r--r--mediagoblin/templates/mediagoblin/user_pages/processing_panel.html2
-rw-r--r--mediagoblin/templates/mediagoblin/user_pages/user.html2
-rw-r--r--mediagoblin/templates/mediagoblin/utils/feed_link.html2
-rw-r--r--mediagoblin/templates/mediagoblin/utils/messages.html2
-rw-r--r--mediagoblin/templates/mediagoblin/utils/object_gallery.html2
-rw-r--r--mediagoblin/templates/mediagoblin/utils/pagination.html22
-rw-r--r--mediagoblin/templates/mediagoblin/utils/prev_next.html52
-rw-r--r--mediagoblin/templates/mediagoblin/utils/profile.html2
-rw-r--r--mediagoblin/templates/mediagoblin/utils/tags.html2
-rw-r--r--mediagoblin/templates/mediagoblin/utils/wtforms.html8
-rw-r--r--mediagoblin/tests/__init__.py2
-rw-r--r--mediagoblin/tests/fake_celery_module.py2
-rw-r--r--mediagoblin/tests/test_auth.py2
-rw-r--r--mediagoblin/tests/test_cache.py52
-rw-r--r--mediagoblin/tests/test_celery_setup.py2
-rw-r--r--mediagoblin/tests/test_config.py2
-rw-r--r--mediagoblin/tests/test_globals.py2
-rw-r--r--mediagoblin/tests/test_messages.py2
-rw-r--r--mediagoblin/tests/test_mgoblin_app.ini4
-rw-r--r--mediagoblin/tests/test_migrations.py2
-rw-r--r--mediagoblin/tests/test_storage.py2
-rw-r--r--mediagoblin/tests/test_submission.py64
-rw-r--r--mediagoblin/tests/test_tags.py2
-rw-r--r--mediagoblin/tests/test_tests.py2
-rw-r--r--mediagoblin/tests/test_util.py2
-rw-r--r--mediagoblin/tests/test_workbench.py2
-rw-r--r--mediagoblin/tests/tools.py2
-rw-r--r--mediagoblin/user_pages/__init__.py2
-rw-r--r--mediagoblin/user_pages/forms.py7
-rw-r--r--mediagoblin/user_pages/routing.py5
-rw-r--r--mediagoblin/user_pages/views.py46
-rw-r--r--mediagoblin/util.py17
-rw-r--r--mediagoblin/views.py2
-rw-r--r--mediagoblin/workbench.py2
-rw-r--r--setup.py22
137 files changed, 1940 insertions, 771 deletions
diff --git a/AUTHORS b/AUTHORS
index e69de29b..9653a332 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -0,0 +1,34 @@
+=========
+ AUTHORS
+=========
+
+This is a list of contributors to MediaGoblin. They contribute in a
+variety of different ways and this software wouldn't exist without them.
+
+Thank you!
+
+* Aaron Williamson
+* Alejandro Villanueva
+* Aleksandar Micovic
+* Alex Camelio
+* Bernhard Keller
+* Caleb Forbes Davis V
+* Chris Moylan
+* Christopher Allan Webber
+* Daniel Neel
+* Deb Nicholson
+* Elrond of Samba TNG
+* Jakob Kramer
+* Jef van Schendel
+* Joar Wandborg
+* Karen Rustad
+* Mark Holmquist
+* Matt Lee
+* Odin Hørthe Omdal
+* Osama Khalid
+* Rasmus Larsson
+* Sam Kleinman
+* Sebastian Spaeth
+* Will Kahn-Greene
+
+If you think your name should be on this list, let us know!
diff --git a/COPYING b/COPYING
index 6895d3b8..f8d93cf6 100644
--- a/COPYING
+++ b/COPYING
@@ -17,7 +17,18 @@ License along with this program, in the file ``licenses/AGPLv3.txt``.
If not, see <http://www.gnu.org/licenses/>.
-JavaScript files located in the ``mediagoblin/`` directory tree of
+Translation files located under ``mediagoblin/i18n/`` directory tree
+are 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.
+
+You should have received a copy of the GNU Affero General Public
+License along with this program, in the file ``licenses/AGPLv3.txt``.
+If not, see <http://www.gnu.org/licenses/>.
+
+
+JavaScript files located in the ``mediagoblin/`` directory tree
are free software: you can redistribute and/or modify them under the
terms of the GNU Lesser General Public License as published by the
Free Software Foundation, either version 3 of the License, or (at
diff --git a/docs/source/conf.py b/docs/source/conf.py
index e2f327c9..7ea3a340 100644
--- a/docs/source/conf.py
+++ b/docs/source/conf.py
@@ -48,9 +48,9 @@ copyright = u'2011, Free Software Foundation, Inc and contributors'
# built documents.
#
# The short X.Y version.
-version = '0.0.4'
+version = '0.0.5'
# The full version, including alpha/beta/rc tags.
-release = '0.0.4'
+release = '0.0.5'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
diff --git a/mediagoblin/__init__.py b/mediagoblin/__init__.py
index dec83661..f9c7ccfb 100644
--- a/mediagoblin/__init__.py
+++ b/mediagoblin/__init__.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
@@ -14,3 +14,4 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+from mediagoblin._version import __version__
diff --git a/mediagoblin/templates/mediagoblin/auth/resent_verification_email.html b/mediagoblin/_version.py
index 8fd80ee9..df212faf 100644
--- a/mediagoblin/templates/mediagoblin/auth/resent_verification_email.html
+++ b/mediagoblin/_version.py
@@ -1,6 +1,5 @@
-{#
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
@@ -14,11 +13,5 @@
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-#}
-{% extends "mediagoblin/base.html" %}
-{% block mediagoblin_content %}
- <p>
- {% trans %}Resent your verification email.{% endtrans %}
- </p>
-{% endblock %}
+__version__ = "0.0.5"
diff --git a/mediagoblin/app.py b/mediagoblin/app.py
index 3030929d..dd5f0b89 100644
--- a/mediagoblin/app.py
+++ b/mediagoblin/app.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
@@ -20,12 +20,12 @@ import urllib
import routes
from webob import Request, exc
-from mediagoblin import routing, util
+from mediagoblin import routing, util, middleware
from mediagoblin.mg_globals import setup_globals
from mediagoblin.init.celery import setup_celery_from_config
from mediagoblin.init import (get_jinja_loader, get_staticdirector,
setup_global_and_app_config, setup_workbench, setup_database,
- setup_storage)
+ setup_storage, setup_beaker_cache)
class MediaGoblinApp(object):
@@ -61,7 +61,7 @@ class MediaGoblinApp(object):
# Get the template environment
self.template_loader = get_jinja_loader(
app_config.get('user_template_path'))
-
+
# Set up storage systems
self.public_store, self.queue_store = setup_storage()
@@ -71,6 +71,9 @@ class MediaGoblinApp(object):
# set up staticdirector tool
self.staticdirector = get_staticdirector(app_config)
+ # set up caching
+ self.cache = setup_beaker_cache()
+
# Setup celery, if appropriate
if setup_celery and not app_config.get('celery_setup_elsewhere'):
if os.environ.get('CELERY_ALWAYS_EAGER'):
@@ -94,11 +97,22 @@ class MediaGoblinApp(object):
# matters in always eager mode :)
setup_workbench()
+ # instantiate application middleware
+ self.middleware = [util.import_component(m)(self)
+ for m in middleware.ENABLED_MIDDLEWARE]
+
+
def __call__(self, environ, start_response):
request = Request(environ)
- path_info = request.path_info
+
+ # pass the request through our middleware classes
+ for m in self.middleware:
+ response = m.process_request(request)
+ if response is not None:
+ return response(environ, start_response)
## Routing / controller loading stuff
+ path_info = request.path_info
route_match = self.routing.match(path_info)
## Attach utilities to the request object
@@ -110,7 +124,7 @@ class MediaGoblinApp(object):
# Also attach a few utilities from request.app for convenience?
request.app = self
request.locale = util.get_locale_from_request(request)
-
+
request.template_env = util.get_jinja_env(
self.template_loader, request.locale)
request.db = self.db
@@ -139,7 +153,14 @@ class MediaGoblinApp(object):
controller = util.import_component(route_match['controller'])
request.start_response = start_response
- return controller(request)(environ, start_response)
+ # get the response from the controller
+ response = controller(request)
+
+ # pass the response through the middleware
+ for m in self.middleware[::-1]:
+ m.process_response(request, response)
+
+ return response(environ, start_response)
def paste_app_factory(global_config, **app_config):
diff --git a/mediagoblin/auth/__init__.py b/mediagoblin/auth/__init__.py
index c129cbf8..ba347c69 100644
--- a/mediagoblin/auth/__init__.py
+++ b/mediagoblin/auth/__init__.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/auth/forms.py b/mediagoblin/auth/forms.py
index 1be74aa6..6339b4a3 100644
--- a/mediagoblin/auth/forms.py
+++ b/mediagoblin/auth/forms.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
@@ -35,7 +35,9 @@ class RegistrationForm(wtforms.Form):
_('Passwords must match.'))])
confirm_password = wtforms.PasswordField(
_('Confirm password'),
- [wtforms.validators.Required()])
+ [wtforms.validators.Required()],
+ description=_(
+ u"Type it again here to make sure there are no spelling mistakes."))
email = wtforms.TextField(
_('Email address'),
[wtforms.validators.Required(),
diff --git a/mediagoblin/auth/lib.py b/mediagoblin/auth/lib.py
index abe8ce33..d7d351a5 100644
--- a/mediagoblin/auth/lib.py
+++ b/mediagoblin/auth/lib.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/auth/routing.py b/mediagoblin/auth/routing.py
index 399ed8d2..912d89fa 100644
--- a/mediagoblin/auth/routing.py
+++ b/mediagoblin/auth/routing.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/auth/views.py b/mediagoblin/auth/views.py
index 000f7681..f67f0588 100644
--- a/mediagoblin/auth/views.py
+++ b/mediagoblin/auth/views.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
@@ -46,11 +46,12 @@ def register(request):
if request.method == 'POST' and register_form.validate():
# TODO: Make sure the user doesn't exist already
-
+ username = unicode(request.POST['username'].lower())
+ email = unicode(request.POST['email'].lower())
users_with_username = request.db.User.find(
- {'username': request.POST['username'].lower()}).count()
+ {'username': username}).count()
users_with_email = request.db.User.find(
- {'email': request.POST['email'].lower()}).count()
+ {'email': email}).count()
extra_validation_passes = True
@@ -66,8 +67,8 @@ def register(request):
if extra_validation_passes:
# Create the user
user = request.db.User()
- user['username'] = request.POST['username'].lower()
- user['email'] = request.POST['email'].lower()
+ user['username'] = username
+ user['email'] = email
user['pw_hash'] = auth_lib.bcrypt_gen_password_hash(
request.POST['password'])
user.save(validate=True)
diff --git a/mediagoblin/buildout_recipes.py b/mediagoblin/buildout_recipes.py
index abb01b9e..f3d0362f 100644
--- a/mediagoblin/buildout_recipes.py
+++ b/mediagoblin/buildout_recipes.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/config_spec.ini b/mediagoblin/config_spec.ini
index a0fbde09..6fefb581 100644
--- a/mediagoblin/config_spec.ini
+++ b/mediagoblin/config_spec.ini
@@ -50,6 +50,12 @@ base_url = string(default="/mgoblin_media/")
base_dir = string(default="%(here)s/user_dev/media/queue")
+[beaker.cache]
+type = string(default="file")
+data_dir = string(default="%(here)s/user_dev/beaker/cache/data")
+lock_dir = string(default="%(here)s/user_dev/beaker/cache/lock")
+
+
[celery]
# known booleans
celery_result_persistent = boolean()
diff --git a/mediagoblin/db/__init__.py b/mediagoblin/db/__init__.py
index 776025ca..c5124b1a 100644
--- a/mediagoblin/db/__init__.py
+++ b/mediagoblin/db/__init__.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/db/indexes.py b/mediagoblin/db/indexes.py
index 30d43c98..75394a31 100644
--- a/mediagoblin/db/indexes.py
+++ b/mediagoblin/db/indexes.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/db/migrations.py b/mediagoblin/db/migrations.py
index 3c3deee8..755f49c5 100644
--- a/mediagoblin/db/migrations.py
+++ b/mediagoblin/db/migrations.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/db/models.py b/mediagoblin/db/models.py
index ad989f81..bbddada6 100644
--- a/mediagoblin/db/models.py
+++ b/mediagoblin/db/models.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/db/open.py b/mediagoblin/db/open.py
index e5fde6f9..e73b6258 100644
--- a/mediagoblin/db/open.py
+++ b/mediagoblin/db/open.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/db/util.py b/mediagoblin/db/util.py
index 0f3220d2..84a6cbce 100644
--- a/mediagoblin/db/util.py
+++ b/mediagoblin/db/util.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/decorators.py b/mediagoblin/decorators.py
index c66049ca..7d5978fc 100644
--- a/mediagoblin/decorators.py
+++ b/mediagoblin/decorators.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
@@ -52,6 +52,22 @@ def require_active_login(controller):
return _make_safe(new_controller_func, controller)
+def user_may_delete_media(controller):
+ """
+ Require user ownership of the MediaEntry to delete.
+ """
+ def wrapper(request, *args, **kwargs):
+ uploader = request.db.MediaEntry.find_one(
+ {'_id': ObjectId(request.matchdict['media'])}).uploader()
+ if not (request.user['is_admin'] or
+ request.user['_id'] == uploader['_id']):
+ return exc.HTTPForbidden()
+
+ return controller(request, *args, **kwargs)
+
+ return _make_safe(wrapper, controller)
+
+
def uses_pagination(controller):
"""
Check request GET 'page' key for wrong values
@@ -122,3 +138,4 @@ def get_media_entry_by_id(controller):
return controller(request, media=media, *args, **kwargs)
return _make_safe(wrapper, controller)
+
diff --git a/mediagoblin/edit/__init__.py b/mediagoblin/edit/__init__.py
index a8eeb5ed..576bd0f5 100644
--- a/mediagoblin/edit/__init__.py
+++ b/mediagoblin/edit/__init__.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/edit/forms.py b/mediagoblin/edit/forms.py
index c5ab9fd9..f81d58b2 100644
--- a/mediagoblin/edit/forms.py
+++ b/mediagoblin/edit/forms.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
@@ -25,13 +25,17 @@ class EditForm(wtforms.Form):
title = wtforms.TextField(
_('Title'),
[wtforms.validators.Length(min=0, max=500)])
- slug = wtforms.TextField(
- _('Slug'),
- [wtforms.validators.Required(message=_("The slug can't be empty"))])
description = wtforms.TextAreaField('Description of this work')
tags = wtforms.TextField(
_('Tags'),
[tag_length_validator])
+ slug = wtforms.TextField(
+ _('Slug'),
+ [wtforms.validators.Required(message=_("The slug can't be empty"))],
+ description=_(
+ "The title part of this media's URL. "
+ "You usually don't need to change this."))
+
class EditProfileForm(wtforms.Form):
bio = wtforms.TextAreaField(
@@ -42,6 +46,7 @@ class EditProfileForm(wtforms.Form):
[wtforms.validators.Optional(),
wtforms.validators.URL(message='Improperly formed URL')])
+
class EditAttachmentsForm(wtforms.Form):
attachment_name = wtforms.TextField(
'Title')
diff --git a/mediagoblin/edit/lib.py b/mediagoblin/edit/lib.py
index 2a810349..b722e9c1 100644
--- a/mediagoblin/edit/lib.py
+++ b/mediagoblin/edit/lib.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/edit/routing.py b/mediagoblin/edit/routing.py
index 9771207a..34e9fd80 100644
--- a/mediagoblin/edit/routing.py
+++ b/mediagoblin/edit/routing.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/edit/views.py b/mediagoblin/edit/views.py
index b0145a04..11bee110 100644
--- a/mediagoblin/edit/views.py
+++ b/mediagoblin/edit/views.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
@@ -14,6 +14,7 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+import uuid
from webob import exc
from string import split
@@ -45,9 +46,6 @@ def edit_media(request, media):
description=media['description'],
tags=media_tags_as_string(media['tags']))
- if len(media['attachment_files']):
- defaults['attachment_name'] = media['attachment_files'][0]['name']
-
form = forms.EditForm(
request.POST,
**defaults)
@@ -64,23 +62,15 @@ def edit_media(request, media):
form.slug.errors.append(
_(u'An entry with that slug already exists for this user.'))
else:
- media['title'] = request.POST['title']
- media['description'] = request.POST.get('description')
+ media['title'] = unicode(request.POST['title'])
+ media['description'] = unicode(request.POST.get('description'))
media['tags'] = convert_to_tag_list_of_dicts(
request.POST.get('tags'))
media['description_html'] = cleaned_markdown_conversion(
media['description'])
- if 'attachment_name' in request.POST:
- media['attachment_files'][0]['name'] = \
- request.POST['attachment_name']
-
- if 'attachment_delete' in request.POST \
- and 'y' == request.POST['attachment_delete']:
- del media['attachment_files'][0]
-
- media['slug'] = request.POST['slug']
+ media['slug'] = unicode(request.POST['slug'])
media.save()
return redirect(request, "mediagoblin.user_pages.media_home",
@@ -171,8 +161,8 @@ def edit_profile(request):
bio=user.get('bio'))
if request.method == 'POST' and form.validate():
- user['url'] = request.POST['url']
- user['bio'] = request.POST['bio']
+ user['url'] = unicode(request.POST['url'])
+ user['bio'] = unicode(request.POST['bio'])
user['bio_html'] = cleaned_markdown_conversion(user['bio'])
diff --git a/mediagoblin/errormiddleware.py b/mediagoblin/errormiddleware.py
index 352dc891..ccfe4d03 100644
--- a/mediagoblin/errormiddleware.py
+++ b/mediagoblin/errormiddleware.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/gmg_commands/__init__.py b/mediagoblin/gmg_commands/__init__.py
index 8226fd0e..0071c65b 100644
--- a/mediagoblin/gmg_commands/__init__.py
+++ b/mediagoblin/gmg_commands/__init__.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/gmg_commands/import_export.py b/mediagoblin/gmg_commands/import_export.py
index 367924a5..2e227e77 100644
--- a/mediagoblin/gmg_commands/import_export.py
+++ b/mediagoblin/gmg_commands/import_export.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/gmg_commands/migrate.py b/mediagoblin/gmg_commands/migrate.py
index 94adc9e0..1a597188 100644
--- a/mediagoblin/gmg_commands/migrate.py
+++ b/mediagoblin/gmg_commands/migrate.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/gmg_commands/shell.py b/mediagoblin/gmg_commands/shell.py
index dc1621d1..2a380c7b 100644
--- a/mediagoblin/gmg_commands/shell.py
+++ b/mediagoblin/gmg_commands/shell.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/gmg_commands/users.py b/mediagoblin/gmg_commands/users.py
index 14b6875d..5421907d 100644
--- a/mediagoblin/gmg_commands/users.py
+++ b/mediagoblin/gmg_commands/users.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/gmg_commands/util.py b/mediagoblin/gmg_commands/util.py
index 8dcac913..168a0760 100644
--- a/mediagoblin/gmg_commands/util.py
+++ b/mediagoblin/gmg_commands/util.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/gmg_commands/wipealldata.py b/mediagoblin/gmg_commands/wipealldata.py
index 9ad32051..dc5d6cf7 100644
--- a/mediagoblin/gmg_commands/wipealldata.py
+++ b/mediagoblin/gmg_commands/wipealldata.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/i18n/ar/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/ar/LC_MESSAGES/mediagoblin.mo
index aa0cd03b..d02639a9 100644
--- a/mediagoblin/i18n/ar/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/ar/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/ar/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/ar/LC_MESSAGES/mediagoblin.po
index 201f2611..112c6973 100644
--- a/mediagoblin/i18n/ar/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/ar/LC_MESSAGES/mediagoblin.po
@@ -9,8 +9,8 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://bugs.foocorp.net/projects/mediagoblin/issues\n"
-"POT-Creation-Date: 2011-08-25 07:41-0500\n"
-"PO-Revision-Date: 2011-08-25 12:41+0000\n"
+"POT-Creation-Date: 2011-09-05 23:31-0500\n"
+"PO-Revision-Date: 2011-09-06 04:31+0000\n"
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
@@ -20,23 +20,27 @@ msgstr ""
"Language: ar\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5\n"
-#: mediagoblin/auth/forms.py:24 mediagoblin/auth/forms.py:46
+#: mediagoblin/auth/forms.py:24 mediagoblin/auth/forms.py:48
msgid "Username"
msgstr "اسم المستخدم"
-#: mediagoblin/auth/forms.py:29 mediagoblin/auth/forms.py:50
+#: mediagoblin/auth/forms.py:29 mediagoblin/auth/forms.py:52
msgid "Password"
-msgstr "كلمة المرور"
+msgstr "كلمة السر"
#: mediagoblin/auth/forms.py:34
msgid "Passwords must match."
-msgstr "يجب أن تتطابق كلمتا المرور."
+msgstr "يجب أن تتطابق كلمتا السر."
#: mediagoblin/auth/forms.py:36
msgid "Confirm password"
-msgstr "تأكيد كلمة المرور"
+msgstr "أكّد كلمة السر"
-#: mediagoblin/auth/forms.py:39
+#: mediagoblin/auth/forms.py:38
+msgid "Type it again here to make sure there are no spelling mistakes."
+msgstr "اكتبها مرة أخرى هنا للتأكد من عدم وجود أخطاء إملائية."
+
+#: mediagoblin/auth/forms.py:41
msgid "Email address"
msgstr "عنوان البريد الإلكتروني"
@@ -44,63 +48,69 @@ msgstr "عنوان البريد الإلكتروني"
msgid "Sorry, registration is disabled on this instance."
msgstr "عفوًا، التسجيل غير متاح هنا."
-#: mediagoblin/auth/views.py:57
+#: mediagoblin/auth/views.py:58
msgid "Sorry, a user with that name already exists."
-msgstr "عذرا، مستخدم بهذا الاسم موجود فعلا."
+msgstr "عذرًا، لقد اختار مستخدم آخر هذا الاسم."
-#: mediagoblin/auth/views.py:61
+#: mediagoblin/auth/views.py:62
msgid "Sorry, that email address has already been taken."
msgstr "عفوًا، هذا العنوان البريدي مستخدم."
-#: mediagoblin/auth/views.py:159
+#: mediagoblin/auth/views.py:160
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
msgstr ""
-"تم التحقق من بريدك الإلكتروني. يمكنك الآن الولوج، تحرير ملفك، وإرسال الصور!"
+"تم التحقق من بريدك الإلكتروني. يمكنك الآن الولوج، وتحرير ملفك الشخصي، ونشر "
+"الصور!"
-#: mediagoblin/auth/views.py:165
+#: mediagoblin/auth/views.py:166
msgid "The verification key or user id is incorrect"
msgstr "مفتاح التحقق أو معرف المستخدم خاطئ"
-#: mediagoblin/auth/views.py:186
+#: mediagoblin/auth/views.py:187
#: mediagoblin/templates/mediagoblin/auth/resent_verification_email.html:22
msgid "Resent your verification email."
-msgstr "أعيد إرسال رسالة التحقق."
+msgstr "أعدنا إرسال رسالة التحقق."
#: mediagoblin/edit/forms.py:26 mediagoblin/submit/forms.py:27
msgid "Title"
msgstr "العنوان"
-#: mediagoblin/edit/forms.py:29
+#: mediagoblin/edit/forms.py:30 mediagoblin/submit/forms.py:32
+msgid "Tags"
+msgstr "الوسوم"
+
+#: mediagoblin/edit/forms.py:33
msgid "Slug"
msgstr ""
-#: mediagoblin/edit/forms.py:30
+#: mediagoblin/edit/forms.py:34
msgid "The slug can't be empty"
msgstr ""
-#: mediagoblin/edit/forms.py:33 mediagoblin/submit/forms.py:31
-msgid "Tags"
-msgstr "الوسوم"
+#: mediagoblin/edit/forms.py:35
+msgid ""
+"The title part of this media's URL. You usually don't need to change this."
+msgstr ""
-#: mediagoblin/edit/forms.py:38
+#: mediagoblin/edit/forms.py:42
msgid "Bio"
msgstr "السيرة"
-#: mediagoblin/edit/forms.py:41
+#: mediagoblin/edit/forms.py:45
msgid "Website"
msgstr "الموقع الإلكتروني"
-#: mediagoblin/edit/views.py:65
+#: mediagoblin/edit/views.py:63
msgid "An entry with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:94
+#: mediagoblin/edit/views.py:84
msgid "You are editing another user's media. Proceed with caution."
msgstr ""
-#: mediagoblin/edit/views.py:165
+#: mediagoblin/edit/views.py:155
msgid "You are editing a user's profile. Proceed with caution."
msgstr ""
@@ -110,11 +120,15 @@ msgstr ""
#: mediagoblin/submit/forms.py:25
msgid "File"
+msgstr "الملف"
+
+#: mediagoblin/submit/forms.py:30
+msgid "Description of this work"
msgstr ""
#: mediagoblin/submit/views.py:47
msgid "You must provide a file."
-msgstr ""
+msgstr "يجب أن تضع ملفًا."
#: mediagoblin/submit/views.py:50
msgid "The file doesn't seem to be an image!"
@@ -122,7 +136,7 @@ msgstr "لا يبدو أن هذا الملف صورة!"
#: mediagoblin/submit/views.py:122
msgid "Woohoo! Submitted!"
-msgstr ""
+msgstr "يا سلام! نُشرَت!"
#: mediagoblin/templates/mediagoblin/404.html:21
msgid "Oops!"
@@ -130,13 +144,14 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/404.html:24
msgid "There doesn't seem to be a page at this address. Sorry!"
-msgstr ""
+msgstr "يبدو أنه لا توجد صفحة في العنوان. عذرًا!"
#: mediagoblin/templates/mediagoblin/404.html:26
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/404.html:32
msgid "Image of 404 goblin stressing out"
@@ -156,25 +171,23 @@ msgstr "أرسل وسائط"
#: mediagoblin/templates/mediagoblin/base.html:63
msgid "verify your email!"
-msgstr "أكد بريدك"
+msgstr "أكّد بريدك"
#: mediagoblin/templates/mediagoblin/base.html:73
#: mediagoblin/templates/mediagoblin/auth/login.html:26
#: mediagoblin/templates/mediagoblin/auth/login.html:34
msgid "Log in"
-msgstr "لُج"
+msgstr "لِج"
#: mediagoblin/templates/mediagoblin/base.html:89
msgid ""
"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
-"href=\"http://gnu.org/\">GNU project</a>"
+"href=\"http://gnu.org/\">GNU</a> project"
msgstr ""
-"مدعوم بواسطة <a href=\"http://mediagoblin.org\">ميدياغوبلن</a>، <a "
-"href=\"http://gnu.org/\">مشروع غنو</a>"
#: mediagoblin/templates/mediagoblin/root.html:27
msgid "Hi there, media lover! MediaGoblin is..."
-msgstr "مرحبا بكم يا محبوا الوسائط! ميدياغوبلن هو..."
+msgstr "مرحبًا بكم يا محبي الوسائط! ميدياغوبلن هو..."
#: mediagoblin/templates/mediagoblin/root.html:29
msgid "The perfect place for your media!"
@@ -190,19 +203,20 @@ msgstr "مكان يجتمع فيه الناس ليتعاونوا ويعرضوا
msgid ""
"Free, as in freedom. (We’re a <a href=\"http://gnu.org\">GNU</a> project, "
"after all.)"
-msgstr ""
+msgstr "مشروع حر، فنحن أحد مشاريع <a href=\"http://gnu.org\">غنو</a>."
#: mediagoblin/templates/mediagoblin/root.html:32
msgid ""
"Aiming to make the world a better place through decentralization and "
"(eventually, coming soon!) federation!"
-msgstr ""
+msgstr "مشروع يحاول جعل عالمنا أفضل عن طريق اللامركزية (قريبًا!)."
#: mediagoblin/templates/mediagoblin/root.html:33
msgid ""
"Built for extensibility. (Multiple media types coming soon to the software,"
" including video support!)"
msgstr ""
+"جاهز للتمدد. (سيُضاف دعم أنساق كثيرة من الوسائط قريبًا، كما سندعم الفيديو!)."
#: mediagoblin/templates/mediagoblin/root.html:34
msgid ""
@@ -217,15 +231,15 @@ msgstr "فشل الولوج!"
#: mediagoblin/templates/mediagoblin/auth/login.html:42
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/register.html:27
msgid "Create an account!"
-msgstr "أنشئ حسابا!"
+msgstr "أنشئ حسابًا!"
#: mediagoblin/templates/mediagoblin/auth/register.html:30
msgid "Create"
@@ -241,19 +255,20 @@ msgid ""
"\n"
"%(verification_url)s"
msgstr ""
-"أهلا %(username)s،\n"
+"أهلًا يا %(username)s،\n"
"\n"
-"لتفعيل حسابك في غنو ميدياغوبلن، افتح الرابط التالي\n"
-"في متصفحك:\n"
+"افتح الرابط التالي\n"
+"في متصفحك لتفعيل حسابك في غنو ميدياغوبلن:\n"
"\n"
"%(verification_url)s"
#: mediagoblin/templates/mediagoblin/edit/edit.html:29
#, python-format
msgid "Editing %(media_title)s"
-msgstr "تعديل %(media_title)s"
+msgstr "تحرير %(media_title)s"
#: mediagoblin/templates/mediagoblin/edit/edit.html:36
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
msgid "Cancel"
msgstr "ألغِ"
@@ -265,11 +280,11 @@ msgstr "احفظ التغييرات"
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:29
#, python-format
msgid "Editing %(username)s's profile"
-msgstr "تعديل ملف %(username)s"
+msgstr "تحرير ملف %(username)s الشخصي"
#: mediagoblin/templates/mediagoblin/listings/tag.html:31
msgid "Media tagged with:"
-msgstr "الوسائط الموسومة بـ:"
+msgstr "الوسائط الموسومة ب‍"
#: mediagoblin/templates/mediagoblin/submit/start.html:26
msgid "Submit yer media"
@@ -287,7 +302,16 @@ msgstr "وسائط <a href=\"%(user_url)s\">%(username)s</a>"
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:52
#: mediagoblin/templates/mediagoblin/user_pages/user.html:32
msgid "Sorry, no such user found."
-msgstr "عذرا، لا يوجد مستخدم مماثل"
+msgstr "عذرًا، تعذر العثور على مستخدم بهذا الاسم."
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
+#, python-format
+msgid "Really delete %(title)s?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:50
+msgid "Delete Permanently"
+msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:22
msgid "Media processing panel"
@@ -317,7 +341,7 @@ msgstr "يجب التحقق من البريد الإلكتروني"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:42
msgid "Almost done! Your account still needs to be activated."
-msgstr "انتهينا تقريبا! لا زال حسابك يحتاج إلى التفعيل."
+msgstr "أوشكنا على الانتهاء! ما زال حسابك بحاجة إلى التفعيل."
#: mediagoblin/templates/mediagoblin/user_pages/user.html:47
msgid ""
@@ -350,7 +374,7 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/user.html:78
#, python-format
msgid "%(username)s's profile"
-msgstr "ملف %(username)s's"
+msgstr "ملف %(username)s الشخصي"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:85
msgid "Here's a spot to tell others about yourself."
@@ -359,7 +383,7 @@ msgstr "هذه زاوية لتخبر الآخرين فيها عن نفسك."
#: mediagoblin/templates/mediagoblin/user_pages/user.html:90
#: mediagoblin/templates/mediagoblin/user_pages/user.html:108
msgid "Edit profile"
-msgstr "عدل الملف"
+msgstr "حرِّر الملف الشخصي"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
msgid "This user hasn't filled in their profile (yet)."
@@ -368,7 +392,7 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/user.html:122
#, python-format
msgid "View all of %(username)s's media"
-msgstr "اعرض كل وسائط %(username)s"
+msgstr "أظهِر كل وسائط %(username)s"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:135
msgid ""
@@ -382,7 +406,7 @@ msgstr "أضف وسائط"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:147
msgid "There doesn't seem to be any media here yet..."
-msgstr "لا يبدو أنه يوجد أي وسائط هنا حتى الآن..."
+msgstr "لا يبدو أنه توجد أي وسائط هنا حتى الآن..."
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
msgid "feed icon"
@@ -392,8 +416,24 @@ msgstr ""
msgid "Atom feed"
msgstr ""
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:40
+msgid "Newer"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:46
+msgid "Older"
+msgstr ""
+
#: mediagoblin/user_pages/forms.py:24
msgid "Comment"
+msgstr "علِّق"
+
+#: mediagoblin/user_pages/forms.py:30
+msgid "I am sure I want to delete this"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:176
+msgid "You are about to delete another user's media. Proceed with caution."
msgstr ""
diff --git a/mediagoblin/i18n/de/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/de/LC_MESSAGES/mediagoblin.mo
index 898d5f0f..d53cff8b 100644
--- a/mediagoblin/i18n/de/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/de/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/de/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/de/LC_MESSAGES/mediagoblin.po
index f8ee1ea8..8360ee93 100644
--- a/mediagoblin/i18n/de/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/de/LC_MESSAGES/mediagoblin.po
@@ -4,17 +4,18 @@
#
# Rafael Maguiña <rafael.maguina@gmail.com>, 2011.
# <benjamin@lebsanft.org>, 2011.
-# <mediagoblin.org@samba-tng.org>, 2011.
# Elrond <elrond+mediagoblin.org@samba-tng.org>, 2011.
+# <mediagoblin.org@samba-tng.org>, 2011.
+# Vinzenz Vietzke <vinz@fedoraproject.org>, 2011.
# <cwebber@dustycloud.org>, 2011.
# Jan-Christoph Borchardt <JanCBorchardt@fsfe.org>, 2011.
msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://bugs.foocorp.net/projects/mediagoblin/issues\n"
-"POT-Creation-Date: 2011-08-25 07:41-0500\n"
-"PO-Revision-Date: 2011-08-25 19:13+0000\n"
-"Last-Translator: piratenpanda <benjamin@lebsanft.org>\n"
+"POT-Creation-Date: 2011-09-05 23:31-0500\n"
+"PO-Revision-Date: 2011-09-06 04:31+0000\n"
+"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
"Language-Team: German (http://www.transifex.net/projects/p/mediagoblin/team/de/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -23,11 +24,11 @@ msgstr ""
"Language: de\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
-#: mediagoblin/auth/forms.py:24 mediagoblin/auth/forms.py:46
+#: mediagoblin/auth/forms.py:24 mediagoblin/auth/forms.py:48
msgid "Username"
msgstr "Benutzername"
-#: mediagoblin/auth/forms.py:29 mediagoblin/auth/forms.py:50
+#: mediagoblin/auth/forms.py:29 mediagoblin/auth/forms.py:52
msgid "Password"
msgstr "Passwort"
@@ -39,7 +40,11 @@ msgstr "Passwörter müssen übereinstimmen."
msgid "Confirm password"
msgstr "Passwort wiederholen"
-#: mediagoblin/auth/forms.py:39
+#: mediagoblin/auth/forms.py:38
+msgid "Type it again here to make sure there are no spelling mistakes."
+msgstr "Hier nochmal eintragen, um Tippfehler zu verhindern."
+
+#: mediagoblin/auth/forms.py:41
msgid "Email address"
msgstr "Email-Adresse"
@@ -47,15 +52,15 @@ msgstr "Email-Adresse"
msgid "Sorry, registration is disabled on this instance."
msgstr "Registrierung ist auf dieser Instanz leider deaktiviert."
-#: mediagoblin/auth/views.py:57
+#: mediagoblin/auth/views.py:58
msgid "Sorry, a user with that name already exists."
msgstr "Leider gibt es bereits einen Benutzer mit diesem Namen."
-#: mediagoblin/auth/views.py:61
+#: mediagoblin/auth/views.py:62
msgid "Sorry, that email address has already been taken."
msgstr "Tut und Leid, aber diese Email-Adresse wird bereits verwendet."
-#: mediagoblin/auth/views.py:159
+#: mediagoblin/auth/views.py:160
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
@@ -63,11 +68,11 @@ msgstr ""
"Deine Email-Adresse wurde bestätigt. Du kannst dich nun anmelden, Dein "
"Profil bearbeiten und Bilder hochladen!"
-#: mediagoblin/auth/views.py:165
+#: mediagoblin/auth/views.py:166
msgid "The verification key or user id is incorrect"
msgstr "Der Bestätigungssschlüssel oder die Nutzernummer ist falsch."
-#: mediagoblin/auth/views.py:186
+#: mediagoblin/auth/views.py:187
#: mediagoblin/templates/mediagoblin/auth/resent_verification_email.html:22
msgid "Resent your verification email."
msgstr "Bestätigungs-Email wurde erneut versandt."
@@ -76,35 +81,40 @@ msgstr "Bestätigungs-Email wurde erneut versandt."
msgid "Title"
msgstr "Titel"
-#: mediagoblin/edit/forms.py:29
+#: mediagoblin/edit/forms.py:30 mediagoblin/submit/forms.py:32
+msgid "Tags"
+msgstr "Markierungen"
+
+#: mediagoblin/edit/forms.py:33
msgid "Slug"
msgstr "Kurztitel"
-#: mediagoblin/edit/forms.py:30
+#: mediagoblin/edit/forms.py:34
msgid "The slug can't be empty"
msgstr "Bitte gib einen Kurztitel ein"
-#: mediagoblin/edit/forms.py:33 mediagoblin/submit/forms.py:31
-msgid "Tags"
-msgstr "Markierungen"
+#: mediagoblin/edit/forms.py:35
+msgid ""
+"The title part of this media's URL. You usually don't need to change this."
+msgstr ""
-#: mediagoblin/edit/forms.py:38
+#: mediagoblin/edit/forms.py:42
msgid "Bio"
msgstr "Biographie"
-#: mediagoblin/edit/forms.py:41
+#: mediagoblin/edit/forms.py:45
msgid "Website"
msgstr "Webseite"
-#: mediagoblin/edit/views.py:65
+#: mediagoblin/edit/views.py:63
msgid "An entry with that slug already exists for this user."
msgstr "Diesen Kurztitel hast du bereits vergeben."
-#: mediagoblin/edit/views.py:94
+#: mediagoblin/edit/views.py:84
msgid "You are editing another user's media. Proceed with caution."
msgstr "Du bearbeitest die Medien eines Anderen. Bitte sei vorsichtig."
-#: mediagoblin/edit/views.py:165
+#: mediagoblin/edit/views.py:155
msgid "You are editing a user's profile. Proceed with caution."
msgstr "Du bearbeitest das Profil eines Anderen. Bitte sei vorsichtig."
@@ -116,6 +126,10 @@ msgstr "Die Datei stimmt nicht mit dem gewählten Medientyp überein."
msgid "File"
msgstr "Datei"
+#: mediagoblin/submit/forms.py:30
+msgid "Description of this work"
+msgstr ""
+
#: mediagoblin/submit/views.py:47
msgid "You must provide a file."
msgstr "Du musst eine Datei angeben."
@@ -173,10 +187,10 @@ msgstr "Anmelden"
#: mediagoblin/templates/mediagoblin/base.html:89
msgid ""
"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
-"href=\"http://gnu.org/\">GNU project</a>"
+"href=\"http://gnu.org/\">GNU</a> project"
msgstr ""
-"Läuft mit <a href=\"http://mediagoblin.org\">MediaGoblin</a>, einem <a "
-"href=\"http://gnu.org/\">GNU-Projekt</a>"
+"Läuft mit &lt;a href=\"http://mediagoblin.org\"&gt;MediaGoblin&lt;/a&gt;, "
+"einem &lt;a href=\"http://gnu.org/\"&gt;GNU-Projekt&lt;/a&gt;"
#: mediagoblin/templates/mediagoblin/root.html:27
msgid "Hi there, media lover! MediaGoblin is..."
@@ -246,7 +260,7 @@ msgstr "Neues Konto registrieren!"
#: mediagoblin/templates/mediagoblin/auth/register.html:30
msgid "Create"
-msgstr "Erstellen"
+msgstr "Registrieren"
#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
#, python-format
@@ -270,6 +284,7 @@ msgid "Editing %(media_title)s"
msgstr "%(media_title)s bearbeiten"
#: mediagoblin/templates/mediagoblin/edit/edit.html:36
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
msgid "Cancel"
msgstr "Abbrechen"
@@ -305,6 +320,15 @@ msgstr "<a href=\"%(user_url)s\">%(username)s</a>s Medien"
msgid "Sorry, no such user found."
msgstr "Dieser Benutzer wurde leider nicht gefunden."
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
+#, python-format
+msgid "Really delete %(title)s?"
+msgstr "%(title)s wirklich löschen?"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:50
+msgid "Delete Permanently"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:22
msgid "Media processing panel"
msgstr "Medienverarbeitung"
@@ -377,7 +401,7 @@ msgstr "%(username)ss Profil"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:85
msgid "Here's a spot to tell others about yourself."
-msgstr "Hier kannst du Anderen etwas über dich zu erzählen."
+msgstr "Hier kannst du Anderen etwas über dich erzählen."
#: mediagoblin/templates/mediagoblin/user_pages/user.html:90
#: mediagoblin/templates/mediagoblin/user_pages/user.html:108
@@ -415,8 +439,24 @@ msgstr "Feed-Symbol"
msgid "Atom feed"
msgstr "Atom-Feed"
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:40
+msgid "Newer"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:46
+msgid "Older"
+msgstr ""
+
#: mediagoblin/user_pages/forms.py:24
msgid "Comment"
msgstr "Kommentar"
+#: mediagoblin/user_pages/forms.py:30
+msgid "I am sure I want to delete this"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:176
+msgid "You are about to delete another user's media. Proceed with caution."
+msgstr "Du versuchst Medien eines anderen Nutzers zu löschen. Sei vorsichtig."
+
diff --git a/mediagoblin/i18n/en/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/en/LC_MESSAGES/mediagoblin.po
index 3f5539c6..5818cd77 100644
--- a/mediagoblin/i18n/en/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/en/LC_MESSAGES/mediagoblin.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2011-08-25 07:41-0500\n"
+"POT-Creation-Date: 2011-09-05 23:31-0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -17,11 +17,11 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 0.9.6\n"
-#: mediagoblin/auth/forms.py:24 mediagoblin/auth/forms.py:46
+#: mediagoblin/auth/forms.py:24 mediagoblin/auth/forms.py:48
msgid "Username"
msgstr ""
-#: mediagoblin/auth/forms.py:29 mediagoblin/auth/forms.py:50
+#: mediagoblin/auth/forms.py:29 mediagoblin/auth/forms.py:52
msgid "Password"
msgstr ""
@@ -33,7 +33,11 @@ msgstr ""
msgid "Confirm password"
msgstr ""
-#: mediagoblin/auth/forms.py:39
+#: mediagoblin/auth/forms.py:38
+msgid "Type it again here to make sure there are no spelling mistakes."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:41
msgid "Email address"
msgstr ""
@@ -41,25 +45,25 @@ msgstr ""
msgid "Sorry, registration is disabled on this instance."
msgstr ""
-#: mediagoblin/auth/views.py:57
+#: mediagoblin/auth/views.py:58
msgid "Sorry, a user with that name already exists."
msgstr ""
-#: mediagoblin/auth/views.py:61
+#: mediagoblin/auth/views.py:62
msgid "Sorry, that email address has already been taken."
msgstr ""
-#: mediagoblin/auth/views.py:159
+#: mediagoblin/auth/views.py:160
msgid ""
"Your email address has been verified. You may now login, edit your "
"profile, and submit images!"
msgstr ""
-#: mediagoblin/auth/views.py:165
+#: mediagoblin/auth/views.py:166
msgid "The verification key or user id is incorrect"
msgstr ""
-#: mediagoblin/auth/views.py:186
+#: mediagoblin/auth/views.py:187
#: mediagoblin/templates/mediagoblin/auth/resent_verification_email.html:22
msgid "Resent your verification email."
msgstr ""
@@ -68,35 +72,39 @@ msgstr ""
msgid "Title"
msgstr ""
-#: mediagoblin/edit/forms.py:29
+#: mediagoblin/edit/forms.py:30 mediagoblin/submit/forms.py:32
+msgid "Tags"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:33
msgid "Slug"
msgstr ""
-#: mediagoblin/edit/forms.py:30
+#: mediagoblin/edit/forms.py:34
msgid "The slug can't be empty"
msgstr ""
-#: mediagoblin/edit/forms.py:33 mediagoblin/submit/forms.py:31
-msgid "Tags"
+#: mediagoblin/edit/forms.py:35
+msgid "The title part of this media's URL. You usually don't need to change this."
msgstr ""
-#: mediagoblin/edit/forms.py:38
+#: mediagoblin/edit/forms.py:42
msgid "Bio"
msgstr ""
-#: mediagoblin/edit/forms.py:41
+#: mediagoblin/edit/forms.py:45
msgid "Website"
msgstr ""
-#: mediagoblin/edit/views.py:65
+#: mediagoblin/edit/views.py:63
msgid "An entry with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:94
+#: mediagoblin/edit/views.py:84
msgid "You are editing another user's media. Proceed with caution."
msgstr ""
-#: mediagoblin/edit/views.py:165
+#: mediagoblin/edit/views.py:155
msgid "You are editing a user's profile. Proceed with caution."
msgstr ""
@@ -108,6 +116,10 @@ msgstr ""
msgid "File"
msgstr ""
+#: mediagoblin/submit/forms.py:30
+msgid "Description of this work"
+msgstr ""
+
#: mediagoblin/submit/views.py:47
msgid "You must provide a file."
msgstr ""
@@ -163,7 +175,7 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/base.html:89
msgid ""
"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
-"href=\"http://gnu.org/\">GNU project</a>"
+"href=\"http://gnu.org/\">GNU</a> project"
msgstr ""
#: mediagoblin/templates/mediagoblin/root.html:27
@@ -242,6 +254,7 @@ msgid "Editing %(media_title)s"
msgstr ""
#: mediagoblin/templates/mediagoblin/edit/edit.html:36
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
msgid "Cancel"
msgstr ""
@@ -277,6 +290,15 @@ msgstr ""
msgid "Sorry, no such user found."
msgstr ""
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
+#, python-format
+msgid "Really delete %(title)s?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:50
+msgid "Delete Permanently"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:22
msgid "Media processing panel"
msgstr ""
@@ -376,7 +398,23 @@ msgstr ""
msgid "Atom feed"
msgstr ""
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:40
+msgid "Newer"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:46
+msgid "Older"
+msgstr ""
+
#: mediagoblin/user_pages/forms.py:24
msgid "Comment"
msgstr ""
+#: mediagoblin/user_pages/forms.py:30
+msgid "I am sure I want to delete this"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:176
+msgid "You are about to delete another user's media. Proceed with caution."
+msgstr ""
+
diff --git a/mediagoblin/i18n/eo/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/eo/LC_MESSAGES/mediagoblin.mo
index 63a3294f..2502703b 100644
--- a/mediagoblin/i18n/eo/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/eo/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/eo/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/eo/LC_MESSAGES/mediagoblin.po
index f2a1b78b..0b01e7b5 100644
--- a/mediagoblin/i18n/eo/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/eo/LC_MESSAGES/mediagoblin.po
@@ -9,9 +9,9 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://bugs.foocorp.net/projects/mediagoblin/issues\n"
-"POT-Creation-Date: 2011-08-25 07:41-0500\n"
-"PO-Revision-Date: 2011-08-25 14:28+0000\n"
-"Last-Translator: aleksejrs <deletesoftware@yandex.ru>\n"
+"POT-Creation-Date: 2011-09-05 23:31-0500\n"
+"PO-Revision-Date: 2011-09-06 04:31+0000\n"
+"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -20,11 +20,11 @@ msgstr ""
"Language: eo\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
-#: mediagoblin/auth/forms.py:24 mediagoblin/auth/forms.py:46
+#: mediagoblin/auth/forms.py:24 mediagoblin/auth/forms.py:48
msgid "Username"
msgstr "Uzantnomo"
-#: mediagoblin/auth/forms.py:29 mediagoblin/auth/forms.py:50
+#: mediagoblin/auth/forms.py:29 mediagoblin/auth/forms.py:52
msgid "Password"
msgstr "Pasvorto"
@@ -36,7 +36,11 @@ msgstr "Pasvortoj devas esti egalaj."
msgid "Confirm password"
msgstr "Retajpu pasvorton"
-#: mediagoblin/auth/forms.py:39
+#: mediagoblin/auth/forms.py:38
+msgid "Type it again here to make sure there are no spelling mistakes."
+msgstr "Retajpu ĝin por certigi, ke ne okazis mistajpoj."
+
+#: mediagoblin/auth/forms.py:41
msgid "Email address"
msgstr "Retpoŝtadreso"
@@ -44,15 +48,15 @@ msgstr "Retpoŝtadreso"
msgid "Sorry, registration is disabled on this instance."
msgstr "Bedaŭrinde, registrado estas malaktivigita en tiu ĉi instalaĵo."
-#: mediagoblin/auth/views.py:57
+#: mediagoblin/auth/views.py:58
msgid "Sorry, a user with that name already exists."
msgstr "Bedaŭrinde, uzanto kun tiu nomo jam ekzistas."
-#: mediagoblin/auth/views.py:61
+#: mediagoblin/auth/views.py:62
msgid "Sorry, that email address has already been taken."
msgstr "Tiu retpoŝtadreso jam estas uzata."
-#: mediagoblin/auth/views.py:159
+#: mediagoblin/auth/views.py:160
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
@@ -60,11 +64,11 @@ msgstr ""
"Via retpoŝtadreso estas konfirmita. Vi povas nun ensaluti, redakti vian "
"profilon, kaj alŝuti bildojn!"
-#: mediagoblin/auth/views.py:165
+#: mediagoblin/auth/views.py:166
msgid "The verification key or user id is incorrect"
msgstr "La kontrol-kodo aŭ la uzantonomo ne estas korekta"
-#: mediagoblin/auth/views.py:186
+#: mediagoblin/auth/views.py:187
#: mediagoblin/templates/mediagoblin/auth/resent_verification_email.html:22
msgid "Resent your verification email."
msgstr "Resendi vian kontrol-mesaĝon."
@@ -73,46 +77,55 @@ msgstr "Resendi vian kontrol-mesaĝon."
msgid "Title"
msgstr "Titolo"
-#: mediagoblin/edit/forms.py:29
+#: mediagoblin/edit/forms.py:30 mediagoblin/submit/forms.py:32
+msgid "Tags"
+msgstr "Etikedoj"
+
+#: mediagoblin/edit/forms.py:33
msgid "Slug"
msgstr "La distingiga adresparto"
-#: mediagoblin/edit/forms.py:30
+#: mediagoblin/edit/forms.py:34
msgid "The slug can't be empty"
msgstr "La distingiga adresparto ne povas esti malplena"
-#: mediagoblin/edit/forms.py:33 mediagoblin/submit/forms.py:31
-msgid "Tags"
-msgstr "Etikedoj"
+#: mediagoblin/edit/forms.py:35
+msgid ""
+"The title part of this media's URL. You usually don't need to change this."
+msgstr ""
-#: mediagoblin/edit/forms.py:38
+#: mediagoblin/edit/forms.py:42
msgid "Bio"
msgstr "Bio"
-#: mediagoblin/edit/forms.py:41
+#: mediagoblin/edit/forms.py:45
msgid "Website"
msgstr "Retejo"
-#: mediagoblin/edit/views.py:65
+#: mediagoblin/edit/views.py:63
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:94
+#: mediagoblin/edit/views.py:84
msgid "You are editing another user's media. Proceed with caution."
msgstr "Vi priredaktas dosieron de alia uzanto. Agu singardeme."
-#: mediagoblin/edit/views.py:165
+#: mediagoblin/edit/views.py:155
msgid "You are editing a user's profile. Proceed with caution."
msgstr "Vi redaktas profilon de alia uzanto. Agu singardeme."
#: mediagoblin/process_media/errors.py:44
msgid "Invalid file given for media type."
-msgstr ""
+msgstr "La provizita dosiero ne konformas al la informtipo."
#: mediagoblin/submit/forms.py:25
msgid "File"
msgstr "Dosiero"
+#: mediagoblin/submit/forms.py:30
+msgid "Description of this work"
+msgstr ""
+
#: mediagoblin/submit/views.py:47
msgid "You must provide a file."
msgstr "Vi devas provizi dosieron."
@@ -131,7 +144,7 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/404.html:24
msgid "There doesn't seem to be a page at this address. Sorry!"
-msgstr ""
+msgstr "Verŝajne ĉe ĉi tiu adreso ne estas paĝo. Ni bedaŭras!"
#: mediagoblin/templates/mediagoblin/404.html:26
msgid ""
@@ -143,7 +156,7 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/404.html:32
msgid "Image of 404 goblin stressing out"
-msgstr ""
+msgstr "Bildo de 404-koboldo penŝvitanta."
#: mediagoblin/templates/mediagoblin/base.html:22
msgid "GNU MediaGoblin"
@@ -170,14 +183,14 @@ msgstr "Ensaluti"
#: mediagoblin/templates/mediagoblin/base.html:89
msgid ""
"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
-"href=\"http://gnu.org/\">GNU project</a>"
+"href=\"http://gnu.org/\">GNU</a> project"
msgstr ""
-"Funkcias per <a href=\"http://mediagoblin.org\">MediaGoblin</a>, unu el la "
-"<a href=\"http://gnu.org/\">projektoj de GNU</a>"
+"Funkcias per &lt;a href=\"http://mediagoblin.org\"&gt;MediaGoblin&lt;/a&gt;,"
+" unu el la &lt;a href=\"http://gnu.org/\"&gt;projektoj de GNU&lt;/a&gt;"
#: mediagoblin/templates/mediagoblin/root.html:27
msgid "Hi there, media lover! MediaGoblin is..."
-msgstr ""
+msgstr "Saluton, artemulo! MediaGoblin estas…"
#: mediagoblin/templates/mediagoblin/root.html:29
msgid "The perfect place for your media!"
@@ -188,14 +201,15 @@ msgid ""
"A place for people to collaborate and show off original and derived "
"creations!"
msgstr ""
+"Loko, kie homoj povas kunlabori, kaj elmeti originalajn kreaĵojn kaj "
+"derivaĵojn!"
#: mediagoblin/templates/mediagoblin/root.html:31
msgid ""
"Free, as in freedom. (We’re a <a href=\"http://gnu.org\">GNU</a> project, "
"after all.)"
msgstr ""
-"Libera verko. (Ni ja estas projekto de &lt;a "
-"href=\"http://gnu.org\"&gt;GNU&lt;/a&gt;.)"
+"Libera verko. (Ni ja estas projekto de <a href=\"http://gnu.org\">GNU</a>.)"
#: mediagoblin/templates/mediagoblin/root.html:32
msgid ""
@@ -208,6 +222,8 @@ msgid ""
"Built for extensibility. (Multiple media types coming soon to the software,"
" including video support!)"
msgstr ""
+"Kreita por etendado. (Baldaŭ en la programo aperos subteno de pluraj "
+"informspecoj, inkluzive de filmoj!)"
#: mediagoblin/templates/mediagoblin/root.html:34
msgid ""
@@ -258,6 +274,7 @@ msgid "Editing %(media_title)s"
msgstr "Priredaktado de %(media_title)s"
#: mediagoblin/templates/mediagoblin/edit/edit.html:36
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
msgid "Cancel"
msgstr "Nuligi"
@@ -293,26 +310,37 @@ msgstr "Dosieroj de <a href=\"%(user_url)s\">%(username)s</a>"
msgid "Sorry, no such user found."
msgstr "Uzanto ne trovita."
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
+#, python-format
+msgid "Really delete %(title)s?"
+msgstr "Ĉu efektive forigi %(title)s?"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:50
+msgid "Delete Permanently"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:22
msgid "Media processing panel"
-msgstr ""
+msgstr "Kontrolejo pri dosierpreparado."
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:25
msgid ""
"You can track the state of media being processed for your gallery here."
msgstr ""
+"Ĉi tie vi povas informiĝi pri la stato de preparado de dosieroj por via "
+"galerio."
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:28
msgid "Media in-processing"
-msgstr ""
+msgstr "Dosieroj preparataj"
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:46
msgid "No media in-processing"
-msgstr ""
+msgstr "Neniu dosieroj preparatas"
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:50
msgid "These uploads failed to process:"
-msgstr ""
+msgstr "Preparado de ĉi tiuj alŝutaĵoj malsukcesis:"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:39
#: mediagoblin/templates/mediagoblin/user_pages/user.html:59
@@ -321,7 +349,7 @@ msgstr "Necesas konfirmo de retpoŝtadreso"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:42
msgid "Almost done! Your account still needs to be activated."
-msgstr ""
+msgstr "Preskaŭ finite! Restas nur validigi vian konton."
#: mediagoblin/templates/mediagoblin/user_pages/user.html:47
msgid ""
@@ -380,6 +408,7 @@ msgid ""
"This is where your media will appear, but you don't seem to have added "
"anything yet."
msgstr ""
+"Ĝuste ĉi tie aperos viaj dosieroj, sed vi ŝajne ankoraŭ nenion alŝutis."
#: mediagoblin/templates/mediagoblin/user_pages/user.html:141
msgid "Add media"
@@ -395,10 +424,26 @@ msgstr "flusimbolo"
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
msgid "Atom feed"
+msgstr "Atom-a informfluo"
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:40
+msgid "Newer"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:46
+msgid "Older"
msgstr ""
#: mediagoblin/user_pages/forms.py:24
msgid "Comment"
msgstr "Komento"
+#: mediagoblin/user_pages/forms.py:30
+msgid "I am sure I want to delete this"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:176
+msgid "You are about to delete another user's media. Proceed with caution."
+msgstr "Vi estas forigonta dosieron de alia uzanto. Estu singardema."
+
diff --git a/mediagoblin/i18n/es/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/es/LC_MESSAGES/mediagoblin.mo
index 6adf5526..a8fc04ea 100644
--- a/mediagoblin/i18n/es/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/es/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/es/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/es/LC_MESSAGES/mediagoblin.po
index d2e8f662..5b16f19d 100644
--- a/mediagoblin/i18n/es/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/es/LC_MESSAGES/mediagoblin.po
@@ -5,13 +5,14 @@
# <ekenbrand@hotmail.com>, 2011.
# <juangsub@gmail.com>, 2011.
# <jacobo@gnu.org>, 2011.
+# Mario Rodriguez <msrodriguez00@gmail.com>, 2011.
msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://bugs.foocorp.net/projects/mediagoblin/issues\n"
-"POT-Creation-Date: 2011-08-25 07:41-0500\n"
-"PO-Revision-Date: 2011-08-25 20:22+0000\n"
-"Last-Translator: nvjacobo <jacobo@gnu.org>\n"
+"POT-Creation-Date: 2011-09-05 23:31-0500\n"
+"PO-Revision-Date: 2011-09-06 04:31+0000\n"
+"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
"Language-Team: Spanish (Castilian) (http://www.transifex.net/projects/p/mediagoblin/team/es/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -20,11 +21,11 @@ msgstr ""
"Language: es\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
-#: mediagoblin/auth/forms.py:24 mediagoblin/auth/forms.py:46
+#: mediagoblin/auth/forms.py:24 mediagoblin/auth/forms.py:48
msgid "Username"
msgstr "Nombre de Usuario"
-#: mediagoblin/auth/forms.py:29 mediagoblin/auth/forms.py:50
+#: mediagoblin/auth/forms.py:29 mediagoblin/auth/forms.py:52
msgid "Password"
msgstr "Contraseña"
@@ -36,7 +37,12 @@ msgstr "Las contraseñas deben coincidir."
msgid "Confirm password"
msgstr "Confirme su contraseña"
-#: mediagoblin/auth/forms.py:39
+#: mediagoblin/auth/forms.py:38
+msgid "Type it again here to make sure there are no spelling mistakes."
+msgstr ""
+"Escriba de nuevo aquí para asegurarse de que no hay faltas de ortografía."
+
+#: mediagoblin/auth/forms.py:41
msgid "Email address"
msgstr "Dirección de correo electrónico"
@@ -44,15 +50,15 @@ msgstr "Dirección de correo electrónico"
msgid "Sorry, registration is disabled on this instance."
msgstr "Lo sentimos, la registración está deshabilitado en este momento."
-#: mediagoblin/auth/views.py:57
+#: mediagoblin/auth/views.py:58
msgid "Sorry, a user with that name already exists."
msgstr "Lo sentimos, ya existe un usuario con ese nombre."
-#: mediagoblin/auth/views.py:61
+#: mediagoblin/auth/views.py:62
msgid "Sorry, that email address has already been taken."
msgstr "Lo sentimos, su dirección de correo electrónico ya ha sido tomada."
-#: mediagoblin/auth/views.py:159
+#: mediagoblin/auth/views.py:160
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
@@ -60,12 +66,12 @@ msgstr ""
"Su dirección de correo electrónico ha sido verificada. ¡Ahora puede "
"ingresar, editar su perfil, y enviar imágenes!"
-#: mediagoblin/auth/views.py:165
+#: mediagoblin/auth/views.py:166
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:186
+#: mediagoblin/auth/views.py:187
#: mediagoblin/templates/mediagoblin/auth/resent_verification_email.html:22
msgid "Resent your verification email."
msgstr "Reenvíe su correo electrónico de verificación."
@@ -74,36 +80,41 @@ msgstr "Reenvíe su correo electrónico de verificación."
msgid "Title"
msgstr "Título"
-#: mediagoblin/edit/forms.py:29
+#: mediagoblin/edit/forms.py:30 mediagoblin/submit/forms.py:32
+msgid "Tags"
+msgstr "Etiquetas"
+
+#: mediagoblin/edit/forms.py:33
msgid "Slug"
msgstr "Ficha"
-#: mediagoblin/edit/forms.py:30
+#: mediagoblin/edit/forms.py:34
msgid "The slug can't be empty"
msgstr "La ficha no puede estar vacía"
-#: mediagoblin/edit/forms.py:33 mediagoblin/submit/forms.py:31
-msgid "Tags"
-msgstr "Etiquetas"
+#: mediagoblin/edit/forms.py:35
+msgid ""
+"The title part of this media's URL. You usually don't need to change this."
+msgstr ""
-#: mediagoblin/edit/forms.py:38
+#: mediagoblin/edit/forms.py:42
msgid "Bio"
msgstr "Bio"
-#: mediagoblin/edit/forms.py:41
+#: mediagoblin/edit/forms.py:45
msgid "Website"
msgstr "Sitio web"
-#: mediagoblin/edit/views.py:65
+#: mediagoblin/edit/views.py:63
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:94
+#: mediagoblin/edit/views.py:84
msgid "You are editing another user's media. Proceed with caution."
msgstr ""
"Usted está editando el contenido de otro usuario. Proceder con precaución."
-#: mediagoblin/edit/views.py:165
+#: mediagoblin/edit/views.py:155
msgid "You are editing a user's profile. Proceed with caution."
msgstr "Usted está editando un perfil de usuario. Proceder con precaución."
@@ -115,6 +126,10 @@ msgstr "Archivo inálido para el formato seleccionado."
msgid "File"
msgstr "Archivo"
+#: mediagoblin/submit/forms.py:30
+msgid "Description of this work"
+msgstr ""
+
#: mediagoblin/submit/views.py:47
msgid "You must provide a file."
msgstr "Usted debe proporcionar un archivo."
@@ -172,10 +187,8 @@ msgstr "Conectarse"
#: mediagoblin/templates/mediagoblin/base.html:89
msgid ""
"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
-"href=\"http://gnu.org/\">GNU project</a>"
+"href=\"http://gnu.org/\">GNU</a> project"
msgstr ""
-"Potenciado por <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
-"href=\"http://gnu.org/\">GNU project</a>"
#: mediagoblin/templates/mediagoblin/root.html:27
msgid "Hi there, media lover! MediaGoblin is..."
@@ -265,6 +278,7 @@ msgid "Editing %(media_title)s"
msgstr "Edición %(media_title)s "
#: mediagoblin/templates/mediagoblin/edit/edit.html:36
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
msgid "Cancel"
msgstr "Cancelar"
@@ -300,6 +314,15 @@ msgstr "Contenido de <a href=\"%(user_url)s\">%(username)s</a>'s"
msgid "Sorry, no such user found."
msgstr "Lo sentimos, no se ha encontrado ese usuario."
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
+#, python-format
+msgid "Really delete %(title)s?"
+msgstr "Realmente desea eliminar %(title)s ?"
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:50
+msgid "Delete Permanently"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:22
msgid "Media processing panel"
msgstr "Panel de procesamiento de contenido"
@@ -411,8 +434,26 @@ msgstr "ícono feed"
msgid "Atom feed"
msgstr "Atom feed"
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:40
+msgid "Newer"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:46
+msgid "Older"
+msgstr ""
+
#: mediagoblin/user_pages/forms.py:24
msgid "Comment"
msgstr "Comentario"
+#: mediagoblin/user_pages/forms.py:30
+msgid "I am sure I want to delete this"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:176
+msgid "You are about to delete another user's media. Proceed with caution."
+msgstr ""
+"Usted está a punto de eliminar un medio de otro usuario. Proceder con "
+"cautela."
+
diff --git a/mediagoblin/i18n/fr/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/fr/LC_MESSAGES/mediagoblin.mo
index 871d2a42..93e218e8 100644
--- a/mediagoblin/i18n/fr/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/fr/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/fr/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/fr/LC_MESSAGES/mediagoblin.po
index 91da5fc7..51b60aec 100644
--- a/mediagoblin/i18n/fr/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/fr/LC_MESSAGES/mediagoblin.po
@@ -2,6 +2,7 @@
# Copyright (C) 2011 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
+# <joehillen@gmail.com>, 2011.
# <maxineb@members.fsf.org>, 2011.
# <marktraceur@gmail.com>, 2011.
# Valentin Villenave <valentin@villenave.net>, 2011.
@@ -10,8 +11,8 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://bugs.foocorp.net/projects/mediagoblin/issues\n"
-"POT-Creation-Date: 2011-08-25 07:41-0500\n"
-"PO-Revision-Date: 2011-08-25 12:41+0000\n"
+"POT-Creation-Date: 2011-09-05 23:31-0500\n"
+"PO-Revision-Date: 2011-09-06 04:31+0000\n"
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
@@ -21,11 +22,11 @@ msgstr ""
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=(n > 1)\n"
-#: mediagoblin/auth/forms.py:24 mediagoblin/auth/forms.py:46
+#: mediagoblin/auth/forms.py:24 mediagoblin/auth/forms.py:48
msgid "Username"
msgstr "Nom d'utilisateur"
-#: mediagoblin/auth/forms.py:29 mediagoblin/auth/forms.py:50
+#: mediagoblin/auth/forms.py:29 mediagoblin/auth/forms.py:52
msgid "Password"
msgstr "Mot de passe"
@@ -37,7 +38,13 @@ msgstr "Les mots de passe doivent correspondre."
msgid "Confirm password"
msgstr "Confirmer le mot de passe"
-#: mediagoblin/auth/forms.py:39
+#: mediagoblin/auth/forms.py:38
+msgid "Type it again here to make sure there are no spelling mistakes."
+msgstr ""
+"Tapez-le à nouveau ici pour vous assurer qu'il n'ya pas de fautes "
+"d'orthographe."
+
+#: mediagoblin/auth/forms.py:41
msgid "Email address"
msgstr "Adresse e-mail"
@@ -45,15 +52,15 @@ msgstr "Adresse e-mail"
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:57
+#: mediagoblin/auth/views.py:58
msgid "Sorry, a user with that name already exists."
msgstr "Un utilisateur existe déjà avec ce nom, désolé."
-#: mediagoblin/auth/views.py:61
+#: mediagoblin/auth/views.py:62
msgid "Sorry, that email address has already been taken."
msgstr "Désolé, cette adresse courriel a déjà été prise."
-#: mediagoblin/auth/views.py:159
+#: mediagoblin/auth/views.py:160
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
@@ -61,11 +68,11 @@ 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:165
+#: mediagoblin/auth/views.py:166
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:186
+#: mediagoblin/auth/views.py:187
#: mediagoblin/templates/mediagoblin/auth/resent_verification_email.html:22
msgid "Resent your verification email."
msgstr "E-mail de vérification renvoyé."
@@ -74,37 +81,42 @@ msgstr "E-mail de vérification renvoyé."
msgid "Title"
msgstr "Titre"
-#: mediagoblin/edit/forms.py:29
+#: mediagoblin/edit/forms.py:30 mediagoblin/submit/forms.py:32
+msgid "Tags"
+msgstr "Tags"
+
+#: mediagoblin/edit/forms.py:33
msgid "Slug"
msgstr "Légende"
-#: mediagoblin/edit/forms.py:30
+#: mediagoblin/edit/forms.py:34
msgid "The slug can't be empty"
msgstr "La légende ne peut pas être laissée vide."
-#: mediagoblin/edit/forms.py:33 mediagoblin/submit/forms.py:31
-msgid "Tags"
-msgstr "Tags"
+#: mediagoblin/edit/forms.py:35
+msgid ""
+"The title part of this media's URL. You usually don't need to change this."
+msgstr ""
-#: mediagoblin/edit/forms.py:38
+#: mediagoblin/edit/forms.py:42
msgid "Bio"
msgstr "Bio"
-#: mediagoblin/edit/forms.py:41
+#: mediagoblin/edit/forms.py:45
msgid "Website"
msgstr "Site web"
-#: mediagoblin/edit/views.py:65
+#: mediagoblin/edit/views.py:63
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:94
+#: mediagoblin/edit/views.py:84
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:165
+#: mediagoblin/edit/views.py:155
msgid "You are editing a user's profile. Proceed with caution."
msgstr ""
"Vous vous apprêtez à modifier le profil d'un utilisateur. Veuillez prendre "
@@ -112,12 +124,16 @@ msgstr ""
#: mediagoblin/process_media/errors.py:44
msgid "Invalid file given for media type."
-msgstr ""
+msgstr "Invalide fichier donné pour le type de média."
#: mediagoblin/submit/forms.py:25
msgid "File"
msgstr "Fichier"
+#: mediagoblin/submit/forms.py:30
+msgid "Description of this work"
+msgstr ""
+
#: mediagoblin/submit/views.py:47
msgid "You must provide a file."
msgstr "Il vous faut fournir un fichier."
@@ -132,21 +148,23 @@ msgstr "Youhou, c'est envoyé !"
#: mediagoblin/templates/mediagoblin/404.html:21
msgid "Oops!"
-msgstr ""
+msgstr "Zut!"
#: mediagoblin/templates/mediagoblin/404.html:24
msgid "There doesn't seem to be a page at this address. Sorry!"
-msgstr ""
+msgstr "Il ne semble pas être une page à cette adresse. Désolé!"
#: mediagoblin/templates/mediagoblin/404.html:26
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é ou supprimé."
#: mediagoblin/templates/mediagoblin/404.html:32
msgid "Image of 404 goblin stressing out"
-msgstr ""
+msgstr "Image de 404 gobelin stresser"
#: mediagoblin/templates/mediagoblin/base.html:22
msgid "GNU MediaGoblin"
@@ -154,7 +172,7 @@ msgstr "GNU MediaGoblin"
#: mediagoblin/templates/mediagoblin/base.html:47
msgid "MediaGoblin logo"
-msgstr ""
+msgstr "Logo MediaGoblin"
#: mediagoblin/templates/mediagoblin/base.html:52
msgid "Submit media"
@@ -173,42 +191,50 @@ msgstr "S'identifier"
#: mediagoblin/templates/mediagoblin/base.html:89
msgid ""
"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
-"href=\"http://gnu.org/\">GNU project</a>"
+"href=\"http://gnu.org/\">GNU</a> project"
msgstr ""
-"Propulsé par <a href=\"http://mediagoblin.org\">MediaGoblin</a>, un projet "
-"de <a href=\"http://gnu.org/\">GNU</a>"
+"Propulsé par <a href=\"http://mediagoblin.org\">MediaGoblin</a> , un <a "
+"href=\"http://gnu.org/\">GNU</a> de projet"
#: mediagoblin/templates/mediagoblin/root.html:27
msgid "Hi there, media lover! MediaGoblin is..."
-msgstr ""
+msgstr "Salut à tous, amateur de médias! MediaGoblin est ..."
#: mediagoblin/templates/mediagoblin/root.html:29
msgid "The perfect place for your media!"
-msgstr ""
+msgstr "L'endroit idéal pour vos médias!"
#: mediagoblin/templates/mediagoblin/root.html:30
msgid ""
"A place for people to collaborate and show off original and derived "
"creations!"
msgstr ""
+"Un lieu pour les personnes de collaborer et de montrer des créations "
+"originales et dérivées!"
#: mediagoblin/templates/mediagoblin/root.html:31
msgid ""
"Free, as in freedom. (We’re a <a href=\"http://gnu.org\">GNU</a> project, "
"after all.)"
msgstr ""
+"Logiciel libre. (Nous sommes une <a href=\"http://gnu.org\">GNU</a> projet, "
+"après tout.)"
#: mediagoblin/templates/mediagoblin/root.html:32
msgid ""
"Aiming to make the world a better place through decentralization and "
"(eventually, coming soon!) federation!"
msgstr ""
+"Visant à rendre le monde meilleur grâce à la décentralisation et "
+"(éventuellement, venir bientôt!) fédération!"
#: mediagoblin/templates/mediagoblin/root.html:33
msgid ""
"Built for extensibility. (Multiple media types coming soon to the software,"
" including video support!)"
msgstr ""
+"Construit pour l'extensibilité. (Plusieurs types de médias à venir au "
+"logiciel, y compris le support vidéo!)"
#: mediagoblin/templates/mediagoblin/root.html:34
msgid ""
@@ -216,26 +242,29 @@ msgid ""
"href=\"http://mediagoblin.org/pages/join.html\">You can help us improve this"
" software!</a>)"
msgstr ""
+"Propulsé par des gens comme vous. (<a "
+"href=\"http://mediagoblin.org/pages/join.html\">Vous pouvez nous aider à "
+"améliorer ce logiciel!</a>)"
#: mediagoblin/templates/mediagoblin/auth/login.html:29
msgid "Logging in failed!"
-msgstr ""
+msgstr "Connexion a échoué!"
#: mediagoblin/templates/mediagoblin/auth/login.html:42
msgid "Don't have an account yet?"
-msgstr "Pas encore de compte ?"
+msgstr "Pas encore de compte?"
#: mediagoblin/templates/mediagoblin/auth/login.html:45
msgid "Create one here!"
-msgstr "Créez-en un ici !"
+msgstr "Créez-en un ici!"
#: mediagoblin/templates/mediagoblin/auth/register.html:27
msgid "Create an account!"
-msgstr "Créer un compte !"
+msgstr "Créer un compte!"
#: mediagoblin/templates/mediagoblin/auth/register.html:30
msgid "Create"
-msgstr ""
+msgstr "Créer"
#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
#, python-format
@@ -259,6 +288,7 @@ msgid "Editing %(media_title)s"
msgstr "Modification de %(media_title)s"
#: mediagoblin/templates/mediagoblin/edit/edit.html:36
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
msgid "Cancel"
msgstr "Annuler"
@@ -294,35 +324,46 @@ msgstr "Médias de <a href=\"%(user_url)s\">%(username)s</a>"
msgid "Sorry, no such user found."
msgstr "Impossible de trouver cet utilisateur, désolé."
+#: 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/media_confirm_delete.html:50
+msgid "Delete Permanently"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:22
msgid "Media processing panel"
-msgstr ""
+msgstr "Panneau pour le traitement des médias"
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:25
msgid ""
"You can track the state of media being processed for your gallery here."
msgstr ""
+"Vous pouvez suivre l'état des médias en cours de traitement pour votre "
+"galerie ici."
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:28
msgid "Media in-processing"
-msgstr ""
+msgstr "Médias en transformation"
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:46
msgid "No media in-processing"
-msgstr ""
+msgstr "Aucun média en transformation"
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:50
msgid "These uploads failed to process:"
-msgstr ""
+msgstr "Ces ajouts n'etaient pas processé:"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:39
#: mediagoblin/templates/mediagoblin/user_pages/user.html:59
msgid "Email verification needed"
-msgstr ""
+msgstr "Vérification d'email nécessaire"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:42
msgid "Almost done! Your account still needs to be activated."
-msgstr ""
+msgstr "Presque fini! Votre compte a encore besoin d'être activé."
#: mediagoblin/templates/mediagoblin/user_pages/user.html:47
msgid ""
@@ -344,6 +385,8 @@ msgid ""
"Someone has registered an account with this username, but it still has to be"
" activated."
msgstr ""
+"Quelqu'un a enregistré un compte avec ce nom, mais il doit encore être "
+"activé."
#: mediagoblin/templates/mediagoblin/user_pages/user.html:68
#, python-format
@@ -362,7 +405,7 @@ msgstr "profil de %(username)s"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:85
msgid "Here's a spot to tell others about yourself."
-msgstr ""
+msgstr "Voici un endroit pour parler aux autres de vous-même."
#: mediagoblin/templates/mediagoblin/user_pages/user.html:90
#: mediagoblin/templates/mediagoblin/user_pages/user.html:108
@@ -371,7 +414,7 @@ msgstr "Modifier le profil"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
msgid "This user hasn't filled in their profile (yet)."
-msgstr ""
+msgstr "Cet utilisateur n'a pas rempli leur profil (encore)."
#: mediagoblin/templates/mediagoblin/user_pages/user.html:122
#, python-format
@@ -383,25 +426,45 @@ 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ît, mais vous ne semblez pas avoir quoi que ce "
+"soit encore ajouté."
#: mediagoblin/templates/mediagoblin/user_pages/user.html:141
msgid "Add media"
-msgstr ""
+msgstr "Ajouter des médias"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:147
msgid "There doesn't seem to be any media here yet..."
-msgstr ""
+msgstr "Il ne semble pas être un média encore là ..."
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
msgid "feed icon"
-msgstr ""
+msgstr "icon de flux"
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
msgid "Atom feed"
+msgstr "flux Atom"
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:40
+msgid "Newer"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:46
+msgid "Older"
msgstr ""
#: mediagoblin/user_pages/forms.py:24
msgid "Comment"
msgstr "Commentaire"
+#: mediagoblin/user_pages/forms.py:30
+msgid "I am sure I want to delete this"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:176
+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."
+
diff --git a/mediagoblin/i18n/ja/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/ja/LC_MESSAGES/mediagoblin.mo
index 0e0e240d..176bcb4d 100644
--- a/mediagoblin/i18n/ja/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/ja/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/ja/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/ja/LC_MESSAGES/mediagoblin.po
index 611bae32..7f0c4716 100644
--- a/mediagoblin/i18n/ja/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/ja/LC_MESSAGES/mediagoblin.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://bugs.foocorp.net/projects/mediagoblin/issues\n"
-"POT-Creation-Date: 2011-08-25 07:41-0500\n"
-"PO-Revision-Date: 2011-08-25 12:41+0000\n"
+"POT-Creation-Date: 2011-09-05 23:31-0500\n"
+"PO-Revision-Date: 2011-09-06 04:31+0000\n"
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
@@ -18,11 +18,11 @@ msgstr ""
"Language: ja\n"
"Plural-Forms: nplurals=1; plural=0\n"
-#: mediagoblin/auth/forms.py:24 mediagoblin/auth/forms.py:46
+#: mediagoblin/auth/forms.py:24 mediagoblin/auth/forms.py:48
msgid "Username"
msgstr "ユーザネーム"
-#: mediagoblin/auth/forms.py:29 mediagoblin/auth/forms.py:50
+#: mediagoblin/auth/forms.py:29 mediagoblin/auth/forms.py:52
msgid "Password"
msgstr "パスワード"
@@ -34,7 +34,11 @@ msgstr "パスワードが一致している必要があります。"
msgid "Confirm password"
msgstr "パスワードを確認"
-#: mediagoblin/auth/forms.py:39
+#: mediagoblin/auth/forms.py:38
+msgid "Type it again here to make sure there are no spelling mistakes."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:41
msgid "Email address"
msgstr "メールアドレス"
@@ -42,25 +46,25 @@ msgstr "メールアドレス"
msgid "Sorry, registration is disabled on this instance."
msgstr "申し訳ありませんが、このインスタンスで登録は無効になっています。"
-#: mediagoblin/auth/views.py:57
+#: mediagoblin/auth/views.py:58
msgid "Sorry, a user with that name already exists."
msgstr "申し訳ありませんが、その名前を持つユーザーがすでに存在しています。"
-#: mediagoblin/auth/views.py:61
+#: mediagoblin/auth/views.py:62
msgid "Sorry, that email address has already been taken."
msgstr ""
-#: mediagoblin/auth/views.py:159
+#: mediagoblin/auth/views.py:160
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
msgstr "メアドが確認されています。これで、ログインしてプロファイルを編集し、画像を提出することができます!"
-#: mediagoblin/auth/views.py:165
+#: mediagoblin/auth/views.py:166
msgid "The verification key or user id is incorrect"
msgstr "検証キーまたはユーザーIDが間違っています"
-#: mediagoblin/auth/views.py:186
+#: mediagoblin/auth/views.py:187
#: mediagoblin/templates/mediagoblin/auth/resent_verification_email.html:22
msgid "Resent your verification email."
msgstr "検証メールを再送しました。"
@@ -69,35 +73,40 @@ msgstr "検証メールを再送しました。"
msgid "Title"
msgstr "タイトル"
-#: mediagoblin/edit/forms.py:29
+#: mediagoblin/edit/forms.py:30 mediagoblin/submit/forms.py:32
+msgid "Tags"
+msgstr "タグ"
+
+#: mediagoblin/edit/forms.py:33
msgid "Slug"
msgstr "スラグ"
-#: mediagoblin/edit/forms.py:30
+#: mediagoblin/edit/forms.py:34
msgid "The slug can't be empty"
msgstr "スラグは必要です。"
-#: mediagoblin/edit/forms.py:33 mediagoblin/submit/forms.py:31
-msgid "Tags"
-msgstr "タグ"
+#: mediagoblin/edit/forms.py:35
+msgid ""
+"The title part of this media's URL. You usually don't need to change this."
+msgstr ""
-#: mediagoblin/edit/forms.py:38
+#: mediagoblin/edit/forms.py:42
msgid "Bio"
msgstr "自己紹介"
-#: mediagoblin/edit/forms.py:41
+#: mediagoblin/edit/forms.py:45
msgid "Website"
msgstr "URL"
-#: mediagoblin/edit/views.py:65
+#: mediagoblin/edit/views.py:63
msgid "An entry with that slug already exists for this user."
msgstr "そのスラグを持つエントリは、このユーザーは既に存在します。"
-#: mediagoblin/edit/views.py:94
+#: mediagoblin/edit/views.py:84
msgid "You are editing another user's media. Proceed with caution."
msgstr "あなたは、他のユーザーのメディアを編集しています。ご注意ください。"
-#: mediagoblin/edit/views.py:165
+#: mediagoblin/edit/views.py:155
msgid "You are editing a user's profile. Proceed with caution."
msgstr "あなたは、他のユーザーのプロファイルを編集しています。ご注意ください。"
@@ -109,6 +118,10 @@ msgstr ""
msgid "File"
msgstr "ファイル"
+#: mediagoblin/submit/forms.py:30
+msgid "Description of this work"
+msgstr ""
+
#: mediagoblin/submit/views.py:47
msgid "You must provide a file."
msgstr "ファイルを提供する必要があります。"
@@ -164,10 +177,8 @@ msgstr "ログイン"
#: mediagoblin/templates/mediagoblin/base.html:89
msgid ""
"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
-"href=\"http://gnu.org/\">GNU project</a>"
+"href=\"http://gnu.org/\">GNU</a> project"
msgstr ""
-"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
-"href=\"http://gnu.org/\">GNU project</a>"
#: mediagoblin/templates/mediagoblin/root.html:27
msgid "Hi there, media lover! MediaGoblin is..."
@@ -250,6 +261,7 @@ msgid "Editing %(media_title)s"
msgstr "%(media_title)sを編集中"
#: mediagoblin/templates/mediagoblin/edit/edit.html:36
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
msgid "Cancel"
msgstr "キャンセル"
@@ -285,6 +297,15 @@ msgstr "<a href=\"%(user_url)s\">%(username)s</a>さんのコンテンツ"
msgid "Sorry, no such user found."
msgstr "申し訳ありませんが、そのユーザーは見つかりませんでした。"
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
+#, python-format
+msgid "Really delete %(title)s?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:50
+msgid "Delete Permanently"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:22
msgid "Media processing panel"
msgstr ""
@@ -386,8 +407,24 @@ msgstr ""
msgid "Atom feed"
msgstr ""
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:40
+msgid "Newer"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:46
+msgid "Older"
+msgstr ""
+
#: mediagoblin/user_pages/forms.py:24
msgid "Comment"
msgstr ""
+#: mediagoblin/user_pages/forms.py:30
+msgid "I am sure I want to delete this"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:176
+msgid "You are about to delete another user's media. Proceed with caution."
+msgstr ""
+
diff --git a/mediagoblin/i18n/nl/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/nl/LC_MESSAGES/mediagoblin.mo
index 931d51b9..e91b7235 100644
--- a/mediagoblin/i18n/nl/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/nl/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/nl/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/nl/LC_MESSAGES/mediagoblin.po
index 1a8fb631..b8feb0d7 100644
--- a/mediagoblin/i18n/nl/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/nl/LC_MESSAGES/mediagoblin.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://bugs.foocorp.net/projects/mediagoblin/issues\n"
-"POT-Creation-Date: 2011-08-25 07:41-0500\n"
-"PO-Revision-Date: 2011-08-25 12:41+0000\n"
+"POT-Creation-Date: 2011-09-05 23:31-0500\n"
+"PO-Revision-Date: 2011-09-06 04:31+0000\n"
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
@@ -18,11 +18,11 @@ msgstr ""
"Language: nl\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
-#: mediagoblin/auth/forms.py:24 mediagoblin/auth/forms.py:46
+#: mediagoblin/auth/forms.py:24 mediagoblin/auth/forms.py:48
msgid "Username"
msgstr "Gebruikersnaam"
-#: mediagoblin/auth/forms.py:29 mediagoblin/auth/forms.py:50
+#: mediagoblin/auth/forms.py:29 mediagoblin/auth/forms.py:52
msgid "Password"
msgstr "Wachtwoord"
@@ -34,7 +34,11 @@ msgstr "Wachtwoorden moeten overeenkomen."
msgid "Confirm password"
msgstr "Bevestig wachtwoord"
-#: mediagoblin/auth/forms.py:39
+#: mediagoblin/auth/forms.py:38
+msgid "Type it again here to make sure there are no spelling mistakes."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:41
msgid "Email address"
msgstr "E-mail adres"
@@ -42,15 +46,15 @@ msgstr "E-mail adres"
msgid "Sorry, registration is disabled on this instance."
msgstr "Sorry, registratie is uitgeschakeld op deze instantie."
-#: mediagoblin/auth/views.py:57
+#: mediagoblin/auth/views.py:58
msgid "Sorry, a user with that name already exists."
msgstr "Sorry, er bestaat al een gebruiker met die naam."
-#: mediagoblin/auth/views.py:61
+#: mediagoblin/auth/views.py:62
msgid "Sorry, that email address has already been taken."
msgstr "Sorry, dat e-mailadres is al ingenomen."
-#: mediagoblin/auth/views.py:159
+#: mediagoblin/auth/views.py:160
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
@@ -58,11 +62,11 @@ msgstr ""
"Uw e-mailadres is geverifieerd. U kunt nu inloggen, uw profiel bewerken, en "
"afbeeldingen toevoegen!"
-#: mediagoblin/auth/views.py:165
+#: mediagoblin/auth/views.py:166
msgid "The verification key or user id is incorrect"
msgstr "De verificatie sleutel of gebruikers-ID is onjuist"
-#: mediagoblin/auth/views.py:186
+#: mediagoblin/auth/views.py:187
#: mediagoblin/templates/mediagoblin/auth/resent_verification_email.html:22
msgid "Resent your verification email."
msgstr "Verificatie e-mail opnieuw opgestuurd."
@@ -71,37 +75,42 @@ msgstr "Verificatie e-mail opnieuw opgestuurd."
msgid "Title"
msgstr "Titel"
-#: mediagoblin/edit/forms.py:29
+#: mediagoblin/edit/forms.py:30 mediagoblin/submit/forms.py:32
+msgid "Tags"
+msgstr "Etiket"
+
+#: mediagoblin/edit/forms.py:33
msgid "Slug"
msgstr ""
-#: mediagoblin/edit/forms.py:30
+#: mediagoblin/edit/forms.py:34
msgid "The slug can't be empty"
msgstr ""
-#: mediagoblin/edit/forms.py:33 mediagoblin/submit/forms.py:31
-msgid "Tags"
-msgstr "Etiket"
+#: mediagoblin/edit/forms.py:35
+msgid ""
+"The title part of this media's URL. You usually don't need to change this."
+msgstr ""
-#: mediagoblin/edit/forms.py:38
+#: mediagoblin/edit/forms.py:42
msgid "Bio"
msgstr "Bio"
-#: mediagoblin/edit/forms.py:41
+#: mediagoblin/edit/forms.py:45
msgid "Website"
msgstr "Website"
-#: mediagoblin/edit/views.py:65
+#: mediagoblin/edit/views.py:63
msgid "An entry with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:94
+#: mediagoblin/edit/views.py:84
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:165
+#: mediagoblin/edit/views.py:155
msgid "You are editing a user's profile. Proceed with caution."
msgstr ""
"U bent een gebruikersprofiel aan het aanpassen. Ga voorzichtig te werk."
@@ -114,6 +123,10 @@ msgstr ""
msgid "File"
msgstr "Bestand"
+#: mediagoblin/submit/forms.py:30
+msgid "Description of this work"
+msgstr ""
+
#: mediagoblin/submit/views.py:47
msgid "You must provide a file."
msgstr "U moet een bestand aangeven."
@@ -169,10 +182,8 @@ msgstr "Inloggen"
#: mediagoblin/templates/mediagoblin/base.html:89
msgid ""
"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
-"href=\"http://gnu.org/\">GNU project</a>"
+"href=\"http://gnu.org/\">GNU</a> project"
msgstr ""
-"Aangedreven door <a href=\"http://mediagoblin.org\">MediaGoblin</a> , een <a"
-" href=\"http://gnu.org/\">GNU-project</a>"
#: mediagoblin/templates/mediagoblin/root.html:27
msgid "Hi there, media lover! MediaGoblin is..."
@@ -252,6 +263,7 @@ msgid "Editing %(media_title)s"
msgstr "%(media_title)s aanpassen"
#: mediagoblin/templates/mediagoblin/edit/edit.html:36
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
msgid "Cancel"
msgstr "Annuleren"
@@ -287,6 +299,15 @@ msgstr "Media van <a href=\"%(user_url)s\"> %(username)s </a>"
msgid "Sorry, no such user found."
msgstr "Sorry, die gebruiker kon niet worden gevonden."
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
+#, python-format
+msgid "Really delete %(title)s?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:50
+msgid "Delete Permanently"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:22
msgid "Media processing panel"
msgstr ""
@@ -392,8 +413,24 @@ msgstr ""
msgid "Atom feed"
msgstr ""
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:40
+msgid "Newer"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:46
+msgid "Older"
+msgstr ""
+
#: mediagoblin/user_pages/forms.py:24
msgid "Comment"
msgstr "Commentaar"
+#: mediagoblin/user_pages/forms.py:30
+msgid "I am sure I want to delete this"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:176
+msgid "You are about to delete another user's media. 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 8bdb4a92..1837c8da 100644
--- a/mediagoblin/i18n/nn_NO/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/nn_NO/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/nn_NO/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/nn_NO/LC_MESSAGES/mediagoblin.po
index f4c97b12..5bbe2180 100644
--- a/mediagoblin/i18n/nn_NO/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/nn_NO/LC_MESSAGES/mediagoblin.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://bugs.foocorp.net/projects/mediagoblin/issues\n"
-"POT-Creation-Date: 2011-08-25 07:41-0500\n"
-"PO-Revision-Date: 2011-08-25 12:41+0000\n"
+"POT-Creation-Date: 2011-09-05 23:31-0500\n"
+"PO-Revision-Date: 2011-09-06 04:31+0000\n"
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
@@ -18,11 +18,11 @@ msgstr ""
"Language: nn_NO\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
-#: mediagoblin/auth/forms.py:24 mediagoblin/auth/forms.py:46
+#: mediagoblin/auth/forms.py:24 mediagoblin/auth/forms.py:48
msgid "Username"
msgstr "Brukarnamn"
-#: mediagoblin/auth/forms.py:29 mediagoblin/auth/forms.py:50
+#: mediagoblin/auth/forms.py:29 mediagoblin/auth/forms.py:52
msgid "Password"
msgstr "Passord"
@@ -34,7 +34,11 @@ msgstr "Passorda må vera like."
msgid "Confirm password"
msgstr "Gjenta passord"
-#: mediagoblin/auth/forms.py:39
+#: mediagoblin/auth/forms.py:38
+msgid "Type it again here to make sure there are no spelling mistakes."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:41
msgid "Email address"
msgstr "E-postadresse"
@@ -42,15 +46,15 @@ msgstr "E-postadresse"
msgid "Sorry, registration is disabled on this instance."
msgstr "Registrering er slege av. Orsak."
-#: mediagoblin/auth/views.py:57
+#: mediagoblin/auth/views.py:58
msgid "Sorry, a user with that name already exists."
msgstr "Ein konto med dette brukarnamnet finst allereide."
-#: mediagoblin/auth/views.py:61
+#: mediagoblin/auth/views.py:62
msgid "Sorry, that email address has already been taken."
-msgstr ""
+msgstr "Den epostadressa er allereide teken."
-#: mediagoblin/auth/views.py:159
+#: mediagoblin/auth/views.py:160
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
@@ -58,11 +62,11 @@ msgstr ""
"E-postadressa di, og dimed kontoen din er stadfesta. Du kan no logga inn, "
"endra profilen din og lasta opp filer."
-#: mediagoblin/auth/views.py:165
+#: mediagoblin/auth/views.py:166
msgid "The verification key or user id is incorrect"
msgstr "Stadfestingsnykelen eller brukar-ID-en din er feil."
-#: mediagoblin/auth/views.py:186
+#: mediagoblin/auth/views.py:187
#: mediagoblin/templates/mediagoblin/auth/resent_verification_email.html:22
msgid "Resent your verification email."
msgstr "Send ein ny stadfestingsepost."
@@ -71,46 +75,55 @@ msgstr "Send ein ny stadfestingsepost."
msgid "Title"
msgstr "Tittel"
-#: mediagoblin/edit/forms.py:29
+#: mediagoblin/edit/forms.py:30 mediagoblin/submit/forms.py:32
+msgid "Tags"
+msgstr "Merkelappar"
+
+#: mediagoblin/edit/forms.py:33
msgid "Slug"
msgstr "Adressetittel"
-#: mediagoblin/edit/forms.py:30
+#: mediagoblin/edit/forms.py:34
msgid "The slug can't be empty"
msgstr "Adressetittelen kan ikkje vera tom"
-#: mediagoblin/edit/forms.py:33 mediagoblin/submit/forms.py:31
-msgid "Tags"
-msgstr "Merkelappar"
+#: mediagoblin/edit/forms.py:35
+msgid ""
+"The title part of this media's URL. You usually don't need to change this."
+msgstr ""
-#: mediagoblin/edit/forms.py:38
+#: mediagoblin/edit/forms.py:42
msgid "Bio"
msgstr "Presentasjon"
-#: mediagoblin/edit/forms.py:41
+#: mediagoblin/edit/forms.py:45
msgid "Website"
msgstr "Heimeside"
-#: mediagoblin/edit/views.py:65
+#: mediagoblin/edit/views.py:63
msgid "An entry with that slug already exists for this user."
msgstr "Eit innlegg med denne adressetittelen finst allereie."
-#: mediagoblin/edit/views.py:94
+#: mediagoblin/edit/views.py:84
msgid "You are editing another user's media. Proceed with caution."
msgstr "Ver forsiktig, du redigerer ein annan konto sitt innlegg."
-#: mediagoblin/edit/views.py:165
+#: mediagoblin/edit/views.py:155
msgid "You are editing a user's profile. Proceed with caution."
msgstr "Ver forsiktig, du redigerer ein annan konto sin profil."
#: mediagoblin/process_media/errors.py:44
msgid "Invalid file given for media type."
-msgstr ""
+msgstr "Ugyldig fil for mediatypen."
#: mediagoblin/submit/forms.py:25
msgid "File"
msgstr "Fil"
+#: mediagoblin/submit/forms.py:30
+msgid "Description of this work"
+msgstr ""
+
#: mediagoblin/submit/views.py:47
msgid "You must provide a file."
msgstr "Du må velja ei fil."
@@ -125,21 +138,22 @@ msgstr "Johoo! Opplasta!"
#: mediagoblin/templates/mediagoblin/404.html:21
msgid "Oops!"
-msgstr ""
+msgstr "Oops."
#: mediagoblin/templates/mediagoblin/404.html:24
msgid "There doesn't seem to be a page at this address. Sorry!"
-msgstr ""
+msgstr "Det ser ikkje ut til å vera noko her..."
#: mediagoblin/templates/mediagoblin/404.html:26
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, så er ho truleg flytta eller sletta."
#: mediagoblin/templates/mediagoblin/404.html:32
msgid "Image of 404 goblin stressing out"
-msgstr ""
+msgstr "Bilete av stressa 404-troll."
#: mediagoblin/templates/mediagoblin/base.html:22
msgid "GNU MediaGoblin"
@@ -147,7 +161,7 @@ msgstr "GNU MediaGoblin"
#: mediagoblin/templates/mediagoblin/base.html:47
msgid "MediaGoblin logo"
-msgstr ""
+msgstr "MediaGoblin"
#: mediagoblin/templates/mediagoblin/base.html:52
msgid "Submit media"
@@ -166,42 +180,44 @@ msgstr "Logg inn"
#: mediagoblin/templates/mediagoblin/base.html:89
msgid ""
"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
-"href=\"http://gnu.org/\">GNU project</a>"
+"href=\"http://gnu.org/\">GNU</a> project"
msgstr ""
-"Driven av <a href=\"http://mediagoblin.org\">MediaGoblin</a>, eit <a "
-"href=\"http://gnu.org/\">GNU-prosjekt</a>"
#: mediagoblin/templates/mediagoblin/root.html:27
msgid "Hi there, media lover! MediaGoblin is..."
-msgstr ""
+msgstr "Hei der mediaentusiast, MediaGoblin..."
#: mediagoblin/templates/mediagoblin/root.html:29
msgid "The perfect place for your media!"
-msgstr ""
+msgstr "Er ein perfekt plass for mediet ditt!"
#: mediagoblin/templates/mediagoblin/root.html:30
msgid ""
"A place for people to collaborate and show off original and derived "
"creations!"
msgstr ""
+"Er ein plass for folk å samarbeida og visa fram sjølvlaga og vidarebygde "
+"verk."
#: mediagoblin/templates/mediagoblin/root.html:31
msgid ""
"Free, as in freedom. (We’re a <a href=\"http://gnu.org\">GNU</a> project, "
"after all.)"
-msgstr ""
+msgstr "Fri som i fridom (me er eit <a href=\"http://gnu.org\">GNU</a>-prosjekt)."
#: mediagoblin/templates/mediagoblin/root.html:32
msgid ""
"Aiming to make the world a better place through decentralization and "
"(eventually, coming soon!) federation!"
msgstr ""
+"Arbeidar for å gjera verda ein betre stad gjennom desentralisering (til "
+"slutt, kjem snart!) federering."
#: mediagoblin/templates/mediagoblin/root.html:33
msgid ""
"Built for extensibility. (Multiple media types coming soon to the software,"
" including video support!)"
-msgstr ""
+msgstr "Bygd for utviding (fleire medietypar kjem snart, m.a. video)."
#: mediagoblin/templates/mediagoblin/root.html:34
msgid ""
@@ -209,10 +225,13 @@ msgid ""
"href=\"http://mediagoblin.org/pages/join.html\">You can help us improve this"
" software!</a>)"
msgstr ""
+"Driven av folk som deg. (<a "
+"href=\"http://mediagoblin.org/pages/join.html\">Du kan hjelpa med å forbetra"
+" MediaGoblin</a>)"
#: mediagoblin/templates/mediagoblin/auth/login.html:29
msgid "Logging in failed!"
-msgstr ""
+msgstr "Innlogging feila"
#: mediagoblin/templates/mediagoblin/auth/login.html:42
msgid "Don't have an account yet?"
@@ -228,7 +247,7 @@ msgstr "Lag ein konto."
#: mediagoblin/templates/mediagoblin/auth/register.html:30
msgid "Create"
-msgstr ""
+msgstr "Opprett"
#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
#, python-format
@@ -252,6 +271,7 @@ msgid "Editing %(media_title)s"
msgstr "Redigerer %(media_title)s"
#: mediagoblin/templates/mediagoblin/edit/edit.html:36
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
msgid "Cancel"
msgstr "Avbryt"
@@ -287,35 +307,44 @@ msgstr "<a href=\"%(user_url)s\">%(username)s</a> sin mediafiler"
msgid "Sorry, no such user found."
msgstr "Fann ingen slik brukar"
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
+#, python-format
+msgid "Really delete %(title)s?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:50
+msgid "Delete Permanently"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:22
msgid "Media processing panel"
-msgstr ""
+msgstr "Mediehandsamingspanel"
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:25
msgid ""
"You can track the state of media being processed for your gallery here."
-msgstr ""
+msgstr "Sjå status for mediehandsaming av biletene dine her."
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:28
msgid "Media in-processing"
-msgstr ""
+msgstr "Media under handsaming"
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:46
msgid "No media in-processing"
-msgstr ""
+msgstr "Ingen media under handsaming"
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:50
msgid "These uploads failed to process:"
-msgstr ""
+msgstr "Klarte ikkje handsame desse opplasta filene:"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:39
#: mediagoblin/templates/mediagoblin/user_pages/user.html:59
msgid "Email verification needed"
-msgstr ""
+msgstr "Epostverifisering trengst."
#: mediagoblin/templates/mediagoblin/user_pages/user.html:42
msgid "Almost done! Your account still needs to be activated."
-msgstr ""
+msgstr "Nesten ferdig. Du treng berre aktivera kontoen."
#: mediagoblin/templates/mediagoblin/user_pages/user.html:47
msgid ""
@@ -334,7 +363,7 @@ msgstr "Send ein ny epost"
msgid ""
"Someone has registered an account with this username, but it still has to be"
" activated."
-msgstr ""
+msgstr "Dette brukarnamnet finst allereie, men det er ikkje aktivert."
#: mediagoblin/templates/mediagoblin/user_pages/user.html:68
#, python-format
@@ -352,7 +381,7 @@ msgstr "%(username)s sin profil"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:85
msgid "Here's a spot to tell others about yourself."
-msgstr ""
+msgstr "Her kan du fortelja om deg sjølv."
#: mediagoblin/templates/mediagoblin/user_pages/user.html:90
#: mediagoblin/templates/mediagoblin/user_pages/user.html:108
@@ -361,7 +390,7 @@ msgstr "Endra profil"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
msgid "This user hasn't filled in their profile (yet)."
-msgstr ""
+msgstr "Brukaren har ikkje fylt ut profilen sin (enno)."
#: mediagoblin/templates/mediagoblin/user_pages/user.html:122
#, python-format
@@ -372,26 +401,42 @@ msgstr "Sjå all media frå %(username)s"
msgid ""
"This is where your media will appear, but you don't seem to have added "
"anything yet."
-msgstr ""
+msgstr "Her kjem mediet ditt. Ser ikkje ut til at du har lagt til noko."
#: mediagoblin/templates/mediagoblin/user_pages/user.html:141
msgid "Add media"
-msgstr ""
+msgstr "Legg til media"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:147
msgid "There doesn't seem to be any media here yet..."
-msgstr ""
+msgstr "Ser ikkje ut til at det finst noko media her nett no."
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
msgid "feed icon"
-msgstr ""
+msgstr " "
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
msgid "Atom feed"
+msgstr "Atom-kjelde"
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:40
+msgid "Newer"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:46
+msgid "Older"
msgstr ""
#: mediagoblin/user_pages/forms.py:24
msgid "Comment"
+msgstr "Innspel"
+
+#: mediagoblin/user_pages/forms.py:30
+msgid "I am sure I want to delete this"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:176
+msgid "You are about to delete another user's media. Proceed with caution."
msgstr ""
diff --git a/mediagoblin/i18n/pt_BR/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/pt_BR/LC_MESSAGES/mediagoblin.mo
index b2e1161e..6c08c67a 100644
--- a/mediagoblin/i18n/pt_BR/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/pt_BR/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/pt_BR/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/pt_BR/LC_MESSAGES/mediagoblin.po
index 438af907..190cab68 100644
--- a/mediagoblin/i18n/pt_BR/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/pt_BR/LC_MESSAGES/mediagoblin.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://bugs.foocorp.net/projects/mediagoblin/issues\n"
-"POT-Creation-Date: 2011-08-25 07:41-0500\n"
-"PO-Revision-Date: 2011-08-25 12:41+0000\n"
+"POT-Creation-Date: 2011-09-05 23:31-0500\n"
+"PO-Revision-Date: 2011-09-06 04:31+0000\n"
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
"Language-Team: Portuguese (Brazilian) (http://www.transifex.net/projects/p/mediagoblin/team/pt_BR/)\n"
"MIME-Version: 1.0\n"
@@ -18,11 +18,11 @@ msgstr ""
"Language: pt_BR\n"
"Plural-Forms: nplurals=2; plural=(n > 1)\n"
-#: mediagoblin/auth/forms.py:24 mediagoblin/auth/forms.py:46
+#: mediagoblin/auth/forms.py:24 mediagoblin/auth/forms.py:48
msgid "Username"
msgstr "Nome de Usuário"
-#: mediagoblin/auth/forms.py:29 mediagoblin/auth/forms.py:50
+#: mediagoblin/auth/forms.py:29 mediagoblin/auth/forms.py:52
msgid "Password"
msgstr "Senha"
@@ -34,7 +34,11 @@ msgstr "Senhas devem ser iguais."
msgid "Confirm password"
msgstr "Confirmar senha"
-#: mediagoblin/auth/forms.py:39
+#: mediagoblin/auth/forms.py:38
+msgid "Type it again here to make sure there are no spelling mistakes."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:41
msgid "Email address"
msgstr "Endereço de email"
@@ -42,15 +46,15 @@ msgstr "Endereço de email"
msgid "Sorry, registration is disabled on this instance."
msgstr "Desculpa, o registro está desativado neste momento."
-#: mediagoblin/auth/views.py:57
+#: mediagoblin/auth/views.py:58
msgid "Sorry, a user with that name already exists."
msgstr "Desculpe, um usuário com este nome já existe."
-#: mediagoblin/auth/views.py:61
+#: mediagoblin/auth/views.py:62
msgid "Sorry, that email address has already been taken."
msgstr ""
-#: mediagoblin/auth/views.py:159
+#: mediagoblin/auth/views.py:160
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
@@ -58,11 +62,11 @@ 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:165
+#: mediagoblin/auth/views.py:166
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:186
+#: mediagoblin/auth/views.py:187
#: mediagoblin/templates/mediagoblin/auth/resent_verification_email.html:22
msgid "Resent your verification email."
msgstr "O email de verificação foi reenviado."
@@ -71,35 +75,40 @@ msgstr "O email de verificação foi reenviado."
msgid "Title"
msgstr "Título"
-#: mediagoblin/edit/forms.py:29
+#: mediagoblin/edit/forms.py:30 mediagoblin/submit/forms.py:32
+msgid "Tags"
+msgstr "Tags"
+
+#: mediagoblin/edit/forms.py:33
msgid "Slug"
msgstr ""
-#: mediagoblin/edit/forms.py:30
+#: mediagoblin/edit/forms.py:34
msgid "The slug can't be empty"
msgstr ""
-#: mediagoblin/edit/forms.py:33 mediagoblin/submit/forms.py:31
-msgid "Tags"
-msgstr "Tags"
+#: mediagoblin/edit/forms.py:35
+msgid ""
+"The title part of this media's URL. You usually don't need to change this."
+msgstr ""
-#: mediagoblin/edit/forms.py:38
+#: mediagoblin/edit/forms.py:42
msgid "Bio"
msgstr "Biográfia"
-#: mediagoblin/edit/forms.py:41
+#: mediagoblin/edit/forms.py:45
msgid "Website"
msgstr "Website"
-#: mediagoblin/edit/views.py:65
+#: mediagoblin/edit/views.py:63
msgid "An entry with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:94
+#: mediagoblin/edit/views.py:84
msgid "You are editing another user's media. Proceed with caution."
msgstr ""
-#: mediagoblin/edit/views.py:165
+#: mediagoblin/edit/views.py:155
msgid "You are editing a user's profile. Proceed with caution."
msgstr ""
@@ -111,6 +120,10 @@ msgstr ""
msgid "File"
msgstr "Arquivo"
+#: mediagoblin/submit/forms.py:30
+msgid "Description of this work"
+msgstr ""
+
#: mediagoblin/submit/views.py:47
msgid "You must provide a file."
msgstr "Você deve fornecer um arquivo."
@@ -166,10 +179,8 @@ msgstr "Entrar"
#: mediagoblin/templates/mediagoblin/base.html:89
msgid ""
"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
-"href=\"http://gnu.org/\">GNU project</a>"
+"href=\"http://gnu.org/\">GNU</a> project"
msgstr ""
-"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
-"href=\"http://gnu.org/\">GNU project</a>"
#: mediagoblin/templates/mediagoblin/root.html:27
msgid "Hi there, media lover! MediaGoblin is..."
@@ -252,6 +263,7 @@ msgid "Editing %(media_title)s"
msgstr "Editando %(media_title)s"
#: mediagoblin/templates/mediagoblin/edit/edit.html:36
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
msgid "Cancel"
msgstr "Cancelar"
@@ -287,6 +299,15 @@ msgstr ""
msgid "Sorry, no such user found."
msgstr "Desculpe, tal usuário não encontrado."
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
+#, python-format
+msgid "Really delete %(title)s?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:50
+msgid "Delete Permanently"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:22
msgid "Media processing panel"
msgstr ""
@@ -390,8 +411,24 @@ msgstr ""
msgid "Atom feed"
msgstr ""
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:40
+msgid "Newer"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:46
+msgid "Older"
+msgstr ""
+
#: mediagoblin/user_pages/forms.py:24
msgid "Comment"
msgstr ""
+#: mediagoblin/user_pages/forms.py:30
+msgid "I am sure I want to delete this"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:176
+msgid "You are about to delete another user's media. Proceed with caution."
+msgstr ""
+
diff --git a/mediagoblin/i18n/ro/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/ro/LC_MESSAGES/mediagoblin.mo
index a3f48cd7..1fe03578 100644
--- a/mediagoblin/i18n/ro/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/ro/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/ro/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/ro/LC_MESSAGES/mediagoblin.po
index 4ae3290c..38696aa4 100644
--- a/mediagoblin/i18n/ro/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/ro/LC_MESSAGES/mediagoblin.po
@@ -7,9 +7,9 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://bugs.foocorp.net/projects/mediagoblin/issues\n"
-"POT-Creation-Date: 2011-08-25 07:41-0500\n"
-"PO-Revision-Date: 2011-08-25 17:38+0000\n"
-"Last-Translator: gap <gapop@hotmail.com>\n"
+"POT-Creation-Date: 2011-09-05 23:31-0500\n"
+"PO-Revision-Date: 2011-09-06 04:31+0000\n"
+"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -18,11 +18,11 @@ 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:24 mediagoblin/auth/forms.py:46
+#: mediagoblin/auth/forms.py:24 mediagoblin/auth/forms.py:48
msgid "Username"
msgstr "Nume de utilizator"
-#: mediagoblin/auth/forms.py:29 mediagoblin/auth/forms.py:50
+#: mediagoblin/auth/forms.py:29 mediagoblin/auth/forms.py:52
msgid "Password"
msgstr "Parolă"
@@ -32,9 +32,13 @@ msgstr "Parolele trebuie să fie identice."
#: mediagoblin/auth/forms.py:36
msgid "Confirm password"
-msgstr "Reintroduceți parola"
+msgstr "Reintrodu parola"
-#: mediagoblin/auth/forms.py:39
+#: mediagoblin/auth/forms.py:38
+msgid "Type it again here to make sure there are no spelling mistakes."
+msgstr "Introdu parola din nou pentru verificare."
+
+#: mediagoblin/auth/forms.py:41
msgid "Email address"
msgstr "Adresa de e-mail"
@@ -42,27 +46,27 @@ msgstr "Adresa de e-mail"
msgid "Sorry, registration is disabled on this instance."
msgstr "Ne pare rău, dar înscrierile sunt dezactivate pe această instanță."
-#: mediagoblin/auth/views.py:57
+#: mediagoblin/auth/views.py:58
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:61
+#: mediagoblin/auth/views.py:62
msgid "Sorry, that email address has already been taken."
msgstr "Ne pare rău, această adresă de e-mail este deja rezervată."
-#: mediagoblin/auth/views.py:159
+#: mediagoblin/auth/views.py:160
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
msgstr ""
-"Adresa dvs. de e-mail a fost confirmată. Puteți să vă autentificați, să vă "
-"modificați profilul și să trimiteți imagini!"
+"Adresa ta de e-mail a fost confirmată. Poți să te autentifici, să îți "
+"completezi profilul și să trimiți imagini!"
-#: mediagoblin/auth/views.py:165
+#: mediagoblin/auth/views.py:166
msgid "The verification key or user id is incorrect"
msgstr "Cheie de verificare sau user ID incorect."
-#: mediagoblin/auth/views.py:186
+#: mediagoblin/auth/views.py:187
#: mediagoblin/templates/mediagoblin/auth/resent_verification_email.html:22
msgid "Resent your verification email."
msgstr "E-mail-ul de verificare a fost retrimis."
@@ -71,38 +75,43 @@ msgstr "E-mail-ul de verificare a fost retrimis."
msgid "Title"
msgstr "Titlu"
-#: mediagoblin/edit/forms.py:29
+#: mediagoblin/edit/forms.py:30 mediagoblin/submit/forms.py:32
+msgid "Tags"
+msgstr "Etichete"
+
+#: mediagoblin/edit/forms.py:33
msgid "Slug"
msgstr "Identificator"
-#: mediagoblin/edit/forms.py:30
+#: mediagoblin/edit/forms.py:34
msgid "The slug can't be empty"
msgstr "Identificatorul nu poate să lipsească"
-#: mediagoblin/edit/forms.py:33 mediagoblin/submit/forms.py:31
-msgid "Tags"
-msgstr "Etichete"
+#: mediagoblin/edit/forms.py:35
+msgid ""
+"The title part of this media's URL. You usually don't need to change this."
+msgstr ""
-#: mediagoblin/edit/forms.py:38
+#: mediagoblin/edit/forms.py:42
msgid "Bio"
msgstr "Biografie"
-#: mediagoblin/edit/forms.py:41
+#: mediagoblin/edit/forms.py:45
msgid "Website"
msgstr "Sit Web"
-#: mediagoblin/edit/views.py:65
+#: mediagoblin/edit/views.py:63
msgid "An entry with that slug already exists for this user."
msgstr ""
"Există deja un entry cu același identificator pentru acest utilizator."
-#: mediagoblin/edit/views.py:94
+#: mediagoblin/edit/views.py:84
msgid "You are editing another user's media. Proceed with caution."
-msgstr "Editați fișierul unui alt utilizator. Se recomandă prudență."
+msgstr "Editezi fișierul unui alt utilizator. Se recomandă prudență."
-#: mediagoblin/edit/views.py:165
+#: mediagoblin/edit/views.py:155
msgid "You are editing a user's profile. Proceed with caution."
-msgstr "Editați profilul unui utilizator. Se recomandă prudență."
+msgstr "Editezi profilul unui utilizator. Se recomandă prudență."
#: mediagoblin/process_media/errors.py:44
msgid "Invalid file given for media type."
@@ -112,9 +121,13 @@ msgstr "Formatul fișierului nu corespunde cu tipul de media selectat."
msgid "File"
msgstr "Fișier"
+#: mediagoblin/submit/forms.py:30
+msgid "Description of this work"
+msgstr ""
+
#: mediagoblin/submit/views.py:47
msgid "You must provide a file."
-msgstr "Trebuie să selectați un fișier."
+msgstr "Trebuie să selectezi un fișier."
#: mediagoblin/submit/views.py:50
msgid "The file doesn't seem to be an image!"
@@ -137,8 +150,8 @@ msgid ""
"If you're sure the address is correct, maybe the page you're looking for has"
" been moved or deleted."
msgstr ""
-"Dacă sunteți sigur că adresa este coresctă, poate că pagina pe care o "
-"căutați a fost mutată sau ștearsă."
+"Dacă ești sigur că adresa este corectă, poate că pagina pe care o cauți a "
+"fost mutată sau ștearsă."
#: mediagoblin/templates/mediagoblin/404.html:32
msgid "Image of 404 goblin stressing out"
@@ -154,11 +167,11 @@ msgstr "logo MediaGoblin"
#: mediagoblin/templates/mediagoblin/base.html:52
msgid "Submit media"
-msgstr "Transmiteți un fișier media"
+msgstr "Transmite un fișier media"
#: mediagoblin/templates/mediagoblin/base.html:63
msgid "verify your email!"
-msgstr "verificați e-mail-ul!"
+msgstr "verifică e-mail-ul!"
#: mediagoblin/templates/mediagoblin/base.html:73
#: mediagoblin/templates/mediagoblin/auth/login.html:26
@@ -169,10 +182,10 @@ msgstr "Autentificare"
#: mediagoblin/templates/mediagoblin/base.html:89
msgid ""
"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
-"href=\"http://gnu.org/\">GNU project</a>"
+"href=\"http://gnu.org/\">GNU</a> project"
msgstr ""
-"Construit cu <a href=\"http://mediagoblin.org\">MediaGoblin</a>, un <a "
-"href=\"http://gnu.org/\">proiect GNU</a>"
+"Construit cu <a href=\"http://mediagoblin.org\">MediaGoblin</a>, un proiect "
+"<a href=\"http://gnu.org/\">GNU</a>"
#: mediagoblin/templates/mediagoblin/root.html:27
msgid "Hi there, media lover! MediaGoblin is..."
@@ -211,7 +224,7 @@ msgid ""
" including video support!)"
msgstr ""
"Proiectat să fie extensibil. (Software-ul va avea în curând suport pentru "
-"multiple formate de media, inclusiv pentru video!)"
+"mai multe formate de media, inclusiv pentru video!)"
#: mediagoblin/templates/mediagoblin/root.html:34
msgid ""
@@ -229,15 +242,15 @@ msgstr "Autentificare eșuată!"
#: mediagoblin/templates/mediagoblin/auth/login.html:42
msgid "Don't have an account yet?"
-msgstr "Nu aveți un cont?"
+msgstr "Nu ai un cont?"
#: mediagoblin/templates/mediagoblin/auth/login.html:45
msgid "Create one here!"
-msgstr "Creați-l aici!"
+msgstr "Creează-l aici!"
#: mediagoblin/templates/mediagoblin/auth/register.html:27
msgid "Create an account!"
-msgstr "Creați un cont!"
+msgstr "Creează un cont!"
#: mediagoblin/templates/mediagoblin/auth/register.html:30
msgid "Create"
@@ -265,6 +278,7 @@ msgid "Editing %(media_title)s"
msgstr "Editare %(media_title)s"
#: mediagoblin/templates/mediagoblin/edit/edit.html:36
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
msgid "Cancel"
msgstr "Anulare"
@@ -300,6 +314,15 @@ msgstr "Fișierele media ale lui <a href=\"%(user_url)s\">%(username)s</a>"
msgid "Sorry, no such user found."
msgstr "Ne pare rău, nu am găsit utilizatorul căutat."
+#: 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/media_confirm_delete.html:50
+msgid "Delete Permanently"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:22
msgid "Media processing panel"
msgstr "Panou de procesare media"
@@ -333,11 +356,11 @@ msgstr "Aproape gata! Mai trebuie doar să activezi contul."
#: mediagoblin/templates/mediagoblin/user_pages/user.html:47
msgid ""
"An email should arrive in a few moments with instructions on how to do so."
-msgstr "Veți primi în scurt timp un mesaj prin e-mail cu instrucțiuni."
+msgstr "Vei primi în scurt timp un mesaj prin e-mail cu instrucțiuni."
#: mediagoblin/templates/mediagoblin/user_pages/user.html:51
msgid "In case it doesn't:"
-msgstr "Dacă nu primiți mesajul:"
+msgstr "Dacă nu primești mesajul:"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:54
msgid "Resend verification email"
@@ -357,9 +380,8 @@ msgid ""
"If you are that person but you've lost your verification email, you can <a "
"href=\"%(login_url)s\">log in</a> and resend it."
msgstr ""
-"Dacă dvs. sunteți persoana respectivă și nu mai aveți e-mail-ul de "
-"verificare, puteți să vă <a href=\"%(login_url)s\">autentificați</a> pentru "
-"a-l retrimite."
+"Dacă tu ești persoana respectivă și nu mai ai e-mail-ul de verificare, poți "
+"să te <a href=\"%(login_url)s\">autentifici</a> pentru a-l retrimite."
#: mediagoblin/templates/mediagoblin/user_pages/user.html:78
#, python-format
@@ -408,8 +430,26 @@ msgstr "icon feed"
msgid "Atom feed"
msgstr "feed Atom"
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:40
+msgid "Newer"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:46
+msgid "Older"
+msgstr ""
+
#: mediagoblin/user_pages/forms.py:24
msgid "Comment"
msgstr "Scrie un comentariu"
+#: mediagoblin/user_pages/forms.py:30
+msgid "I am sure I want to delete this"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:176
+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ță."
+
diff --git a/mediagoblin/i18n/ru/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/ru/LC_MESSAGES/mediagoblin.mo
index 49aa9ccb..35c8ed2d 100644
--- a/mediagoblin/i18n/ru/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/ru/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/ru/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/ru/LC_MESSAGES/mediagoblin.po
index 9adc9b83..6fd2322e 100644
--- a/mediagoblin/i18n/ru/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/ru/LC_MESSAGES/mediagoblin.po
@@ -7,9 +7,9 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://bugs.foocorp.net/projects/mediagoblin/issues\n"
-"POT-Creation-Date: 2011-08-25 07:41-0500\n"
-"PO-Revision-Date: 2011-08-25 14:35+0000\n"
-"Last-Translator: aleksejrs <deletesoftware@yandex.ru>\n"
+"POT-Creation-Date: 2011-09-05 23:31-0500\n"
+"PO-Revision-Date: 2011-09-06 04:31+0000\n"
+"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -18,11 +18,11 @@ 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:24 mediagoblin/auth/forms.py:46
+#: mediagoblin/auth/forms.py:24 mediagoblin/auth/forms.py:48
msgid "Username"
msgstr "Логин"
-#: mediagoblin/auth/forms.py:29 mediagoblin/auth/forms.py:50
+#: mediagoblin/auth/forms.py:29 mediagoblin/auth/forms.py:52
msgid "Password"
msgstr "Пароль"
@@ -34,85 +34,100 @@ msgstr "Пароли должны совпадать."
msgid "Confirm password"
msgstr "Подтвердите пароль"
-#: mediagoblin/auth/forms.py:39
+#: mediagoblin/auth/forms.py:38
+msgid "Type it again here to make sure there are no spelling mistakes."
+msgstr "Type it again here to make sure there are no spelling mistakes."
+
+#: mediagoblin/auth/forms.py:41
msgid "Email address"
msgstr "Адрес электронной почты"
#: mediagoblin/auth/views.py:40
msgid "Sorry, registration is disabled on this instance."
-msgstr ""
+msgstr "Извините, на этом разделе регистрация запрещена."
-#: mediagoblin/auth/views.py:57
+#: mediagoblin/auth/views.py:58
msgid "Sorry, a user with that name already exists."
-msgstr ""
+msgstr "Извините, пользователь с этим именем уже зарегистрирован."
-#: mediagoblin/auth/views.py:61
+#: mediagoblin/auth/views.py:62
msgid "Sorry, that email address has already been taken."
-msgstr ""
+msgstr "Извините, этот адрес электнонной почты уже занят."
-#: mediagoblin/auth/views.py:159
+#: mediagoblin/auth/views.py:160
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
msgstr ""
+"Адрес вашей электронной потвержден. Вы теперь можете войти и начать "
+"редактировать свой профиль и загружать новые изображения!"
-#: mediagoblin/auth/views.py:165
+#: mediagoblin/auth/views.py:166
msgid "The verification key or user id is incorrect"
-msgstr ""
+msgstr "Неверный ключ проверки или идентификатор пользователя"
-#: mediagoblin/auth/views.py:186
+#: mediagoblin/auth/views.py:187
#: mediagoblin/templates/mediagoblin/auth/resent_verification_email.html:22
msgid "Resent your verification email."
-msgstr ""
+msgstr "Переслать сообщение с подтверждением аккаунта."
#: mediagoblin/edit/forms.py:26 mediagoblin/submit/forms.py:27
msgid "Title"
msgstr "Название"
-#: mediagoblin/edit/forms.py:29
+#: mediagoblin/edit/forms.py:30 mediagoblin/submit/forms.py:32
+msgid "Tags"
+msgstr "Метки"
+
+#: mediagoblin/edit/forms.py:33
msgid "Slug"
msgstr "Отличительная часть адреса"
-#: mediagoblin/edit/forms.py:30
+#: mediagoblin/edit/forms.py:34
msgid "The slug can't be empty"
msgstr "Отличительная часть адреса необходима"
-#: mediagoblin/edit/forms.py:33 mediagoblin/submit/forms.py:31
-msgid "Tags"
-msgstr "Метки"
+#: mediagoblin/edit/forms.py:35
+msgid ""
+"The title part of this media's URL. You usually don't need to change this."
+msgstr ""
-#: mediagoblin/edit/forms.py:38
+#: mediagoblin/edit/forms.py:42
msgid "Bio"
-msgstr ""
+msgstr "Биография"
-#: mediagoblin/edit/forms.py:41
+#: mediagoblin/edit/forms.py:45
msgid "Website"
msgstr "Сайт"
-#: mediagoblin/edit/views.py:65
+#: mediagoblin/edit/views.py:63
msgid "An entry with that slug already exists for this user."
msgstr ""
"У этого пользователя уже есть файл с такой отличительной частью адреса."
-#: mediagoblin/edit/views.py:94
+#: mediagoblin/edit/views.py:84
msgid "You are editing another user's media. Proceed with caution."
-msgstr ""
+msgstr "Вы редактируете файлы другого пользователя. Будьте осторожны."
-#: mediagoblin/edit/views.py:165
+#: mediagoblin/edit/views.py:155
msgid "You are editing a user's profile. Proceed with caution."
-msgstr ""
+msgstr "Вы редактируете профиль пользователя. Будьте осторожны."
#: mediagoblin/process_media/errors.py:44
msgid "Invalid file given for media type."
-msgstr ""
+msgstr "Неправильный формат файла."
#: mediagoblin/submit/forms.py:25
msgid "File"
msgstr "Файл"
+#: mediagoblin/submit/forms.py:30
+msgid "Description of this work"
+msgstr ""
+
#: mediagoblin/submit/views.py:47
msgid "You must provide a file."
-msgstr ""
+msgstr "Вы должны загрузить файл."
#: mediagoblin/submit/views.py:50
msgid "The file doesn't seem to be an image!"
@@ -128,17 +143,17 @@ msgstr "Ой!"
#: mediagoblin/templates/mediagoblin/404.html:24
msgid "There doesn't seem to be a page at this address. Sorry!"
-msgstr ""
+msgstr "Кажется, такой страницы не существует. Уж извините!"
#: mediagoblin/templates/mediagoblin/404.html:26
msgid ""
"If you're sure the address is correct, maybe the page you're looking for has"
" been moved or deleted."
-msgstr ""
+msgstr "Возможно, страница которую вы ищете была удалена или переехала."
#: mediagoblin/templates/mediagoblin/404.html:32
msgid "Image of 404 goblin stressing out"
-msgstr ""
+msgstr "Изображение 404 нервничающего гоблина"
#: mediagoblin/templates/mediagoblin/base.html:22
msgid "GNU MediaGoblin"
@@ -150,7 +165,7 @@ msgstr "Символ MediaGoblin"
#: mediagoblin/templates/mediagoblin/base.html:52
msgid "Submit media"
-msgstr ""
+msgstr "Загрузить файл"
#: mediagoblin/templates/mediagoblin/base.html:63
msgid "verify your email!"
@@ -160,27 +175,29 @@ msgstr "подтвердите ваш адрес электронной почт
#: mediagoblin/templates/mediagoblin/auth/login.html:26
#: mediagoblin/templates/mediagoblin/auth/login.html:34
msgid "Log in"
-msgstr "Представиться"
+msgstr "Войти"
#: mediagoblin/templates/mediagoblin/base.html:89
msgid ""
"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
-"href=\"http://gnu.org/\">GNU project</a>"
+"href=\"http://gnu.org/\">GNU</a> project"
msgstr ""
#: mediagoblin/templates/mediagoblin/root.html:27
msgid "Hi there, media lover! MediaGoblin is..."
-msgstr ""
+msgstr "Привет, любитель мультимедиа! MediaGoblin это…"
#: mediagoblin/templates/mediagoblin/root.html:29
msgid "The perfect place for your media!"
-msgstr ""
+msgstr "Отличное место для ваших файлов!"
#: mediagoblin/templates/mediagoblin/root.html:30
msgid ""
"A place for people to collaborate and show off original and derived "
"creations!"
msgstr ""
+"Место для того, чтобы совместно работать или просто показать свои "
+"оригинальные и/или заимствованные создания!"
#: mediagoblin/templates/mediagoblin/root.html:31
msgid ""
@@ -193,12 +210,16 @@ msgid ""
"Aiming to make the world a better place through decentralization and "
"(eventually, coming soon!) federation!"
msgstr ""
+"Попытка сделать мир лучше с помощью децентрализации и (надеемся, что скоро!)"
+" интеграции!"
#: mediagoblin/templates/mediagoblin/root.html:33
msgid ""
"Built for extensibility. (Multiple media types coming soon to the software,"
" including video support!)"
msgstr ""
+"Built for extensibility. (Multiple media types coming soon to the software,"
+" including video support!)"
#: mediagoblin/templates/mediagoblin/root.html:34
msgid ""
@@ -206,26 +227,29 @@ msgid ""
"href=\"http://mediagoblin.org/pages/join.html\">You can help us improve this"
" software!</a>)"
msgstr ""
+"Поддерживается такими же, как и ты. (<a "
+"href=\"http://mediagoblin.org/pages/join.html\">Ты можешь помочь сделать это"
+" ПО лучше!</a>)"
#: mediagoblin/templates/mediagoblin/auth/login.html:29
msgid "Logging in failed!"
-msgstr ""
+msgstr "Авторизация неуспешна!"
#: mediagoblin/templates/mediagoblin/auth/login.html:42
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/register.html:27
msgid "Create an account!"
-msgstr "Создаём учётную запись!"
+msgstr "Создать аккаунт!"
#: mediagoblin/templates/mediagoblin/auth/register.html:30
msgid "Create"
-msgstr ""
+msgstr "Создать"
#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
#, python-format
@@ -239,7 +263,7 @@ msgid ""
msgstr ""
"Привет, %(username)s!\n"
"\n"
-"Чтобы активировать свою учётную запись в GNU MediaGoblin, откройте в своём веб‐браузере следующую ссылку:\n"
+"Чтобы активировать свой аккаунт в GNU MediaGoblin, откройте в своём веб‐браузере следующую ссылку:\n"
"\n"
"%(verification_url)s"
@@ -249,6 +273,7 @@ msgid "Editing %(media_title)s"
msgstr "Редактирование %(media_title)s"
#: mediagoblin/templates/mediagoblin/edit/edit.html:36
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
msgid "Cancel"
msgstr "Отменить"
@@ -268,11 +293,11 @@ msgstr "Файлы с меткой:"
#: mediagoblin/templates/mediagoblin/submit/start.html:26
msgid "Submit yer media"
-msgstr ""
+msgstr "Загрузить файл(ы)"
#: mediagoblin/templates/mediagoblin/submit/start.html:29
msgid "Submit"
-msgstr ""
+msgstr "Подтвердить"
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:32
#, python-format
@@ -282,56 +307,68 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:52
#: mediagoblin/templates/mediagoblin/user_pages/user.html:32
msgid "Sorry, no such user found."
+msgstr "Извините, но такой пользователь не найден."
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
+#, python-format
+msgid "Really delete %(title)s?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:50
+msgid "Delete Permanently"
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:22
msgid "Media processing panel"
-msgstr ""
+msgstr "Панель обработки файлов"
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:25
msgid ""
"You can track the state of media being processed for your gallery here."
msgstr ""
+"Вы можете следить за статусом обработки файлов для вашей галереи здесь."
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:28
msgid "Media in-processing"
-msgstr ""
+msgstr "Обработка файлов в процессе"
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:46
msgid "No media in-processing"
-msgstr ""
+msgstr "Нету файлов для обработки"
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:50
msgid "These uploads failed to process:"
-msgstr ""
+msgstr "Обработка этих файлов вызвала ошибку:"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:39
#: mediagoblin/templates/mediagoblin/user_pages/user.html:59
msgid "Email verification needed"
-msgstr ""
+msgstr "Нужно подтверждение почтового адреса"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:42
msgid "Almost done! Your account still needs to be activated."
-msgstr ""
+msgstr "Почти закончили! Теперь надо активировать ваш аккаунт."
#: mediagoblin/templates/mediagoblin/user_pages/user.html:47
msgid ""
"An email should arrive in a few moments with instructions on how to do so."
msgstr ""
+"Через пару мгновений на адрес вашей электронной почты должно прийти "
+"сообщение с дальнейшими инструкциями."
#: mediagoblin/templates/mediagoblin/user_pages/user.html:51
msgid "In case it doesn't:"
-msgstr ""
+msgstr "А если нет, то:"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:54
msgid "Resend verification email"
-msgstr ""
+msgstr "Повторно отправить подверждение на адрес электнонной почты"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
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:68
#, python-format
@@ -339,6 +376,8 @@ msgid ""
"If you are that person but you've lost your verification email, you can <a "
"href=\"%(login_url)s\">log in</a> and resend it."
msgstr ""
+"Если это были вы, и если вы потеряли сообщение для подтверждения аккаунта, "
+"то вы можете <a href=\"%(login_url)s\">войти</a> и отправить его повторно."
#: mediagoblin/templates/mediagoblin/user_pages/user.html:78
#, python-format
@@ -347,16 +386,16 @@ msgstr "Профиль пользователя %(username)s"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:85
msgid "Here's a spot to tell others about yourself."
-msgstr ""
+msgstr "Здесь вы можете рассказать о себе."
#: mediagoblin/templates/mediagoblin/user_pages/user.html:90
#: mediagoblin/templates/mediagoblin/user_pages/user.html:108
msgid "Edit profile"
-msgstr "Изменить профиль"
+msgstr "Редактировать профиль"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
msgid "This user hasn't filled in their profile (yet)."
-msgstr ""
+msgstr "Это пользователь не заполнил свой профайл (пока)."
#: mediagoblin/templates/mediagoblin/user_pages/user.html:122
#, python-format
@@ -367,15 +406,15 @@ msgstr "Смотреть все файлы %(username)s"
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:141
msgid "Add media"
-msgstr ""
+msgstr "Добавить файлы"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:147
msgid "There doesn't seem to be any media here yet..."
-msgstr ""
+msgstr "Пока что тут файлов нет…"
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
msgid "feed icon"
@@ -385,8 +424,24 @@ msgstr ""
msgid "Atom feed"
msgstr "лента в формате Atom"
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:40
+msgid "Newer"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:46
+msgid "Older"
+msgstr ""
+
#: mediagoblin/user_pages/forms.py:24
msgid "Comment"
+msgstr "Комментарий"
+
+#: mediagoblin/user_pages/forms.py:30
+msgid "I am sure I want to delete this"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:176
+msgid "You are about to delete another user's media. Proceed with caution."
msgstr ""
diff --git a/mediagoblin/i18n/sl/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/sl/LC_MESSAGES/mediagoblin.mo
index aaeec466..663a7e55 100644
--- a/mediagoblin/i18n/sl/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/sl/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/sl/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/sl/LC_MESSAGES/mediagoblin.po
index 3db6ed4a..22c80076 100644
--- a/mediagoblin/i18n/sl/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/sl/LC_MESSAGES/mediagoblin.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://bugs.foocorp.net/projects/mediagoblin/issues\n"
-"POT-Creation-Date: 2011-08-25 07:41-0500\n"
-"PO-Revision-Date: 2011-08-25 12:41+0000\n"
+"POT-Creation-Date: 2011-09-05 23:31-0500\n"
+"PO-Revision-Date: 2011-09-06 04:31+0000\n"
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
@@ -18,11 +18,11 @@ 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:24 mediagoblin/auth/forms.py:46
+#: mediagoblin/auth/forms.py:24 mediagoblin/auth/forms.py:48
msgid "Username"
msgstr "Uporabniško ime"
-#: mediagoblin/auth/forms.py:29 mediagoblin/auth/forms.py:50
+#: mediagoblin/auth/forms.py:29 mediagoblin/auth/forms.py:52
msgid "Password"
msgstr "Geslo"
@@ -34,7 +34,11 @@ msgstr "Gesli morata biti enaki."
msgid "Confirm password"
msgstr "Potrdite geslo"
-#: mediagoblin/auth/forms.py:39
+#: mediagoblin/auth/forms.py:38
+msgid "Type it again here to make sure there are no spelling mistakes."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:41
msgid "Email address"
msgstr "E-poštni naslov"
@@ -42,15 +46,15 @@ msgstr "E-poštni naslov"
msgid "Sorry, registration is disabled on this instance."
msgstr "Oprostite, prijava za ta izvod ni omogočena."
-#: mediagoblin/auth/views.py:57
+#: mediagoblin/auth/views.py:58
msgid "Sorry, a user with that name already exists."
msgstr "Oprostite, uporabnik s tem imenom že obstaja."
-#: mediagoblin/auth/views.py:61
+#: mediagoblin/auth/views.py:62
msgid "Sorry, that email address has already been taken."
msgstr "Oprostite, ta e-poštni naslov je že v uporabi."
-#: mediagoblin/auth/views.py:159
+#: mediagoblin/auth/views.py:160
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
@@ -58,11 +62,11 @@ msgstr ""
"Vaš e-poštni naslov je bil potrjen. Sedaj se lahko prijavite, uredite svoj "
"profil in pošljete slike."
-#: mediagoblin/auth/views.py:165
+#: mediagoblin/auth/views.py:166
msgid "The verification key or user id is incorrect"
msgstr "Potrditveni ključ ali uporabniška identifikacija je napačna"
-#: mediagoblin/auth/views.py:186
+#: mediagoblin/auth/views.py:187
#: mediagoblin/templates/mediagoblin/auth/resent_verification_email.html:22
msgid "Resent your verification email."
msgstr "Ponovno pošiljanje potrditvene e-pošte."
@@ -71,35 +75,40 @@ msgstr "Ponovno pošiljanje potrditvene e-pošte."
msgid "Title"
msgstr "Naslov"
-#: mediagoblin/edit/forms.py:29
+#: mediagoblin/edit/forms.py:30 mediagoblin/submit/forms.py:32
+msgid "Tags"
+msgstr "Oznake"
+
+#: mediagoblin/edit/forms.py:33
msgid "Slug"
msgstr "Oznaka"
-#: mediagoblin/edit/forms.py:30
+#: mediagoblin/edit/forms.py:34
msgid "The slug can't be empty"
msgstr "Oznaka ne sme biti prazna"
-#: mediagoblin/edit/forms.py:33 mediagoblin/submit/forms.py:31
-msgid "Tags"
-msgstr "Oznake"
+#: mediagoblin/edit/forms.py:35
+msgid ""
+"The title part of this media's URL. You usually don't need to change this."
+msgstr ""
-#: mediagoblin/edit/forms.py:38
+#: mediagoblin/edit/forms.py:42
msgid "Bio"
msgstr "Biografija"
-#: mediagoblin/edit/forms.py:41
+#: mediagoblin/edit/forms.py:45
msgid "Website"
msgstr "Spletna stran"
-#: mediagoblin/edit/views.py:65
+#: mediagoblin/edit/views.py:63
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:94
+#: mediagoblin/edit/views.py:84
msgid "You are editing another user's media. Proceed with caution."
msgstr "Urejate vsebino drugega uporabnika. Nadaljujte pazljivo."
-#: mediagoblin/edit/views.py:165
+#: mediagoblin/edit/views.py:155
msgid "You are editing a user's profile. Proceed with caution."
msgstr "Urejate uporabniški profil. Nadaljujte pazljivo."
@@ -111,6 +120,10 @@ msgstr "Za vrsto vsebine je bila podana napačna datoteka."
msgid "File"
msgstr "Datoteka"
+#: mediagoblin/submit/forms.py:30
+msgid "Description of this work"
+msgstr ""
+
#: mediagoblin/submit/views.py:47
msgid "You must provide a file."
msgstr "Podati morate datoteko."
@@ -168,10 +181,8 @@ msgstr "Prijava"
#: mediagoblin/templates/mediagoblin/base.html:89
msgid ""
"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
-"href=\"http://gnu.org/\">GNU project</a>"
+"href=\"http://gnu.org/\">GNU</a> project"
msgstr ""
-"Stran poganja <a href=\"http://mediagoblin.org\">MediaGoblin</a>, del <a "
-"href=\"http://gnu.org/\">projekta GNU</a>"
#: mediagoblin/templates/mediagoblin/root.html:27
msgid "Hi there, media lover! MediaGoblin is..."
@@ -264,6 +275,7 @@ msgid "Editing %(media_title)s"
msgstr "Urejanje %(media_title)s"
#: mediagoblin/templates/mediagoblin/edit/edit.html:36
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
msgid "Cancel"
msgstr "Prekliči"
@@ -299,6 +311,15 @@ msgstr "Vsebina uporabnika <a href=\"%(user_url)s\">%(username)s</a>"
msgid "Sorry, no such user found."
msgstr "Oprostite, tega uporabnika ni bilo moč najti."
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
+#, python-format
+msgid "Really delete %(title)s?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:50
+msgid "Delete Permanently"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:22
msgid "Media processing panel"
msgstr "Podokno obdelovanja vsebine"
@@ -404,8 +425,24 @@ msgstr "Ikona vira"
msgid "Atom feed"
msgstr "Ikona Atom"
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:40
+msgid "Newer"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:46
+msgid "Older"
+msgstr ""
+
#: mediagoblin/user_pages/forms.py:24
msgid "Comment"
msgstr "Komentar"
+#: mediagoblin/user_pages/forms.py:30
+msgid "I am sure I want to delete this"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:176
+msgid "You are about to delete another user's media. Proceed with caution."
+msgstr ""
+
diff --git a/mediagoblin/i18n/sr/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/sr/LC_MESSAGES/mediagoblin.mo
index 2f9de271..80608e3a 100644
--- a/mediagoblin/i18n/sr/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/sr/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/sr/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/sr/LC_MESSAGES/mediagoblin.po
index 51c2e443..7a843fdc 100644
--- a/mediagoblin/i18n/sr/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/sr/LC_MESSAGES/mediagoblin.po
@@ -6,8 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://bugs.foocorp.net/projects/mediagoblin/issues\n"
-"POT-Creation-Date: 2011-08-25 07:41-0500\n"
-"PO-Revision-Date: 2011-08-25 12:41+0000\n"
+"POT-Creation-Date: 2011-09-05 23:31-0500\n"
+"PO-Revision-Date: 2011-09-06 04:31+0000\n"
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
"Language-Team: Serbian (http://www.transifex.net/projects/p/mediagoblin/team/sr/)\n"
"MIME-Version: 1.0\n"
@@ -17,11 +17,11 @@ 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:24 mediagoblin/auth/forms.py:46
+#: mediagoblin/auth/forms.py:24 mediagoblin/auth/forms.py:48
msgid "Username"
msgstr ""
-#: mediagoblin/auth/forms.py:29 mediagoblin/auth/forms.py:50
+#: mediagoblin/auth/forms.py:29 mediagoblin/auth/forms.py:52
msgid "Password"
msgstr ""
@@ -33,7 +33,11 @@ msgstr ""
msgid "Confirm password"
msgstr ""
-#: mediagoblin/auth/forms.py:39
+#: mediagoblin/auth/forms.py:38
+msgid "Type it again here to make sure there are no spelling mistakes."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:41
msgid "Email address"
msgstr ""
@@ -41,25 +45,25 @@ msgstr ""
msgid "Sorry, registration is disabled on this instance."
msgstr ""
-#: mediagoblin/auth/views.py:57
+#: mediagoblin/auth/views.py:58
msgid "Sorry, a user with that name already exists."
msgstr ""
-#: mediagoblin/auth/views.py:61
+#: mediagoblin/auth/views.py:62
msgid "Sorry, that email address has already been taken."
msgstr ""
-#: mediagoblin/auth/views.py:159
+#: mediagoblin/auth/views.py:160
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
msgstr ""
-#: mediagoblin/auth/views.py:165
+#: mediagoblin/auth/views.py:166
msgid "The verification key or user id is incorrect"
msgstr ""
-#: mediagoblin/auth/views.py:186
+#: mediagoblin/auth/views.py:187
#: mediagoblin/templates/mediagoblin/auth/resent_verification_email.html:22
msgid "Resent your verification email."
msgstr ""
@@ -68,35 +72,40 @@ msgstr ""
msgid "Title"
msgstr ""
-#: mediagoblin/edit/forms.py:29
+#: mediagoblin/edit/forms.py:30 mediagoblin/submit/forms.py:32
+msgid "Tags"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:33
msgid "Slug"
msgstr ""
-#: mediagoblin/edit/forms.py:30
+#: mediagoblin/edit/forms.py:34
msgid "The slug can't be empty"
msgstr ""
-#: mediagoblin/edit/forms.py:33 mediagoblin/submit/forms.py:31
-msgid "Tags"
+#: mediagoblin/edit/forms.py:35
+msgid ""
+"The title part of this media's URL. You usually don't need to change this."
msgstr ""
-#: mediagoblin/edit/forms.py:38
+#: mediagoblin/edit/forms.py:42
msgid "Bio"
msgstr ""
-#: mediagoblin/edit/forms.py:41
+#: mediagoblin/edit/forms.py:45
msgid "Website"
msgstr ""
-#: mediagoblin/edit/views.py:65
+#: mediagoblin/edit/views.py:63
msgid "An entry with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:94
+#: mediagoblin/edit/views.py:84
msgid "You are editing another user's media. Proceed with caution."
msgstr ""
-#: mediagoblin/edit/views.py:165
+#: mediagoblin/edit/views.py:155
msgid "You are editing a user's profile. Proceed with caution."
msgstr ""
@@ -108,6 +117,10 @@ msgstr ""
msgid "File"
msgstr ""
+#: mediagoblin/submit/forms.py:30
+msgid "Description of this work"
+msgstr ""
+
#: mediagoblin/submit/views.py:47
msgid "You must provide a file."
msgstr ""
@@ -163,7 +176,7 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/base.html:89
msgid ""
"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
-"href=\"http://gnu.org/\">GNU project</a>"
+"href=\"http://gnu.org/\">GNU</a> project"
msgstr ""
#: mediagoblin/templates/mediagoblin/root.html:27
@@ -242,6 +255,7 @@ msgid "Editing %(media_title)s"
msgstr ""
#: mediagoblin/templates/mediagoblin/edit/edit.html:36
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
msgid "Cancel"
msgstr ""
@@ -277,6 +291,15 @@ msgstr ""
msgid "Sorry, no such user found."
msgstr ""
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
+#, python-format
+msgid "Really delete %(title)s?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:50
+msgid "Delete Permanently"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:22
msgid "Media processing panel"
msgstr ""
@@ -378,8 +401,24 @@ msgstr ""
msgid "Atom feed"
msgstr ""
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:40
+msgid "Newer"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:46
+msgid "Older"
+msgstr ""
+
#: mediagoblin/user_pages/forms.py:24
msgid "Comment"
msgstr ""
+#: mediagoblin/user_pages/forms.py:30
+msgid "I am sure I want to delete this"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:176
+msgid "You are about to delete another user's media. Proceed with caution."
+msgstr ""
+
diff --git a/mediagoblin/i18n/sv/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/sv/LC_MESSAGES/mediagoblin.mo
index 2136e0a3..9086472a 100644
--- a/mediagoblin/i18n/sv/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/sv/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/sv/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/sv/LC_MESSAGES/mediagoblin.po
index dd30371a..78a6bd41 100644
--- a/mediagoblin/i18n/sv/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/sv/LC_MESSAGES/mediagoblin.po
@@ -7,9 +7,9 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://bugs.foocorp.net/projects/mediagoblin/issues\n"
-"POT-Creation-Date: 2011-08-25 07:41-0500\n"
-"PO-Revision-Date: 2011-08-25 13:07+0000\n"
-"Last-Translator: joar <transifex@wandborg.se>\n"
+"POT-Creation-Date: 2011-09-05 23:31-0500\n"
+"PO-Revision-Date: 2011-09-06 04:31+0000\n"
+"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
"Language-Team: Swedish (http://www.transifex.net/projects/p/mediagoblin/team/sv/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -18,11 +18,11 @@ msgstr ""
"Language: sv\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
-#: mediagoblin/auth/forms.py:24 mediagoblin/auth/forms.py:46
+#: mediagoblin/auth/forms.py:24 mediagoblin/auth/forms.py:48
msgid "Username"
msgstr "Användarnamn"
-#: mediagoblin/auth/forms.py:29 mediagoblin/auth/forms.py:50
+#: mediagoblin/auth/forms.py:29 mediagoblin/auth/forms.py:52
msgid "Password"
msgstr "Lösenord"
@@ -34,7 +34,11 @@ msgstr "Lösenorden måste vara identiska."
msgid "Confirm password"
msgstr "Bekräfta lösenord"
-#: mediagoblin/auth/forms.py:39
+#: mediagoblin/auth/forms.py:38
+msgid "Type it again here to make sure there are no spelling mistakes."
+msgstr ""
+
+#: mediagoblin/auth/forms.py:41
msgid "Email address"
msgstr "E-postadress"
@@ -42,15 +46,15 @@ msgstr "E-postadress"
msgid "Sorry, registration is disabled on this instance."
msgstr "Vi beklagar, registreringen är avtängd på den här instansen."
-#: mediagoblin/auth/views.py:57
+#: mediagoblin/auth/views.py:58
msgid "Sorry, a user with that name already exists."
msgstr "En användare med det användarnamnet finns redan."
-#: mediagoblin/auth/views.py:61
+#: mediagoblin/auth/views.py:62
msgid "Sorry, that email address has already been taken."
msgstr "Den e-postadressen är redan tagen."
-#: mediagoblin/auth/views.py:159
+#: mediagoblin/auth/views.py:160
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
@@ -58,11 +62,11 @@ msgstr ""
"Din e-postadress är verifierad. Du kan nu logga in, redigera din profil och "
"ladda upp filer!"
-#: mediagoblin/auth/views.py:165
+#: mediagoblin/auth/views.py:166
msgid "The verification key or user id is incorrect"
msgstr "Verifieringsnyckeln eller användar-IDt är fel."
-#: mediagoblin/auth/views.py:186
+#: mediagoblin/auth/views.py:187
#: mediagoblin/templates/mediagoblin/auth/resent_verification_email.html:22
msgid "Resent your verification email."
msgstr "Skickade ett nytt verifierings-email."
@@ -71,35 +75,40 @@ msgstr "Skickade ett nytt verifierings-email."
msgid "Title"
msgstr "Titel"
-#: mediagoblin/edit/forms.py:29
+#: mediagoblin/edit/forms.py:30 mediagoblin/submit/forms.py:32
+msgid "Tags"
+msgstr "Taggar"
+
+#: mediagoblin/edit/forms.py:33
msgid "Slug"
msgstr "Sökvägsnamn"
-#: mediagoblin/edit/forms.py:30
+#: mediagoblin/edit/forms.py:34
msgid "The slug can't be empty"
msgstr "Sökvägsnamnet kan inte vara tomt"
-#: mediagoblin/edit/forms.py:33 mediagoblin/submit/forms.py:31
-msgid "Tags"
-msgstr "Taggar"
+#: mediagoblin/edit/forms.py:35
+msgid ""
+"The title part of this media's URL. You usually don't need to change this."
+msgstr ""
-#: mediagoblin/edit/forms.py:38
+#: mediagoblin/edit/forms.py:42
msgid "Bio"
msgstr "Presentation"
-#: mediagoblin/edit/forms.py:41
+#: mediagoblin/edit/forms.py:45
msgid "Website"
msgstr "Hemsida"
-#: mediagoblin/edit/views.py:65
+#: mediagoblin/edit/views.py:63
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:94
+#: mediagoblin/edit/views.py:84
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:165
+#: mediagoblin/edit/views.py:155
msgid "You are editing a user's profile. Proceed with caution."
msgstr "Var försiktig, du redigerar en annan användares profil."
@@ -111,6 +120,10 @@ msgstr "Ogiltig fil för mediatypen."
msgid "File"
msgstr "Fil"
+#: mediagoblin/submit/forms.py:30
+msgid "Description of this work"
+msgstr ""
+
#: mediagoblin/submit/views.py:47
msgid "You must provide a file."
msgstr "Du måste ange en fil"
@@ -168,10 +181,8 @@ msgstr "Logga in"
#: mediagoblin/templates/mediagoblin/base.html:89
msgid ""
"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
-"href=\"http://gnu.org/\">GNU project</a>"
+"href=\"http://gnu.org/\">GNU</a> project"
msgstr ""
-"Drivs av <a href=\"http://mediagoblin.org\">MediaGoblin</a>, ett <a "
-"href=\"http://gnu.org/\">GNU</a>-projekt"
#: mediagoblin/templates/mediagoblin/root.html:27
msgid "Hi there, media lover! MediaGoblin is..."
@@ -268,6 +279,7 @@ msgid "Editing %(media_title)s"
msgstr "Redigerar %(media_title)s"
#: mediagoblin/templates/mediagoblin/edit/edit.html:36
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
msgid "Cancel"
msgstr "Avbryt"
@@ -303,6 +315,15 @@ msgstr "<a href=\"%(user_url)s\">%(username)s</a>s media"
msgid "Sorry, no such user found."
msgstr "Finns ingen sådan användare ännu."
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
+#, python-format
+msgid "Really delete %(title)s?"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:50
+msgid "Delete Permanently"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:22
msgid "Media processing panel"
msgstr "Mediabehandlingspanel"
@@ -412,8 +433,24 @@ msgstr "feed-ikon"
msgid "Atom feed"
msgstr "Atom-feed"
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:40
+msgid "Newer"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:46
+msgid "Older"
+msgstr ""
+
#: mediagoblin/user_pages/forms.py:24
msgid "Comment"
msgstr "Kommentar"
+#: mediagoblin/user_pages/forms.py:30
+msgid "I am sure I want to delete this"
+msgstr ""
+
+#: mediagoblin/user_pages/views.py:176
+msgid "You are about to delete another user's media. 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 ce7240fc..dc196210 100644
--- a/mediagoblin/i18n/zh_TW/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/zh_TW/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/zh_TW/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/zh_TW/LC_MESSAGES/mediagoblin.po
index 44670ab2..8a5fc21c 100644
--- a/mediagoblin/i18n/zh_TW/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/zh_TW/LC_MESSAGES/mediagoblin.po
@@ -3,12 +3,13 @@
# This file is distributed under the same license as the PROJECT project.
#
# <chc@citi.sinica.edu.tw>, 2011.
+# Harry Chen <harryhow@gmail.com>, 2011.
msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://bugs.foocorp.net/projects/mediagoblin/issues\n"
-"POT-Creation-Date: 2011-08-25 07:41-0500\n"
-"PO-Revision-Date: 2011-08-25 12:41+0000\n"
+"POT-Creation-Date: 2011-09-05 23:31-0500\n"
+"PO-Revision-Date: 2011-09-06 04:31+0000\n"
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
@@ -18,23 +19,27 @@ msgstr ""
"Language: zh_TW\n"
"Plural-Forms: nplurals=1; plural=0\n"
-#: mediagoblin/auth/forms.py:24 mediagoblin/auth/forms.py:46
+#: mediagoblin/auth/forms.py:24 mediagoblin/auth/forms.py:48
msgid "Username"
msgstr "使用者名稱"
-#: mediagoblin/auth/forms.py:29 mediagoblin/auth/forms.py:50
+#: mediagoblin/auth/forms.py:29 mediagoblin/auth/forms.py:52
msgid "Password"
msgstr "密碼"
#: mediagoblin/auth/forms.py:34
msgid "Passwords must match."
-msgstr "密碼必須一至"
+msgstr "密碼必須一致"
#: mediagoblin/auth/forms.py:36
msgid "Confirm password"
msgstr "確認密碼"
-#: mediagoblin/auth/forms.py:39
+#: mediagoblin/auth/forms.py:38
+msgid "Type it again here to make sure there are no spelling mistakes."
+msgstr "再輸入一次,確定你沒有打錯字。"
+
+#: mediagoblin/auth/forms.py:41
msgid "Email address"
msgstr "電子郵件位置"
@@ -42,102 +47,111 @@ msgstr "電子郵件位置"
msgid "Sorry, registration is disabled on this instance."
msgstr "抱歉, 這個項目已經被暫停註冊."
-#: mediagoblin/auth/views.py:57
+#: mediagoblin/auth/views.py:58
msgid "Sorry, a user with that name already exists."
msgstr "抱歉, 這個使用者名稱已經存在."
-#: mediagoblin/auth/views.py:61
+#: mediagoblin/auth/views.py:62
msgid "Sorry, that email address has already been taken."
-msgstr ""
+msgstr "抱歉,這個電子郵件已經被其他人使用了。"
-#: mediagoblin/auth/views.py:159
+#: mediagoblin/auth/views.py:160
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
-msgstr "你的電子郵件位址已被認證. 你現在就可以登入, 編輯你的個人檔案而且送出照片!"
+msgstr "你的電子郵件位址已被認證. 你現在就可以登入, 編輯你的個人檔案而且遞交照片!"
-#: mediagoblin/auth/views.py:165
+#: mediagoblin/auth/views.py:166
msgid "The verification key or user id is incorrect"
msgstr "認證碼或是使用者帳號錯誤"
-#: mediagoblin/auth/views.py:186
+#: mediagoblin/auth/views.py:187
#: mediagoblin/templates/mediagoblin/auth/resent_verification_email.html:22
msgid "Resent your verification email."
-msgstr "重送認證郵件."
+msgstr "重送認證信."
#: mediagoblin/edit/forms.py:26 mediagoblin/submit/forms.py:27
msgid "Title"
-msgstr "稱謂"
+msgstr "標題"
+
+#: mediagoblin/edit/forms.py:30 mediagoblin/submit/forms.py:32
+msgid "Tags"
+msgstr "標籤"
-#: mediagoblin/edit/forms.py:29
+#: mediagoblin/edit/forms.py:33
msgid "Slug"
msgstr "自訂字串"
-#: mediagoblin/edit/forms.py:30
+#: mediagoblin/edit/forms.py:34
msgid "The slug can't be empty"
msgstr "自訂字串不能空白"
-#: mediagoblin/edit/forms.py:33 mediagoblin/submit/forms.py:31
-msgid "Tags"
-msgstr "標籤"
+#: mediagoblin/edit/forms.py:35
+msgid ""
+"The title part of this media's URL. You usually don't need to change this."
+msgstr ""
-#: mediagoblin/edit/forms.py:38
+#: mediagoblin/edit/forms.py:42
msgid "Bio"
-msgstr "自傳"
+msgstr "自我介紹"
-#: mediagoblin/edit/forms.py:41
+#: mediagoblin/edit/forms.py:45
msgid "Website"
msgstr "網站"
-#: mediagoblin/edit/views.py:65
+#: mediagoblin/edit/views.py:63
msgid "An entry with that slug already exists for this user."
msgstr "這個自訂字串已經被其他人用了"
-#: mediagoblin/edit/views.py:94
+#: mediagoblin/edit/views.py:84
msgid "You are editing another user's media. Proceed with caution."
msgstr "你正在編輯他人的媒體檔案. 請謹慎處理."
-#: mediagoblin/edit/views.py:165
+#: mediagoblin/edit/views.py:155
msgid "You are editing a user's profile. Proceed with caution."
-msgstr "你正在編輯他人的檔案. 請謹慎處理."
+msgstr "你正在編輯一位用戶的檔案. 請謹慎處理."
#: mediagoblin/process_media/errors.py:44
msgid "Invalid file given for media type."
-msgstr ""
+msgstr "指定錯誤的媒體類別!"
#: mediagoblin/submit/forms.py:25
msgid "File"
msgstr "檔案"
+#: mediagoblin/submit/forms.py:30
+msgid "Description of this work"
+msgstr ""
+
#: mediagoblin/submit/views.py:47
msgid "You must provide a file."
msgstr "你必須提供一個檔案"
#: mediagoblin/submit/views.py:50
msgid "The file doesn't seem to be an image!"
-msgstr "檔案看起來不像是一個圖片喔!"
+msgstr "檔案似乎不是一個圖片喔!"
#: mediagoblin/submit/views.py:122
msgid "Woohoo! Submitted!"
-msgstr "喔耶! 送出去了!"
+msgstr "呼呼! 送出去嚕!"
#: mediagoblin/templates/mediagoblin/404.html:21
msgid "Oops!"
-msgstr ""
+msgstr "糟糕!"
#: mediagoblin/templates/mediagoblin/404.html:24
msgid "There doesn't seem to be a page at this address. Sorry!"
-msgstr ""
+msgstr "這個位址似乎沒有網頁。抱歉!"
#: mediagoblin/templates/mediagoblin/404.html:26
msgid ""
"If you're sure the address is correct, maybe the page you're looking for has"
" been moved or deleted."
-msgstr ""
+msgstr "如果你確定這個位址是正確的,或許你在找的網頁已經被移除或是刪除了。"
#: mediagoblin/templates/mediagoblin/404.html:32
msgid "Image of 404 goblin stressing out"
-msgstr ""
+msgstr "Image of 404 goblin stressing out"
#: mediagoblin/templates/mediagoblin/base.html:22
msgid "GNU MediaGoblin"
@@ -145,11 +159,11 @@ msgstr "GNU MediaGoblin"
#: mediagoblin/templates/mediagoblin/base.html:47
msgid "MediaGoblin logo"
-msgstr ""
+msgstr "MediaGoblin 標誌"
#: mediagoblin/templates/mediagoblin/base.html:52
msgid "Submit media"
-msgstr "送出媒體"
+msgstr "遞交媒體"
#: mediagoblin/templates/mediagoblin/base.html:63
msgid "verify your email!"
@@ -164,42 +178,42 @@ msgstr "登入"
#: mediagoblin/templates/mediagoblin/base.html:89
msgid ""
"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
-"href=\"http://gnu.org/\">GNU project</a>"
+"href=\"http://gnu.org/\">GNU</a> project"
msgstr ""
-"由 <a href=\"http://mediagoblin.org\">MediaGoblin</a> 製作, 她是一個 <a "
-"href=\"http://gnu.org/\">GNU project</a>"
+"由 <a href=\"http://mediagoblin.org\">MediaGoblin</a>製作, 它是一個 <a "
+"href=\"http://gnu.org/\">GNU</a> 專案"
#: mediagoblin/templates/mediagoblin/root.html:27
msgid "Hi there, media lover! MediaGoblin is..."
-msgstr ""
+msgstr "嗨!多媒體檔案愛好者!MediaGoblin是..."
#: mediagoblin/templates/mediagoblin/root.html:29
msgid "The perfect place for your media!"
-msgstr ""
+msgstr "你的媒體檔案的最佳所在!"
#: mediagoblin/templates/mediagoblin/root.html:30
msgid ""
"A place for people to collaborate and show off original and derived "
"creations!"
-msgstr ""
+msgstr "這是一個可以讓人們共同展示他們的創作、衍生作品的地方!"
#: mediagoblin/templates/mediagoblin/root.html:31
msgid ""
"Free, as in freedom. (We’re a <a href=\"http://gnu.org\">GNU</a> project, "
"after all.)"
-msgstr ""
+msgstr "免費但是我們更重視自由 (畢竟我們是個 <a href=\"http://gnu.org\">GNU</a> 專案)"
#: mediagoblin/templates/mediagoblin/root.html:32
msgid ""
"Aiming to make the world a better place through decentralization and "
"(eventually, coming soon!) federation!"
-msgstr ""
+msgstr "目的是要透過分散式且自由的方式讓這個世界更美好!(總有一天,它很快會到來的!)"
#: mediagoblin/templates/mediagoblin/root.html:33
msgid ""
"Built for extensibility. (Multiple media types coming soon to the software,"
" including video support!)"
-msgstr ""
+msgstr "天生的擴充性。(軟體將支援多種多媒體格式, 也支援影音檔案!)"
#: mediagoblin/templates/mediagoblin/root.html:34
msgid ""
@@ -207,10 +221,12 @@ msgid ""
"href=\"http://mediagoblin.org/pages/join.html\">You can help us improve this"
" software!</a>)"
msgstr ""
+"由像你一樣的人們製作 (<a "
+"href=\"http://mediagoblin.org/pages/join.html\">你可以幫我們改進軟體!</a>)"
#: mediagoblin/templates/mediagoblin/auth/login.html:29
msgid "Logging in failed!"
-msgstr ""
+msgstr "登入失敗!"
#: mediagoblin/templates/mediagoblin/auth/login.html:42
msgid "Don't have an account yet?"
@@ -226,7 +242,7 @@ msgstr "建立一個帳號!"
#: mediagoblin/templates/mediagoblin/auth/register.html:30
msgid "Create"
-msgstr ""
+msgstr "建立"
#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
#, python-format
@@ -250,6 +266,7 @@ msgid "Editing %(media_title)s"
msgstr "編輯 %(media_title)s 中"
#: mediagoblin/templates/mediagoblin/edit/edit.html:36
+#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:49
msgid "Cancel"
msgstr "取消"
@@ -265,11 +282,11 @@ msgstr "編輯 %(username)s'的檔案中"
#: mediagoblin/templates/mediagoblin/listings/tag.html:31
msgid "Media tagged with:"
-msgstr "媒體被標籤為:"
+msgstr "媒體檔案被標籤為:"
#: mediagoblin/templates/mediagoblin/submit/start.html:26
msgid "Submit yer media"
-msgstr "送出你的媒體檔案"
+msgstr "遞交你的媒體檔案"
#: mediagoblin/templates/mediagoblin/submit/start.html:29
msgid "Submit"
@@ -278,47 +295,56 @@ msgstr "送出"
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:32
#, python-format
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
-msgstr "<a href=\"%(user_url)s\">%(username)s</a>的媒體"
+msgstr "<a href=\"%(user_url)s\">%(username)s</a>的媒體檔案"
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:52
#: mediagoblin/templates/mediagoblin/user_pages/user.html:32
msgid "Sorry, no such user found."
-msgstr "抱歉, 找不到這個使用者."
+msgstr "抱歉,找不到這個使用者."
+
+#: 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/media_confirm_delete.html:50
+msgid "Delete Permanently"
+msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:22
msgid "Media processing panel"
-msgstr ""
+msgstr "媒體處理面板"
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:25
msgid ""
"You can track the state of media being processed for your gallery here."
-msgstr ""
+msgstr "針對你的展示區,你可以在這裡追蹤媒體處理的狀態。"
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:28
msgid "Media in-processing"
-msgstr ""
+msgstr "媒體處理中"
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:46
msgid "No media in-processing"
-msgstr ""
+msgstr "沒有正在處理中的媒體"
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:50
msgid "These uploads failed to process:"
-msgstr ""
+msgstr "無法處理這些更新"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:39
#: mediagoblin/templates/mediagoblin/user_pages/user.html:59
msgid "Email verification needed"
-msgstr ""
+msgstr "需要認證電子郵件"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:42
msgid "Almost done! Your account still needs to be activated."
-msgstr ""
+msgstr "幾乎完成了!但你的帳號仍然需要被啟用。"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:47
msgid ""
"An email should arrive in a few moments with instructions on how to do so."
-msgstr "很快的會有一封電子郵件告訴你如何做."
+msgstr "馬上會有一封電子郵件告訴你如何做."
#: mediagoblin/templates/mediagoblin/user_pages/user.html:51
msgid "In case it doesn't:"
@@ -326,13 +352,13 @@ msgstr "假設它無法:"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:54
msgid "Resend verification email"
-msgstr "重送認證郵件 "
+msgstr "重送認證信"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
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:68
#, python-format
@@ -348,7 +374,7 @@ msgstr "%(username)s的個人檔案"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:85
msgid "Here's a spot to tell others about yourself."
-msgstr ""
+msgstr "這是一個地方,能讓你向他人介紹自己。"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:90
#: mediagoblin/templates/mediagoblin/user_pages/user.html:108
@@ -357,7 +383,7 @@ msgstr "編輯個人檔案"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
msgid "This user hasn't filled in their profile (yet)."
-msgstr ""
+msgstr "這個使用者還沒(來得及)填寫個人檔案。"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:122
#, python-format
@@ -368,26 +394,42 @@ msgstr "查看%(username)s的全部媒體檔案"
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:141
msgid "Add media"
-msgstr ""
+msgstr "新增媒體檔案"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:147
msgid "There doesn't seem to be any media here yet..."
-msgstr ""
+msgstr "似乎還沒有任何的媒體檔案..."
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
msgid "feed icon"
-msgstr ""
+msgstr "feed圖示"
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
msgid "Atom feed"
+msgstr "Atom feed"
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:40
+msgid "Newer"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/pagination.html:46
+msgid "Older"
msgstr ""
#: mediagoblin/user_pages/forms.py:24
msgid "Comment"
+msgstr "評論"
+
+#: mediagoblin/user_pages/forms.py:30
+msgid "I am sure I want to delete this"
msgstr ""
+#: mediagoblin/user_pages/views.py:176
+msgid "You are about to delete another user's media. Proceed with caution."
+msgstr "你在刪除其他人的媒體檔案。請小心處理喔。"
+
diff --git a/mediagoblin/init/__init__.py b/mediagoblin/init/__init__.py
index 44f604b1..b7f52595 100644
--- a/mediagoblin/init/__init__.py
+++ b/mediagoblin/init/__init__.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
@@ -14,7 +14,10 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+from beaker.cache import CacheManager
+from beaker.util import parse_cache_config_options
import jinja2
+
from mediagoblin import staticdirect
from mediagoblin.init.config import (
read_mediagoblin_config, generate_validation_report)
@@ -135,3 +138,16 @@ 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 bfae954e..c58b1305 100644
--- a/mediagoblin/init/celery/__init__.py
+++ b/mediagoblin/init/celery/__init__.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/init/celery/from_celery.py b/mediagoblin/init/celery/from_celery.py
index c053591b..3e5adb98 100644
--- a/mediagoblin/init/celery/from_celery.py
+++ b/mediagoblin/init/celery/from_celery.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/init/celery/from_tests.py b/mediagoblin/init/celery/from_tests.py
index b2293e2c..059d829f 100644
--- a/mediagoblin/init/celery/from_tests.py
+++ b/mediagoblin/init/celery/from_tests.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/init/config.py b/mediagoblin/init/config.py
index 2f93d32c..029a0956 100644
--- a/mediagoblin/init/config.py
+++ b/mediagoblin/init/config.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/listings/__init__.py b/mediagoblin/listings/__init__.py
index fbccb9b8..0c53acf5 100644
--- a/mediagoblin/listings/__init__.py
+++ b/mediagoblin/listings/__init__.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/listings/routing.py b/mediagoblin/listings/routing.py
index 61dd5210..b72bd015 100644
--- a/mediagoblin/listings/routing.py
+++ b/mediagoblin/listings/routing.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/listings/views.py b/mediagoblin/listings/views.py
index aade7e64..b3384eb4 100644
--- a/mediagoblin/listings/views.py
+++ b/mediagoblin/listings/views.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/messages.py b/mediagoblin/messages.py
index afe6ee7e..dc82fbf6 100644
--- a/mediagoblin/messages.py
+++ b/mediagoblin/messages.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/mg_globals.py b/mediagoblin/mg_globals.py
index 80ff5ead..2d304111 100644
--- a/mediagoblin/mg_globals.py
+++ b/mediagoblin/mg_globals.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
@@ -31,6 +31,9 @@ db_connection = None
# mongokit.Connection
database = None
+# beaker's cache manager
+cache = None
+
# should be the same as the
public_store = None
queue_store = None
diff --git a/mediagoblin/middleware/__init__.py b/mediagoblin/middleware/__init__.py
new file mode 100644
index 00000000..586debbf
--- /dev/null
+++ b/mediagoblin/middleware/__init__.py
@@ -0,0 +1,19 @@
+# GNU MediaGoblin -- federated, autonomous media hosting
+# Copyright (C) 2011 MediaGoblin contributors. See AUTHORS.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+ENABLED_MIDDLEWARE = (
+ 'mediagoblin.middleware.noop:NoOpMiddleware',
+ )
diff --git a/mediagoblin/middleware/noop.py b/mediagoblin/middleware/noop.py
new file mode 100644
index 00000000..28380232
--- /dev/null
+++ b/mediagoblin/middleware/noop.py
@@ -0,0 +1,26 @@
+# GNU MediaGoblin -- federated, autonomous media hosting
+# Copyright (C) 2011 MediaGoblin contributors. See AUTHORS.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+class NoOpMiddleware(object):
+
+ def __init__(self, mg_app):
+ self.app = mg_app
+
+ def process_request(self, request):
+ pass
+
+ def process_response(self, request, response):
+ pass
diff --git a/mediagoblin/process_media/__init__.py b/mediagoblin/process_media/__init__.py
index e1289a4c..2b9eed6e 100644
--- a/mediagoblin/process_media/__init__.py
+++ b/mediagoblin/process_media/__init__.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
@@ -16,7 +16,6 @@
import Image
-from contextlib import contextmanager
from celery.task import Task
from celery import registry
@@ -36,14 +35,6 @@ def create_pub_filepath(entry, filename):
filename])
-@contextmanager
-def closing(callback):
- try:
- yield callback
- finally:
- pass
-
-
################################
# Media processing initial steps
################################
@@ -66,7 +57,7 @@ class ProcessMedia(Task):
except BaseProcessingFail, exc:
mark_entry_failed(entry[u'_id'], exc)
return
-
+
entry['state'] = u'processed'
entry.save()
@@ -142,9 +133,9 @@ def process_image(entry):
thumb = thumb.convert("RGB")
thumb_filepath = create_pub_filepath(entry, 'thumbnail.jpg')
-
thumb_file = mgg.public_store.get_file(thumb_filepath, 'w')
- with closing(thumb_file):
+
+ with thumb_file:
thumb.save(thumb_file, "JPEG", quality=90)
# If the size of the original file exceeds the specified size of a `medium`
@@ -160,9 +151,9 @@ def process_image(entry):
medium = medium.convert("RGB")
medium_filepath = create_pub_filepath(entry, 'medium.jpg')
-
medium_file = mgg.public_store.get_file(medium_filepath, 'w')
- with closing(medium_file):
+
+ with medium_file:
medium.save(medium_file, "JPEG", quality=90)
medium_processed = True
@@ -172,8 +163,8 @@ def process_image(entry):
with queued_file:
original_filepath = create_pub_filepath(entry, queued_filepath[-1])
-
- with closing(mgg.public_store.get_file(original_filepath, 'wb')) as original_file:
+
+ with mgg.public_store.get_file(original_filepath, 'wb') as original_file:
original_file.write(queued_file.read())
mgg.queue_store.delete_file(queued_filepath)
diff --git a/mediagoblin/process_media/errors.py b/mediagoblin/process_media/errors.py
index f8ae9ab2..156f0a01 100644
--- a/mediagoblin/process_media/errors.py
+++ b/mediagoblin/process_media/errors.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/routing.py b/mediagoblin/routing.py
index 1340da60..ae56f8cb 100644
--- a/mediagoblin/routing.py
+++ b/mediagoblin/routing.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/static/css/base.css b/mediagoblin/static/css/base.css
index 1852b70c..d1b891ac 100644
--- a/mediagoblin/static/css/base.css
+++ b/mediagoblin/static/css/base.css
@@ -114,6 +114,8 @@ a.mediagoblin_logo{
text-decoration: none;
border: medium none;
font-style: normal;
+ font-weight: bold;
+ font-size: 1em;
}
.header_submit_highlight{
@@ -139,7 +141,7 @@ background-image: -moz-linear-gradient(center top , rgb(134, 212, 177), rgb(109,
/* common website elements */
-.button {
+.button, .cancel_link {
height: 32px;
min-width: 99px;
background-color: #86d4b1;
@@ -158,8 +160,19 @@ background-image: -moz-linear-gradient(center top , rgb(134, 212, 177), rgb(109,
padding-left: 11px;
padding-right: 11px;
text-decoration: none;
- font-family:'Lato', sans-serif;
- font-size:1em;
+ font-family: 'Lato', sans-serif;
+ font-size: 1.2em;
+ font-weight: bold;
+}
+
+.cancel_link {
+ background-color: #aaa;
+ background-image: -webkit-gradient(linear, left top, left bottom, from(##D2D2D2), to(#aaa));
+ background-image: -webkit-linear-gradient(top, #D2D2D2, #aaa);
+ background-image: -moz-linear-gradient(top, #D2D2D2, #aaa);
+ background-image: -ms-linear-gradient(top, #D2D2D2, #aaa);
+ background-image: -o-linear-gradient(top, #D2D2D2, #aaa);
+ background-image: linear-gradient(top, #D2D2D2, #aaa);
}
.pagination{
@@ -208,6 +221,14 @@ text-align: center;
margin-bottom: 4px;
}
+.form_field_label {
+ font-size:1.125em;
+}
+
+.form_field_description {
+ font-style: italic;
+}
+
.form_field_error {
background-color: #87453b;
color: #fff;
@@ -344,3 +365,11 @@ table.media_panel th {
font-weight: bold;
padding-bottom: 4px;
}
+
+
+/* Delete panel */
+
+.delete_checkbox_box {
+ margin-top: 10px;
+ margin-left: 10px;
+} \ No newline at end of file
diff --git a/mediagoblin/staticdirect.py b/mediagoblin/staticdirect.py
index 49681c22..58175881 100644
--- a/mediagoblin/staticdirect.py
+++ b/mediagoblin/staticdirect.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/storage.py b/mediagoblin/storage.py
index 7ada95e1..f9563031 100644
--- a/mediagoblin/storage.py
+++ b/mediagoblin/storage.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
@@ -19,6 +19,8 @@ import shutil
import urlparse
import uuid
import cloudfiles
+import mimetypes
+import tempfile
from werkzeug.utils import secure_filename
@@ -226,6 +228,10 @@ class BasicFileStorage(StorageInterface):
return self._resolve_filepath(filepath)
+# ----------------------------------------------------
+# OpenStack/Rackspace Cloud's Swift/CloudFiles support
+# ----------------------------------------------------
+
class CloudFilesStorage(StorageInterface):
def __init__(self, **kwargs):
self.param_container = kwargs.get('cloudfiles_container')
@@ -268,7 +274,10 @@ class CloudFilesStorage(StorageInterface):
except cloudfiles.errors.NoSuchObject:
return False
- def get_file(self, filepath, mode='r'):
+ def get_file(self, filepath, *args, **kwargs):
+ """
+ - Doesn't care about the "mode" argument
+ """
try:
obj = self.container.get_object(
self._resolve_filepath(filepath))
@@ -276,12 +285,19 @@ class CloudFilesStorage(StorageInterface):
obj = self.container.create_object(
self._resolve_filepath(filepath))
- return obj
+ mimetype = mimetypes.guess_type(
+ filepath[-1])
+
+ if mimetype:
+ obj.content_type = mimetype[0]
+
+ return CloudFilesStorageObjectWrapper(obj, *args, **kwargs)
def delete_file(self, filepath):
# TODO: Also delete unused directories if empty (safely, with
# checks to avoid race conditions).
- self.container.delete_object(filepath)
+ self.container.delete_object(
+ self._resolve_filepath(filepath))
def file_url(self, filepath):
return '/'.join([
@@ -289,6 +305,60 @@ class CloudFilesStorage(StorageInterface):
self._resolve_filepath(filepath)])
+class CloudFilesStorageObjectWrapper():
+ """
+ Wrapper for python-cloudfiles's cloudfiles.storage_object.Object
+ used to circumvent the mystic `medium.jpg` corruption issue, where
+ we had both python-cloudfiles and PIL doing buffering on both
+ ends and that breaking things.
+
+ This wrapper currently meets mediagoblin's needs for a public_store
+ file-like object.
+ """
+ def __init__(self, storage_object, *args, **kwargs):
+ self.storage_object = storage_object
+
+ def read(self, *args, **kwargs):
+ return self.storage_object.read(*args, **kwargs)
+
+ def write(self, data, *args, **kwargs):
+ """
+ write data to the cloudfiles storage object
+
+ The original motivation for this wrapper is to ensure
+ that buffered writing to a cloudfiles storage object does not overwrite
+ any preexisting data.
+
+ Currently this method does not support any write modes except "append".
+ However if we should need it it would be easy implement.
+ """
+ if self.storage_object.size and type(data) == str:
+ data = self.read() + data
+
+ self.storage_object.write(data, *args, **kwargs)
+
+ def close(self):
+ pass
+
+ def __enter__(self):
+ """
+ Context Manager API implementation
+ http://docs.python.org/library/stdtypes.html#context-manager-types
+ """
+ return self
+
+ def __exit__(self, *exc_info):
+ """
+ Context Manger API implementation
+ see self.__enter__()
+ """
+ self.close()
+
+
+# ------------
+# MountStorage
+# ------------
+
class MountStorage(StorageInterface):
"""
Experimental "Mount" virtual Storage Interface
diff --git a/mediagoblin/submit/__init__.py b/mediagoblin/submit/__init__.py
index a8eeb5ed..576bd0f5 100644
--- a/mediagoblin/submit/__init__.py
+++ b/mediagoblin/submit/__init__.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/submit/forms.py b/mediagoblin/submit/forms.py
index 4519b057..a999c714 100644
--- a/mediagoblin/submit/forms.py
+++ b/mediagoblin/submit/forms.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
@@ -26,7 +26,8 @@ class SubmitStartForm(wtforms.Form):
title = wtforms.TextField(
_('Title'),
[wtforms.validators.Length(min=0, max=500)])
- description = wtforms.TextAreaField('Description of this work')
+ description = wtforms.TextAreaField(
+ _('Description of this work'))
tags = wtforms.TextField(
_('Tags'),
[tag_length_validator])
diff --git a/mediagoblin/submit/routing.py b/mediagoblin/submit/routing.py
index 5585ecb0..03e01f45 100644
--- a/mediagoblin/submit/routing.py
+++ b/mediagoblin/submit/routing.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/submit/security.py b/mediagoblin/submit/security.py
index b2cb6d88..9d62a36e 100644
--- a/mediagoblin/submit/security.py
+++ b/mediagoblin/submit/security.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/submit/views.py b/mediagoblin/submit/views.py
index 4481adeb..e24d78f3 100644
--- a/mediagoblin/submit/views.py
+++ b/mediagoblin/submit/views.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
@@ -55,10 +55,10 @@ def submit_start(request):
entry = request.db.MediaEntry()
entry['_id'] = ObjectId()
entry['title'] = (
- request.POST['title']
+ unicode(request.POST['title'])
or unicode(splitext(filename)[0]))
- entry['description'] = request.POST.get('description')
+ entry['description'] = unicode(request.POST.get('description'))
entry['description_html'] = cleaned_markdown_conversion(
entry['description'])
diff --git a/mediagoblin/templates/mediagoblin/404.html b/mediagoblin/templates/mediagoblin/404.html
index 5af46a87..7db68941 100644
--- a/mediagoblin/templates/mediagoblin/404.html
+++ b/mediagoblin/templates/mediagoblin/404.html
@@ -1,6 +1,6 @@
{#
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/templates/mediagoblin/auth/login.html b/mediagoblin/templates/mediagoblin/auth/login.html
index 87963267..3926a1df 100644
--- a/mediagoblin/templates/mediagoblin/auth/login.html
+++ b/mediagoblin/templates/mediagoblin/auth/login.html
@@ -1,6 +1,6 @@
{#
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/templates/mediagoblin/auth/register.html b/mediagoblin/templates/mediagoblin/auth/register.html
index d9eedc4a..e72b3a52 100644
--- a/mediagoblin/templates/mediagoblin/auth/register.html
+++ b/mediagoblin/templates/mediagoblin/auth/register.html
@@ -1,6 +1,6 @@
{#
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/templates/mediagoblin/auth/verification_email.txt b/mediagoblin/templates/mediagoblin/auth/verification_email.txt
index 32053101..c54ca353 100644
--- a/mediagoblin/templates/mediagoblin/auth/verification_email.txt
+++ b/mediagoblin/templates/mediagoblin/auth/verification_email.txt
@@ -1,6 +1,6 @@
{#
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/templates/mediagoblin/base.html b/mediagoblin/templates/mediagoblin/base.html
index 32d5a5d2..b4c4dcf3 100644
--- a/mediagoblin/templates/mediagoblin/base.html
+++ b/mediagoblin/templates/mediagoblin/base.html
@@ -1,6 +1,6 @@
{#
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
@@ -87,7 +87,7 @@
<div class="container_16">
<div class="grid_16 mediagoblin_footer">
{% trans -%}
- Powered by <a href="http://mediagoblin.org">MediaGoblin</a>, a <a href="http://gnu.org/">GNU project</a>
+ Powered by <a href="http://mediagoblin.org">MediaGoblin</a>, a <a href="http://gnu.org/">GNU</a> project
{%- endtrans %}
</div>
</div>
diff --git a/mediagoblin/templates/mediagoblin/edit/attachments.html b/mediagoblin/templates/mediagoblin/edit/attachments.html
index 2f319dbb..63b06581 100644
--- a/mediagoblin/templates/mediagoblin/edit/attachments.html
+++ b/mediagoblin/templates/mediagoblin/edit/attachments.html
@@ -1,6 +1,6 @@
{#
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/templates/mediagoblin/edit/edit.html b/mediagoblin/templates/mediagoblin/edit/edit.html
index 3dc170c8..8c4e2efb 100644
--- a/mediagoblin/templates/mediagoblin/edit/edit.html
+++ b/mediagoblin/templates/mediagoblin/edit/edit.html
@@ -1,6 +1,6 @@
{#
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/templates/mediagoblin/edit/edit_profile.html b/mediagoblin/templates/mediagoblin/edit/edit_profile.html
index bed5e0ca..464c663d 100644
--- a/mediagoblin/templates/mediagoblin/edit/edit_profile.html
+++ b/mediagoblin/templates/mediagoblin/edit/edit_profile.html
@@ -1,6 +1,6 @@
{#
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/templates/mediagoblin/listings/tag.html b/mediagoblin/templates/mediagoblin/listings/tag.html
index 289f44b8..58863015 100644
--- a/mediagoblin/templates/mediagoblin/listings/tag.html
+++ b/mediagoblin/templates/mediagoblin/listings/tag.html
@@ -1,6 +1,6 @@
{#
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/templates/mediagoblin/root.html b/mediagoblin/templates/mediagoblin/root.html
index 086c99c4..ed4878a5 100644
--- a/mediagoblin/templates/mediagoblin/root.html
+++ b/mediagoblin/templates/mediagoblin/root.html
@@ -1,6 +1,6 @@
{#
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
@@ -35,7 +35,7 @@
</ul>
{% if allow_registration %}
- <p>Excited to join us? To add your own media, make collections and save favorites...<p>
+ <p>Excited to join us?<p>
<a class="header_submit_highlight" href="{{ request.urlgen('mediagoblin.auth.register') }}">Create a free account</a> or
<a class="header_submit" href="http://wiki.mediagoblin.org/HackingHowto">Set up MediaGoblin on your own server</a>
{% endif %}
diff --git a/mediagoblin/templates/mediagoblin/submit/start.html b/mediagoblin/templates/mediagoblin/submit/start.html
index 3a40850d..f2e844df 100644
--- a/mediagoblin/templates/mediagoblin/submit/start.html
+++ b/mediagoblin/templates/mediagoblin/submit/start.html
@@ -1,6 +1,6 @@
{#
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/templates/mediagoblin/test_submit.html b/mediagoblin/templates/mediagoblin/test_submit.html
index 5bf8c317..78b88ae8 100644
--- a/mediagoblin/templates/mediagoblin/test_submit.html
+++ b/mediagoblin/templates/mediagoblin/test_submit.html
@@ -1,6 +1,6 @@
{#
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/templates/mediagoblin/user_pages/gallery.html b/mediagoblin/templates/mediagoblin/user_pages/gallery.html
index 3a3d2373..df931d9c 100644
--- a/mediagoblin/templates/mediagoblin/user_pages/gallery.html
+++ b/mediagoblin/templates/mediagoblin/user_pages/gallery.html
@@ -1,6 +1,6 @@
{#
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/templates/mediagoblin/user_pages/media.html b/mediagoblin/templates/mediagoblin/user_pages/media.html
index 0425500e..442bef6d 100644
--- a/mediagoblin/templates/mediagoblin/user_pages/media.html
+++ b/mediagoblin/templates/mediagoblin/user_pages/media.html
@@ -1,6 +1,6 @@
{#
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
@@ -121,15 +121,22 @@
request.user['is_admin'] %}
<h3>Temporary button holder</h3>
<p>
- <a href="{{ request.urlgen('mediagoblin.edit.edit_media',
+ {% set edit_url = request.urlgen('mediagoblin.edit.edit_media',
user= media.uploader().username,
- media= media._id) }}"
+ media= media._id) %}
+ <a href="{{ edit_url }}"
><img src="{{ request.staticdirect('/images/icon_edit.png') }}"
- class="media_icon" />edit</a>
+ class="media_icon" /></a>
+ <a href="{{ edit_url }}">{% trans %}edit{% endtrans %}</a>
</p>
<p>
- <img src="{{ request.staticdirect('/images/icon_delete.png') }}"
- class="media_icon" />{% trans %}delete{% endtrans %}
+ {% set delete_url = request.urlgen('mediagoblin.user_pages.media_confirm_delete',
+ user= media.uploader().username,
+ media= media._id) %}
+ <a href="{{ delete_url }}"
+ ><img src="{{ request.staticdirect('/images/icon_delete.png') }}"
+ class="media_icon" /></a>
+ <a href="{{ delete_url }}">{% trans %}delete{% endtrans %}</a>
</p>
{% endif %}
diff --git a/mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html b/mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html
new file mode 100644
index 00000000..01323a6e
--- /dev/null
+++ b/mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html
@@ -0,0 +1,54 @@
+{#
+# GNU MediaGoblin -- federated, autonomous media hosting
+# Copyright (C) 2011 MediaGoblin contributors. See AUTHORS.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#}
+{% extends "mediagoblin/base.html" %}
+
+{% import "/mediagoblin/utils/wtforms.html" as wtforms_util %}
+
+{% block mediagoblin_content %}
+
+ <form action="{{ request.urlgen('mediagoblin.user_pages.media_confirm_delete',
+ user=media.uploader().username,
+ media=media._id) }}"
+ method="POST" enctype="multipart/form-data">
+ <div class="grid_8 prefix_1 suffix_1 edit_box form_box">
+ <h1>
+ {%- trans title=media['title'] -%}
+ Really delete {{ title }}?
+ {%- endtrans %}
+ </h1>
+
+ <div style="text-align: center;" >
+ <img src="{{ request.app.public_store.file_url(
+ media['media_files']['thumb']) }}" />
+ </div>
+
+ <br />
+
+ <p class="delete_checkbox_box">
+ {{ form.confirm }}
+ {{ _(form.confirm.label.text) }}
+ </p>
+
+ <div class="form_submit_buttons">
+ {# TODO: This isn't a button really... might do unexpected things :) #}
+ <a class="cancel_link" href="{{ media.url_for_self(request.urlgen) }}">{% trans %}Cancel{% endtrans %}</a>
+ <input type="submit" value="{% trans %}Delete Permanently{% endtrans %}" class="button" />
+ </div>
+ </div>
+ </form>
+{% endblock %}
diff --git a/mediagoblin/templates/mediagoblin/user_pages/processing_panel.html b/mediagoblin/templates/mediagoblin/user_pages/processing_panel.html
index abc7efd3..9b4adeb5 100644
--- a/mediagoblin/templates/mediagoblin/user_pages/processing_panel.html
+++ b/mediagoblin/templates/mediagoblin/user_pages/processing_panel.html
@@ -1,6 +1,6 @@
{#
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/templates/mediagoblin/user_pages/user.html b/mediagoblin/templates/mediagoblin/user_pages/user.html
index e7fd9692..c5beeaaa 100644
--- a/mediagoblin/templates/mediagoblin/user_pages/user.html
+++ b/mediagoblin/templates/mediagoblin/user_pages/user.html
@@ -1,6 +1,6 @@
{#
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/templates/mediagoblin/utils/feed_link.html b/mediagoblin/templates/mediagoblin/utils/feed_link.html
index c4036bf3..3afcc844 100644
--- a/mediagoblin/templates/mediagoblin/utils/feed_link.html
+++ b/mediagoblin/templates/mediagoblin/utils/feed_link.html
@@ -1,6 +1,6 @@
{#
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/templates/mediagoblin/utils/messages.html b/mediagoblin/templates/mediagoblin/utils/messages.html
index a8d9c37e..9d4dc58a 100644
--- a/mediagoblin/templates/mediagoblin/utils/messages.html
+++ b/mediagoblin/templates/mediagoblin/utils/messages.html
@@ -1,6 +1,6 @@
{#
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/templates/mediagoblin/utils/object_gallery.html b/mediagoblin/templates/mediagoblin/utils/object_gallery.html
index 34eb7dbc..e1b8cc9b 100644
--- a/mediagoblin/templates/mediagoblin/utils/object_gallery.html
+++ b/mediagoblin/templates/mediagoblin/utils/object_gallery.html
@@ -1,6 +1,6 @@
{#
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/templates/mediagoblin/utils/pagination.html b/mediagoblin/templates/mediagoblin/utils/pagination.html
index 23d49463..87e15e0f 100644
--- a/mediagoblin/templates/mediagoblin/utils/pagination.html
+++ b/mediagoblin/templates/mediagoblin/utils/pagination.html
@@ -1,5 +1,6 @@
-{# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+{#
+# GNU MediaGoblin -- federated, autonomous media hosting
+# Copyright (C) 2011 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
@@ -32,15 +33,18 @@
<div class="pagination">
<p>
{% if pagination.has_prev %}
- <a href="{{ pagination.get_page_url_explicit(
- base_url, get_params,
- pagination.page - 1) }}"><img class="pagination_arrow" src="/mgoblin_static/images/pagination_left.png" alt="Previous page" />Newer</a>
+ {% set prev_url = pagination.get_page_url_explicit(
+ base_url, get_params,
+ pagination.page - 1) %}
+ <a href="{{ prev_url }}"><img class="pagination_arrow" src="/mgoblin_static/images/pagination_left.png" alt="Previous page" /></a>
+ <a href="{{ prev_url }}">{% trans %}Newer{% endtrans %}</a>
{% endif %}
{% if pagination.has_next %}
- <a href="{{ pagination.get_page_url_explicit(
- base_url, get_params,
- pagination.page + 1) }}">Older<img class="pagination_arrow" src="/mgoblin_static/images/pagination_right.png" alt="Next page" />
- </a>
+ {% set next_url = pagination.get_page_url_explicit(
+ base_url, get_params,
+ pagination.page + 1) %}
+ <a href="{{ next_url }}">{% trans %}Older{% endtrans %}</a>
+ <a href="{{ next_url }}"><img class="pagination_arrow" src="/mgoblin_static/images/pagination_right.png" alt="Next page" /></a>
{% endif %}
<br />
Go to page:
diff --git a/mediagoblin/templates/mediagoblin/utils/prev_next.html b/mediagoblin/templates/mediagoblin/utils/prev_next.html
index 7cf8d2a4..74f855ed 100644
--- a/mediagoblin/templates/mediagoblin/utils/prev_next.html
+++ b/mediagoblin/templates/mediagoblin/utils/prev_next.html
@@ -1,6 +1,6 @@
{#
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
@@ -20,27 +20,29 @@
{% set prev_entry_url = media.url_to_prev(request.urlgen) %}
{% set next_entry_url = media.url_to_next(request.urlgen) %}
-<div>
- {# There are no previous entries for the very first media entry #}
- {% if prev_entry_url %}
- <a class="navigation_button navigation_left" href="{{ prev_entry_url }}">
- <img src="/mgoblin_static/images/navigation_left.png" alt="Previous image" />
- </a>
- {% else %}
- {# This is the first entry. display greyed-out 'previous' image #}
- <p class="navigation_button navigation_left">
- <img src="/mgoblin_static/images/navigation_end.png" alt="No previous images" />
- </p>
- {% endif %}
- {# Likewise, this could be the very last media entry #}
- {% if next_entry_url %}
- <a class="navigation_button" href="{{ next_entry_url }}">
- <img src="/mgoblin_static/images/navigation_right.png" alt="Next image" />
- </a>
- {% else %}
- {# This is the last entry. display greyed-out 'next' image #}
- <p class="navigation_button">
- <img src="/mgoblin_static/images/navigation_end.png" alt="No following images" />
- </p>
- {% endif %}
-</div>
+{% if prev_entry_url or next_entry_url %}
+ <div class="grid_5 alpha omega">
+ {# There are no previous entries for the very first media entry #}
+ {% if prev_entry_url %}
+ <a class="navigation_button navigation_left" href="{{ prev_entry_url }}">
+ <img src="/mgoblin_static/images/navigation_left.png" alt="Previous image" />
+ </a>
+ {% else %}
+ {# This is the first entry. display greyed-out 'previous' image #}
+ <p class="navigation_button navigation_left">
+ <img src="/mgoblin_static/images/navigation_end.png" alt="No previous images" />
+ </p>
+ {% endif %}
+ {# Likewise, this could be the very last media entry #}
+ {% if next_entry_url %}
+ <a class="navigation_button" href="{{ next_entry_url }}">
+ <img src="/mgoblin_static/images/navigation_right.png" alt="Next image" />
+ </a>
+ {% else %}
+ {# This is the last entry. display greyed-out 'next' image #}
+ <p class="navigation_button">
+ <img src="/mgoblin_static/images/navigation_end.png" alt="No following images" />
+ </p>
+ {% endif %}
+ </div>
+{% endif %}
diff --git a/mediagoblin/templates/mediagoblin/utils/profile.html b/mediagoblin/templates/mediagoblin/utils/profile.html
index 63024b77..9a134e5f 100644
--- a/mediagoblin/templates/mediagoblin/utils/profile.html
+++ b/mediagoblin/templates/mediagoblin/utils/profile.html
@@ -1,6 +1,6 @@
{#
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/templates/mediagoblin/utils/tags.html b/mediagoblin/templates/mediagoblin/utils/tags.html
index 32db6e31..87e6a85f 100644
--- a/mediagoblin/templates/mediagoblin/utils/tags.html
+++ b/mediagoblin/templates/mediagoblin/utils/tags.html
@@ -1,6 +1,6 @@
{#
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/templates/mediagoblin/utils/wtforms.html b/mediagoblin/templates/mediagoblin/utils/wtforms.html
index 2639522a..6a86fd24 100644
--- a/mediagoblin/templates/mediagoblin/utils/wtforms.html
+++ b/mediagoblin/templates/mediagoblin/utils/wtforms.html
@@ -1,6 +1,6 @@
{#
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
@@ -20,9 +20,6 @@
{% macro render_field_div(field) %}
<div class="form_field_box">
<div class="form_field_label">{{ _(field.label.text) }}</div>
- {% if field.description -%}
- <div class="form_field_description">{{ _(field.description) }}</div>
- {%- endif %}
<div class="form_field_input">{{ field }}</div>
{%- if field.errors -%}
{% for error in field.errors %}
@@ -31,6 +28,9 @@
</div>
{% endfor %}
{%- endif %}
+ {% if field.description -%}
+ <div class="form_field_description">{{ _(field.description) }}</div>
+ {%- endif %}
</div>
{%- endmacro %}
diff --git a/mediagoblin/tests/__init__.py b/mediagoblin/tests/__init__.py
index adb6a1b3..eac3dff4 100644
--- a/mediagoblin/tests/__init__.py
+++ b/mediagoblin/tests/__init__.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/tests/fake_celery_module.py b/mediagoblin/tests/fake_celery_module.py
index c129cbf8..ba347c69 100644
--- a/mediagoblin/tests/fake_celery_module.py
+++ b/mediagoblin/tests/fake_celery_module.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/tests/test_auth.py b/mediagoblin/tests/test_auth.py
index ec60b259..fbbe1613 100644
--- a/mediagoblin/tests/test_auth.py
+++ b/mediagoblin/tests/test_auth.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/tests/test_cache.py b/mediagoblin/tests/test_cache.py
new file mode 100644
index 00000000..cbffeb84
--- /dev/null
+++ b/mediagoblin/tests/test_cache.py
@@ -0,0 +1,52 @@
+# GNU MediaGoblin -- federated, autonomous media hosting
+# Copyright (C) 2011 Free Software Foundation, Inc
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+
+from mediagoblin.tests.tools import setup_fresh_app
+from mediagoblin import mg_globals
+
+
+DATA_TO_CACHE = {
+ 'herp': 'derp',
+ 'lol': 'cats'}
+
+
+def _get_some_data(key):
+ """
+ Stuid function that makes use of some caching.
+ """
+ some_data_cache = mg_globals.cache.get_cache('sum_data')
+ if some_data_cache.has_key(key):
+ return some_data_cache.get(key)
+
+ value = DATA_TO_CACHE.get(key)
+ some_data_cache.put(key, value)
+ return value
+
+
+@setup_fresh_app
+def test_cache_working(test_app):
+ some_data_cache = mg_globals.cache.get_cache('sum_data')
+ assert not some_data_cache.has_key('herp')
+ assert _get_some_data('herp') == 'derp'
+ assert some_data_cache.get('herp') == 'derp'
+ # should get the same value again
+ assert _get_some_data('herp') == 'derp'
+
+ # now we force-change it, but the function should use the cached
+ # version
+ some_data_cache.put('herp', 'pred')
+ assert _get_some_data('herp') == 'pred'
diff --git a/mediagoblin/tests/test_celery_setup.py b/mediagoblin/tests/test_celery_setup.py
index b80cab49..348a4357 100644
--- a/mediagoblin/tests/test_celery_setup.py
+++ b/mediagoblin/tests/test_celery_setup.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/tests/test_config.py b/mediagoblin/tests/test_config.py
index f9f12072..0764e12d 100644
--- a/mediagoblin/tests/test_config.py
+++ b/mediagoblin/tests/test_config.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/tests/test_globals.py b/mediagoblin/tests/test_globals.py
index 63578d62..84f1c74a 100644
--- a/mediagoblin/tests/test_globals.py
+++ b/mediagoblin/tests/test_globals.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/tests/test_messages.py b/mediagoblin/tests/test_messages.py
index 4cd9381a..9c57a151 100644
--- a/mediagoblin/tests/test_messages.py
+++ b/mediagoblin/tests/test_messages.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/tests/test_mgoblin_app.ini b/mediagoblin/tests/test_mgoblin_app.ini
index 9d938b4f..ab32cccc 100644
--- a/mediagoblin/tests/test_mgoblin_app.ini
+++ b/mediagoblin/tests/test_mgoblin_app.ini
@@ -19,5 +19,9 @@ base_url = /mgoblin_media/
[storage:queuestore]
base_dir = %(here)s/test_user_dev/media/queue
+[beaker.cache]
+data_dir = %(here)s/test_user_dev/beaker/cache/data
+lock_dir = %(here)s/test_user_dev/beaker/cache/lock
+
[celery]
celery_always_eager = true
diff --git a/mediagoblin/tests/test_migrations.py b/mediagoblin/tests/test_migrations.py
index c100a26a..fc2449f7 100644
--- a/mediagoblin/tests/test_migrations.py
+++ b/mediagoblin/tests/test_migrations.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/tests/test_storage.py b/mediagoblin/tests/test_storage.py
index 45cb35c1..9c96f6ca 100644
--- a/mediagoblin/tests/test_storage.py
+++ b/mediagoblin/tests/test_storage.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/tests/test_submission.py b/mediagoblin/tests/test_submission.py
index 9ae129cd..007c0348 100644
--- a/mediagoblin/tests/test_submission.py
+++ b/mediagoblin/tests/test_submission.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
@@ -17,7 +17,7 @@
import urlparse
import pkg_resources
-from nose.tools import assert_equal
+from nose.tools import assert_equal, assert_true, assert_false
from mediagoblin.auth import lib as auth_lib
from mediagoblin.tests.tools import setup_fresh_app, get_test_app
@@ -53,6 +53,8 @@ class TestSubmission:
test_user['pw_hash'] = auth_lib.bcrypt_gen_password_hash('toast')
test_user.save()
+ self.test_user = test_user
+
self.test_app.post(
'/auth/login/', {
'username': u'chris',
@@ -150,6 +152,64 @@ class TestSubmission:
u'Tags must be shorter than 50 characters. Tags that are too long'\
': ffffffffffffffffffffffffffuuuuuuuuuuuuuuuuuuuuuuuuuu']
+ def test_delete(self):
+ util.clear_test_template_context()
+ response = self.test_app.post(
+ '/submit/', {
+ 'title': 'Balanced Goblin',
+ }, upload_files=[(
+ 'file', GOOD_JPG)])
+
+ # Post image
+ response.follow()
+
+ request = util.TEMPLATE_TEST_CONTEXT[
+ 'mediagoblin/user_pages/user.html']['request']
+
+ media = request.db.MediaEntry.find({'title': 'Balanced Goblin'})[0]
+
+ # Does media entry exist?
+ assert_true(media)
+
+ # Do not confirm deletion
+ # ---------------------------------------------------
+ response = self.test_app.post(
+ request.urlgen('mediagoblin.user_pages.media_confirm_delete',
+ # No work: user=media.uploader().username,
+ user=self.test_user['username'],
+ media=media['_id']),
+ # no value means no confirm
+ {})
+
+ response.follow()
+
+ request = util.TEMPLATE_TEST_CONTEXT[
+ 'mediagoblin/user_pages/user.html']['request']
+
+ media = request.db.MediaEntry.find({'title': 'Balanced Goblin'})[0]
+
+ # Does media entry still exist?
+ assert_true(media)
+
+ # Confirm deletion
+ # ---------------------------------------------------
+ response = self.test_app.post(
+ request.urlgen('mediagoblin.user_pages.media_confirm_delete',
+ # No work: user=media.uploader().username,
+ user=self.test_user['username'],
+ media=media['_id']),
+ {'confirm': 'y'})
+
+ response.follow()
+
+ request = util.TEMPLATE_TEST_CONTEXT[
+ 'mediagoblin/user_pages/user.html']['request']
+
+ # Does media entry still exist?
+ assert_false(
+ request.db.MediaEntry.find(
+ {'_id': media['_id']}).count())
+
def test_malicious_uploads(self):
# Test non-suppoerted file with non-supported extension
# -----------------------------------------------------
diff --git a/mediagoblin/tests/test_tags.py b/mediagoblin/tests/test_tags.py
index c2e9fa2b..d4628795 100644
--- a/mediagoblin/tests/test_tags.py
+++ b/mediagoblin/tests/test_tags.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/tests/test_tests.py b/mediagoblin/tests/test_tests.py
index 8ac7f0a4..bc5f9a8d 100644
--- a/mediagoblin/tests/test_tests.py
+++ b/mediagoblin/tests/test_tests.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/tests/test_util.py b/mediagoblin/tests/test_util.py
index 75e28aca..c2a3a67f 100644
--- a/mediagoblin/tests/test_util.py
+++ b/mediagoblin/tests/test_util.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/tests/test_workbench.py b/mediagoblin/tests/test_workbench.py
index 953835a1..977d64b9 100644
--- a/mediagoblin/tests/test_workbench.py
+++ b/mediagoblin/tests/test_workbench.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/tests/tools.py b/mediagoblin/tests/tools.py
index ab14c21e..308e83ee 100644
--- a/mediagoblin/tests/tools.py
+++ b/mediagoblin/tests/tools.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/user_pages/__init__.py b/mediagoblin/user_pages/__init__.py
index a8eeb5ed..576bd0f5 100644
--- a/mediagoblin/user_pages/__init__.py
+++ b/mediagoblin/user_pages/__init__.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/user_pages/forms.py b/mediagoblin/user_pages/forms.py
index 25001019..57061d34 100644
--- a/mediagoblin/user_pages/forms.py
+++ b/mediagoblin/user_pages/forms.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
@@ -23,3 +23,8 @@ class MediaCommentForm(wtforms.Form):
comment_content = wtforms.TextAreaField(
_('Comment'),
[wtforms.validators.Required()])
+
+
+class ConfirmDeleteForm(wtforms.Form):
+ confirm = wtforms.BooleanField(
+ _('I am sure I want to delete this'))
diff --git a/mediagoblin/user_pages/routing.py b/mediagoblin/user_pages/routing.py
index 65c0fa64..3586d9cd 100644
--- a/mediagoblin/user_pages/routing.py
+++ b/mediagoblin/user_pages/routing.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
@@ -32,6 +32,9 @@ user_routes = [
Route('mediagoblin.edit.attachments',
'/{user}/m/{media}/attachments/',
controller="mediagoblin.edit.views:edit_attachments"),
+ Route('mediagoblin.user_pages.media_confirm_delete',
+ "/{user}/m/{media}/confirm-delete/",
+ controller="mediagoblin.user_pages.views:media_confirm_delete"),
Route('mediagoblin.user_pages.atom_feed', '/{user}/atom/',
controller="mediagoblin.user_pages.views:atom_feed"),
Route('mediagoblin.user_pages.media_post_comment',
diff --git a/mediagoblin/user_pages/views.py b/mediagoblin/user_pages/views.py
index 2d9bcd21..f60bd186 100644
--- a/mediagoblin/user_pages/views.py
+++ b/mediagoblin/user_pages/views.py
@@ -1,5 +1,5 @@
# MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
@@ -20,11 +20,12 @@ from mediagoblin import messages, mg_globals
from mediagoblin.db.util import DESCENDING, ObjectId
from mediagoblin.util import (
Pagination, render_to_response, redirect, cleaned_markdown_conversion,
- render_404)
+ render_404, delete_media_files)
+from mediagoblin.util import pass_to_ugettext as _
from mediagoblin.user_pages import forms as user_forms
from mediagoblin.decorators import (uses_pagination, get_user_media_entry,
- require_active_login)
+ require_active_login, user_may_delete_media)
from werkzeug.contrib.atom import AtomFeed
@@ -130,7 +131,7 @@ def media_post_comment(request):
comment = request.db.MediaComment()
comment['media_entry'] = ObjectId(request.matchdict['media'])
comment['author'] = request.user['_id']
- comment['content'] = request.POST['comment_content']
+ comment['content'] = unicode(request.POST['comment_content'])
comment['content_html'] = cleaned_markdown_conversion(comment['content'])
@@ -145,6 +146,43 @@ def media_post_comment(request):
user = request.matchdict['user'])
+@get_user_media_entry
+@require_active_login
+@user_may_delete_media
+def media_confirm_delete(request, media):
+
+ form = user_forms.ConfirmDeleteForm(request.POST)
+
+ if request.method == 'POST' and form.validate():
+ if form.confirm.data is True:
+ username = media.uploader()['username']
+
+ # Delete all files on the public storage
+ delete_media_files(media)
+
+ media.delete()
+
+ return redirect(request, "mediagoblin.user_pages.user_home",
+ user=username)
+ else:
+ return redirect(request, "mediagoblin.user_pages.media_home",
+ user=media.uploader()['username'],
+ media=media['slug'])
+
+ if ((request.user[u'is_admin'] and
+ request.user[u'_id'] != media.uploader()[u'_id'])):
+ messages.add_message(
+ request, messages.WARNING,
+ _("You are about to delete another user's media. "
+ "Proceed with caution."))
+
+ return render_to_response(
+ request,
+ 'mediagoblin/user_pages/media_confirm_delete.html',
+ {'media': media,
+ 'form': form})
+
+
ATOM_DEFAULT_NR_OF_UPDATED_ITEMS = 15
def atom_feed(request):
diff --git a/mediagoblin/util.py b/mediagoblin/util.py
index ba4ac01e..7ff3ec7f 100644
--- a/mediagoblin/util.py
+++ b/mediagoblin/util.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
@@ -681,3 +681,18 @@ def render_404(request):
"""
return render_to_response(
request, 'mediagoblin/404.html', {}, status=400)
+
+def delete_media_files(media):
+ """
+ Delete all files associated with a MediaEntry
+
+ Arguments:
+ - media: A MediaEntry document
+ """
+ for listpath in media['media_files'].itervalues():
+ mg_globals.public_store.delete_file(
+ listpath)
+
+ for attachment in media['attachment_files']:
+ mg_globals.public_store.delete_file(
+ attachment['filepath'])
diff --git a/mediagoblin/views.py b/mediagoblin/views.py
index ccd7a2df..96687f96 100644
--- a/mediagoblin/views.py
+++ b/mediagoblin/views.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/mediagoblin/workbench.py b/mediagoblin/workbench.py
index f83c4fa0..722f8e27 100644
--- a/mediagoblin/workbench.py
+++ b/mediagoblin/workbench.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
diff --git a/setup.py b/setup.py
index d6ef584b..06626926 100644
--- a/setup.py
+++ b/setup.py
@@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 Free Software Foundation, Inc
+# Copyright (C) 2011 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
@@ -15,10 +15,26 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from setuptools import setup, find_packages
+import os
+import re
+
+READMEFILE = "README"
+VERSIONFILE = os.path.join("mediagoblin", "_version.py")
+VSRE = r"^__version__ = ['\"]([^'\"]*)['\"]"
+
+
+def get_version():
+ verstrline = open(VERSIONFILE, "rt").read()
+ mo = re.search(VSRE, verstrline, re.M)
+ if mo:
+ return mo.group(1)
+ else:
+ raise RuntimeError("Unable to find version string in %s." % VERSIONFILE)
+
setup(
name = "mediagoblin",
- version = "0.0.4",
+ version = get_version(),
packages=find_packages(exclude=['ez_setup', 'examples', 'tests']),
zip_safe=False,
# scripts and dependencies
@@ -73,7 +89,7 @@ setup(
author_email='cwebber@gnu.org',
url="http://mediagoblin.org/",
download_url="http://mediagoblin.org/download/",
- long_description=open('README').read(),
+ long_description=open(READMEFILE).read(),
classifiers=[
"Development Status :: 3 - Alpha",
"Environment :: Web Environment",