diff options
137 files changed, 1940 insertions, 771 deletions
@@ -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! @@ -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 Binary files differindex aa0cd03b..d02639a9 100644 --- a/mediagoblin/i18n/ar/LC_MESSAGES/mediagoblin.mo +++ b/mediagoblin/i18n/ar/LC_MESSAGES/mediagoblin.mo 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 Binary files differindex 898d5f0f..d53cff8b 100644 --- a/mediagoblin/i18n/de/LC_MESSAGES/mediagoblin.mo +++ b/mediagoblin/i18n/de/LC_MESSAGES/mediagoblin.mo 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 <a href=\"http://mediagoblin.org\">MediaGoblin</a>, " +"einem <a href=\"http://gnu.org/\">GNU-Projekt</a>" #: 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 Binary files differindex 63a3294f..2502703b 100644 --- a/mediagoblin/i18n/eo/LC_MESSAGES/mediagoblin.mo +++ b/mediagoblin/i18n/eo/LC_MESSAGES/mediagoblin.mo 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 <a href=\"http://mediagoblin.org\">MediaGoblin</a>," +" unu el la <a href=\"http://gnu.org/\">projektoj de GNU</a>" #: 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 <a " -"href=\"http://gnu.org\">GNU</a>.)" +"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 Binary files differindex 6adf5526..a8fc04ea 100644 --- a/mediagoblin/i18n/es/LC_MESSAGES/mediagoblin.mo +++ b/mediagoblin/i18n/es/LC_MESSAGES/mediagoblin.mo 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 Binary files differindex 871d2a42..93e218e8 100644 --- a/mediagoblin/i18n/fr/LC_MESSAGES/mediagoblin.mo +++ b/mediagoblin/i18n/fr/LC_MESSAGES/mediagoblin.mo 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 Binary files differindex 0e0e240d..176bcb4d 100644 --- a/mediagoblin/i18n/ja/LC_MESSAGES/mediagoblin.mo +++ b/mediagoblin/i18n/ja/LC_MESSAGES/mediagoblin.mo 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 Binary files differindex 931d51b9..e91b7235 100644 --- a/mediagoblin/i18n/nl/LC_MESSAGES/mediagoblin.mo +++ b/mediagoblin/i18n/nl/LC_MESSAGES/mediagoblin.mo 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 Binary files differindex 8bdb4a92..1837c8da 100644 --- a/mediagoblin/i18n/nn_NO/LC_MESSAGES/mediagoblin.mo +++ b/mediagoblin/i18n/nn_NO/LC_MESSAGES/mediagoblin.mo 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 Binary files differindex b2e1161e..6c08c67a 100644 --- a/mediagoblin/i18n/pt_BR/LC_MESSAGES/mediagoblin.mo +++ b/mediagoblin/i18n/pt_BR/LC_MESSAGES/mediagoblin.mo 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 Binary files differindex a3f48cd7..1fe03578 100644 --- a/mediagoblin/i18n/ro/LC_MESSAGES/mediagoblin.mo +++ b/mediagoblin/i18n/ro/LC_MESSAGES/mediagoblin.mo 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 Binary files differindex 49aa9ccb..35c8ed2d 100644 --- a/mediagoblin/i18n/ru/LC_MESSAGES/mediagoblin.mo +++ b/mediagoblin/i18n/ru/LC_MESSAGES/mediagoblin.mo 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 Binary files differindex aaeec466..663a7e55 100644 --- a/mediagoblin/i18n/sl/LC_MESSAGES/mediagoblin.mo +++ b/mediagoblin/i18n/sl/LC_MESSAGES/mediagoblin.mo 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 Binary files differindex 2f9de271..80608e3a 100644 --- a/mediagoblin/i18n/sr/LC_MESSAGES/mediagoblin.mo +++ b/mediagoblin/i18n/sr/LC_MESSAGES/mediagoblin.mo 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 Binary files differindex 2136e0a3..9086472a 100644 --- a/mediagoblin/i18n/sv/LC_MESSAGES/mediagoblin.mo +++ b/mediagoblin/i18n/sv/LC_MESSAGES/mediagoblin.mo 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 Binary files differindex ce7240fc..dc196210 100644 --- a/mediagoblin/i18n/zh_TW/LC_MESSAGES/mediagoblin.mo +++ b/mediagoblin/i18n/zh_TW/LC_MESSAGES/mediagoblin.mo 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 @@ -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", |