Merged changes with upstream
This commit is contained in:
@@ -14,4 +14,13 @@
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
__version__ = "0.0.5"
|
||||
# valid version formats:
|
||||
# * x.y - final release
|
||||
# * x.ya1 - alpha 1
|
||||
# * x.yb1 - beta 1
|
||||
# * x.yrc1 - release candidate 1
|
||||
# * x.y.dev - dev
|
||||
|
||||
# see http://www.python.org/dev/peps/pep-0386/
|
||||
|
||||
__version__ = "0.3.0.dev"
|
||||
|
||||
@@ -20,7 +20,7 @@ import urllib
|
||||
import routes
|
||||
from webob import Request, exc
|
||||
|
||||
from mediagoblin import routing, middleware
|
||||
from mediagoblin import routing, meddleware
|
||||
from mediagoblin.tools import common, translate, template
|
||||
from mediagoblin.tools.response import render_404
|
||||
from mediagoblin.tools import request as mg_request
|
||||
@@ -63,7 +63,7 @@ class MediaGoblinApp(object):
|
||||
|
||||
# Get the template environment
|
||||
self.template_loader = get_jinja_loader(
|
||||
app_config.get('user_template_path'))
|
||||
app_config.get('local_templates'))
|
||||
|
||||
# Set up storage systems
|
||||
self.public_store, self.queue_store = setup_storage()
|
||||
@@ -94,26 +94,19 @@ class MediaGoblinApp(object):
|
||||
# object.
|
||||
#######################################################
|
||||
|
||||
setup_globals(app = self)
|
||||
setup_globals(app=self)
|
||||
|
||||
# Workbench *currently* only used by celery, so this only
|
||||
# matters in always eager mode :)
|
||||
setup_workbench()
|
||||
|
||||
# instantiate application middleware
|
||||
self.middleware = [common.import_component(m)(self)
|
||||
for m in middleware.ENABLED_MIDDLEWARE]
|
||||
|
||||
# instantiate application meddleware
|
||||
self.meddleware = [common.import_component(m)(self)
|
||||
for m in meddleware.ENABLED_MEDDLEWARE]
|
||||
|
||||
def __call__(self, environ, start_response):
|
||||
request = Request(environ)
|
||||
|
||||
# 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)
|
||||
@@ -129,6 +122,11 @@ class MediaGoblinApp(object):
|
||||
# The other option would be:
|
||||
# request.full_path = environ["SCRIPT_URL"]
|
||||
|
||||
# Fix up environ for urlgen
|
||||
# See bug: https://bitbucket.org/bbangert/routes/issue/55/cache_hostinfo-breaks-on-https-off
|
||||
if environ.get('HTTPS', '').lower() == 'off':
|
||||
environ.pop('HTTPS')
|
||||
|
||||
## Attach utilities to the request object
|
||||
request.matchdict = route_match
|
||||
request.urlgen = routes.URLGenerator(self.routing, environ)
|
||||
@@ -165,13 +163,20 @@ class MediaGoblinApp(object):
|
||||
return render_404(request)(environ, start_response)
|
||||
|
||||
controller = common.import_component(route_match['controller'])
|
||||
|
||||
# pass the request through our meddleware classes
|
||||
for m in self.meddleware:
|
||||
response = m.process_request(request, controller)
|
||||
if response is not None:
|
||||
return response(environ, start_response)
|
||||
|
||||
request.start_response = start_response
|
||||
|
||||
# get the response from the controller
|
||||
response = controller(request)
|
||||
|
||||
# pass the response through the middleware
|
||||
for m in self.middleware[::-1]:
|
||||
# pass the response through the meddleware
|
||||
for m in self.meddleware[::-1]:
|
||||
m.process_response(request, response)
|
||||
|
||||
return response(environ, start_response)
|
||||
|
||||
@@ -29,15 +29,7 @@ class RegistrationForm(wtforms.Form):
|
||||
password = wtforms.PasswordField(
|
||||
_('Password'),
|
||||
[wtforms.validators.Required(),
|
||||
wtforms.validators.Length(min=6, max=30),
|
||||
wtforms.validators.EqualTo(
|
||||
'confirm_password',
|
||||
_('Passwords must match.'))])
|
||||
confirm_password = wtforms.PasswordField(
|
||||
_('Confirm password'),
|
||||
[wtforms.validators.Required()],
|
||||
description=_(
|
||||
u"Type it again here to make sure there are no spelling mistakes."))
|
||||
wtforms.validators.Length(min=6, max=30)])
|
||||
email = wtforms.TextField(
|
||||
_('Email address'),
|
||||
[wtforms.validators.Required(),
|
||||
@@ -59,9 +51,10 @@ class ForgotPassForm(wtforms.Form):
|
||||
'Username or email',
|
||||
[wtforms.validators.Required()])
|
||||
|
||||
def validate_username(form,field):
|
||||
if not (re.match(r'^\w+$',field.data) or
|
||||
re.match(r'^.+@[^.].*\.[a-z]{2,10}$',field.data, re.IGNORECASE)):
|
||||
def validate_username(form, field):
|
||||
if not (re.match(r'^\w+$', field.data) or
|
||||
re.match(r'^.+@[^.].*\.[a-z]{2,10}$', field.data,
|
||||
re.IGNORECASE)):
|
||||
raise wtforms.ValidationError(u'Incorrect input')
|
||||
|
||||
|
||||
@@ -69,17 +62,10 @@ class ChangePassForm(wtforms.Form):
|
||||
password = wtforms.PasswordField(
|
||||
'Password',
|
||||
[wtforms.validators.Required(),
|
||||
wtforms.validators.Length(min=6, max=30),
|
||||
wtforms.validators.EqualTo(
|
||||
'confirm_password',
|
||||
'Passwords must match.')])
|
||||
confirm_password = wtforms.PasswordField(
|
||||
'Confirm password',
|
||||
[wtforms.validators.Required()])
|
||||
wtforms.validators.Length(min=6, max=30)])
|
||||
userid = wtforms.HiddenField(
|
||||
'',
|
||||
[wtforms.validators.Required()])
|
||||
token = wtforms.HiddenField(
|
||||
'',
|
||||
[wtforms.validators.Required()])
|
||||
|
||||
|
||||
@@ -94,6 +94,7 @@ EMAIL_VERIFICATION_TEMPLATE = (
|
||||
u"http://{host}{uri}?"
|
||||
u"userid={userid}&token={verification_key}")
|
||||
|
||||
|
||||
def send_verification_email(user, request):
|
||||
"""
|
||||
Send the verification email to users to activate their accounts.
|
||||
@@ -104,17 +105,17 @@ def send_verification_email(user, request):
|
||||
"""
|
||||
rendered_email = render_template(
|
||||
request, 'mediagoblin/auth/verification_email.txt',
|
||||
{'username': user['username'],
|
||||
{'username': user.username,
|
||||
'verification_url': EMAIL_VERIFICATION_TEMPLATE.format(
|
||||
host=request.host,
|
||||
uri=request.urlgen('mediagoblin.auth.verify_email'),
|
||||
userid=unicode(user['_id']),
|
||||
verification_key=user['verification_key'])})
|
||||
userid=unicode(user._id),
|
||||
verification_key=user.verification_key)})
|
||||
|
||||
# TODO: There is no error handling in place
|
||||
send_email(
|
||||
mg_globals.app_config['email_sender_address'],
|
||||
[user['email']],
|
||||
[user.email],
|
||||
# TODO
|
||||
# Due to the distributed nature of GNU MediaGoblin, we should
|
||||
# find a way to send some additional information about the
|
||||
@@ -128,6 +129,7 @@ EMAIL_FP_VERIFICATION_TEMPLATE = (
|
||||
u"http://{host}{uri}?"
|
||||
u"userid={userid}&token={fp_verification_key}")
|
||||
|
||||
|
||||
def send_fp_verification_email(user, request):
|
||||
"""
|
||||
Send the verification email to users to change their password.
|
||||
@@ -138,17 +140,16 @@ def send_fp_verification_email(user, request):
|
||||
"""
|
||||
rendered_email = render_template(
|
||||
request, 'mediagoblin/auth/fp_verification_email.txt',
|
||||
{'username': user['username'],
|
||||
{'username': user.username,
|
||||
'verification_url': EMAIL_FP_VERIFICATION_TEMPLATE.format(
|
||||
host=request.host,
|
||||
uri=request.urlgen('mediagoblin.auth.verify_forgot_password'),
|
||||
userid=unicode(user['_id']),
|
||||
fp_verification_key=user['fp_verification_key'])})
|
||||
userid=unicode(user._id),
|
||||
fp_verification_key=user.fp_verification_key)})
|
||||
|
||||
# TODO: There is no error handling in place
|
||||
send_email(
|
||||
mg_globals.app_config['email_sender_address'],
|
||||
[user['email']],
|
||||
[user.email],
|
||||
'GNU MediaGoblin - Change forgotten password!',
|
||||
rendered_email)
|
||||
|
||||
|
||||
@@ -33,13 +33,6 @@ auth_routes = [
|
||||
controller='mediagoblin.views:simple_template_render'),
|
||||
Route('mediagoblin.auth.forgot_password', '/forgot_password/',
|
||||
controller='mediagoblin.auth.views:forgot_password'),
|
||||
Route('mediagoblin.auth.verify_forgot_password', '/forgot_password/verify/',
|
||||
controller='mediagoblin.auth.views:verify_forgot_password'),
|
||||
Route('mediagoblin.auth.fp_changed_success',
|
||||
'/forgot_password/changed_success/',
|
||||
template='mediagoblin/auth/fp_changed_success.html',
|
||||
controller='mediagoblin.views:simple_template_render'),
|
||||
Route('mediagoblin.auth.fp_email_sent',
|
||||
'/forgot_password/email_sent/',
|
||||
template='mediagoblin/auth/fp_email_sent.html',
|
||||
controller='mediagoblin.views:simple_template_render')]
|
||||
Route('mediagoblin.auth.verify_forgot_password',
|
||||
'/forgot_password/verify/',
|
||||
controller='mediagoblin.auth.views:verify_forgot_password')]
|
||||
|
||||
@@ -74,20 +74,21 @@ def register(request):
|
||||
extra_validation_passes = False
|
||||
if users_with_email:
|
||||
register_form.email.errors.append(
|
||||
_(u'Sorry, that email address has already been taken.'))
|
||||
_(u'Sorry, a user with that email address already exists.'))
|
||||
extra_validation_passes = False
|
||||
|
||||
if extra_validation_passes:
|
||||
# Create the user
|
||||
user = request.db.User()
|
||||
user['username'] = username
|
||||
user['email'] = email
|
||||
user['pw_hash'] = auth_lib.bcrypt_gen_password_hash(
|
||||
user.username = username
|
||||
user.email = email
|
||||
user.pw_hash = auth_lib.bcrypt_gen_password_hash(
|
||||
request.POST['password'])
|
||||
user.verification_key = unicode(uuid.uuid4())
|
||||
user.save(validate=True)
|
||||
|
||||
# log the user in
|
||||
request.session['user_id'] = unicode(user['_id'])
|
||||
request.session['user_id'] = unicode(user._id)
|
||||
request.session.save()
|
||||
|
||||
# send verification email
|
||||
@@ -98,7 +99,7 @@ def register(request):
|
||||
# message waiting for them to verify their email
|
||||
return redirect(
|
||||
request, 'mediagoblin.user_pages.user_home',
|
||||
user=user['username'])
|
||||
user=user.username)
|
||||
|
||||
return render_to_response(
|
||||
request,
|
||||
@@ -122,7 +123,7 @@ def login(request):
|
||||
|
||||
if user and user.check_login(request.POST['password']):
|
||||
# set up login in session
|
||||
request.session['user_id'] = unicode(user['_id'])
|
||||
request.session['user_id'] = unicode(user._id)
|
||||
request.session.save()
|
||||
|
||||
if request.POST.get('next'):
|
||||
@@ -160,16 +161,16 @@ def verify_email(request):
|
||||
you are lucky :)
|
||||
"""
|
||||
# If we don't have userid and token parameters, we can't do anything; 404
|
||||
if not request.GET.has_key('userid') or not request.GET.has_key('token'):
|
||||
if not 'userid' in request.GET or not 'token' in request.GET:
|
||||
return render_404(request)
|
||||
|
||||
user = request.db.User.find_one(
|
||||
{'_id': ObjectId(unicode(request.GET['userid']))})
|
||||
|
||||
if user and user['verification_key'] == unicode(request.GET['token']):
|
||||
user[u'status'] = u'active'
|
||||
user[u'email_verified'] = True
|
||||
user[u'verification_key'] = None
|
||||
if user and user.verification_key == unicode(request.GET['token']):
|
||||
user.status = u'active'
|
||||
user.email_verified = True
|
||||
user.verification_key = None
|
||||
|
||||
user.save()
|
||||
|
||||
@@ -186,7 +187,7 @@ def verify_email(request):
|
||||
|
||||
return redirect(
|
||||
request, 'mediagoblin.user_pages.user_home',
|
||||
user=user['username'])
|
||||
user=user.username)
|
||||
|
||||
|
||||
def resend_activation(request):
|
||||
@@ -195,9 +196,26 @@ def resend_activation(request):
|
||||
|
||||
Resend the activation email.
|
||||
"""
|
||||
request.user[u'verification_key'] = unicode(uuid.uuid4())
|
||||
request.user.save()
|
||||
|
||||
if request.user is None:
|
||||
messages.add_message(
|
||||
request,
|
||||
messages.ERROR,
|
||||
_('You must be logged in so we know who to send the email to!'))
|
||||
|
||||
return redirect(request, 'mediagoblin.auth.login')
|
||||
|
||||
if request.user.email_verified:
|
||||
messages.add_message(
|
||||
request,
|
||||
messages.ERROR,
|
||||
_("You've already verified your email address!"))
|
||||
|
||||
return redirect(request, "mediagoblin.user_pages.user_home", user=request.user['username'])
|
||||
|
||||
request.user.verification_key = unicode(uuid.uuid4())
|
||||
request.user.save()
|
||||
|
||||
email_debug_message(request)
|
||||
send_verification_email(request.user, request)
|
||||
|
||||
@@ -207,23 +225,19 @@ def resend_activation(request):
|
||||
_('Resent your verification email.'))
|
||||
return redirect(
|
||||
request, 'mediagoblin.user_pages.user_home',
|
||||
user=request.user['username'])
|
||||
user=request.user.username)
|
||||
|
||||
|
||||
def forgot_password(request):
|
||||
"""
|
||||
Forgot password view
|
||||
|
||||
Sends an email whit an url to renew forgoten password
|
||||
Sends an email with an url to renew forgotten password
|
||||
"""
|
||||
fp_form = auth_forms.ForgotPassForm(request.POST)
|
||||
|
||||
if request.method == 'POST' and fp_form.validate():
|
||||
|
||||
# Here, so it doesn't depend on the actual mail being sent
|
||||
# and thus doesn't reveal, wether mail was sent.
|
||||
email_debug_message(request)
|
||||
|
||||
# '$or' not available till mongodb 1.5.3
|
||||
user = request.db.User.find_one(
|
||||
{'username': request.POST['username']})
|
||||
@@ -232,13 +246,21 @@ def forgot_password(request):
|
||||
{'email': request.POST['username']})
|
||||
|
||||
if user:
|
||||
if user['email_verified'] and user['status'] == 'active':
|
||||
user[u'fp_verification_key'] = unicode(uuid.uuid4())
|
||||
user[u'fp_token_expire'] = datetime.datetime.now() + \
|
||||
if user.email_verified and user.status == 'active':
|
||||
user.fp_verification_key = unicode(uuid.uuid4())
|
||||
user.fp_token_expire = datetime.datetime.now() + \
|
||||
datetime.timedelta(days=10)
|
||||
user.save()
|
||||
|
||||
send_fp_verification_email(user, request)
|
||||
|
||||
messages.add_message(
|
||||
request,
|
||||
messages.INFO,
|
||||
_("An email has been sent with instructions on how to "
|
||||
"change your password."))
|
||||
email_debug_message(request)
|
||||
|
||||
else:
|
||||
# special case... we can't send the email because the
|
||||
# username is inactive / hasn't verified their email
|
||||
@@ -251,11 +273,14 @@ def forgot_password(request):
|
||||
|
||||
return redirect(
|
||||
request, 'mediagoblin.user_pages.user_home',
|
||||
user=user['username'])
|
||||
|
||||
|
||||
# do not reveal whether or not there is a matching user, just move along
|
||||
return redirect(request, 'mediagoblin.auth.fp_email_sent')
|
||||
user=user.username)
|
||||
return redirect(request, 'mediagoblin.auth.login')
|
||||
else:
|
||||
messages.add_message(
|
||||
request,
|
||||
messages.WARNING,
|
||||
_("Couldn't find someone with that username or email."))
|
||||
return redirect(request, 'mediagoblin.auth.forgot_password')
|
||||
|
||||
return render_to_response(
|
||||
request,
|
||||
@@ -285,21 +310,25 @@ def verify_forgot_password(request):
|
||||
return render_404(request)
|
||||
|
||||
# check if we have a real user and correct token
|
||||
if ((user and user['fp_verification_key'] and
|
||||
user['fp_verification_key'] == unicode(formdata_token) and
|
||||
datetime.datetime.now() < user['fp_token_expire']
|
||||
and user['email_verified'] and user['status'] == 'active')):
|
||||
if ((user and user.fp_verification_key and
|
||||
user.fp_verification_key == unicode(formdata_token) and
|
||||
datetime.datetime.now() < user.fp_token_expire
|
||||
and user.email_verified and user.status == 'active')):
|
||||
|
||||
cp_form = auth_forms.ChangePassForm(formdata_vars)
|
||||
|
||||
if request.method == 'POST' and cp_form.validate():
|
||||
user[u'pw_hash'] = auth_lib.bcrypt_gen_password_hash(
|
||||
user.pw_hash = auth_lib.bcrypt_gen_password_hash(
|
||||
request.POST['password'])
|
||||
user[u'fp_verification_key'] = None
|
||||
user[u'fp_token_expire'] = None
|
||||
user.fp_verification_key = None
|
||||
user.fp_token_expire = None
|
||||
user.save()
|
||||
|
||||
return redirect(request, 'mediagoblin.auth.fp_changed_success')
|
||||
messages.add_message(
|
||||
request,
|
||||
messages.INFO,
|
||||
_("You can now log in using your new password."))
|
||||
return redirect(request, 'mediagoblin.auth.login')
|
||||
else:
|
||||
return render_to_response(
|
||||
request,
|
||||
@@ -328,6 +357,6 @@ def _process_for_token(request):
|
||||
formdata = {
|
||||
'vars': formdata_vars,
|
||||
'has_userid_and_token':
|
||||
formdata_vars.has_key('userid') and formdata_vars.has_key('token')}
|
||||
'userid' in formdata_vars and 'token' in formdata_vars}
|
||||
|
||||
return formdata
|
||||
|
||||
@@ -1,14 +1,18 @@
|
||||
[mediagoblin]
|
||||
# HTML title of the pages
|
||||
html_title = string(default="GNU MediaGoblin")
|
||||
|
||||
# Enabled media types
|
||||
media_types = string_list(default=list("mediagoblin.media_types.image"))
|
||||
|
||||
# database stuff
|
||||
db_host = string()
|
||||
db_name = string(default="mediagoblin")
|
||||
db_port = integer()
|
||||
|
||||
|
||||
# Where temporary files used in processing and etc are kept
|
||||
workbench_path = string(default="%(here)s/user_dev/media/workbench")
|
||||
|
||||
|
||||
# Where mediagoblin-builtin static assets are kept
|
||||
direct_remote_path = string(default="/mgoblin_static/")
|
||||
|
||||
@@ -24,9 +28,11 @@ email_smtp_pass = string(default=None)
|
||||
allow_registration = boolean(default=True)
|
||||
|
||||
# tag parsing
|
||||
tags_delimiter = string(default=",")
|
||||
tags_max_length = integer(default=50)
|
||||
|
||||
# Whether comments are ascending or descending
|
||||
comments_ascending = boolean(default=True)
|
||||
|
||||
# By default not set, but you might want something like:
|
||||
# "%(here)s/user_dev/templates/"
|
||||
local_templates = string()
|
||||
@@ -44,6 +50,7 @@ allow_attachments = boolean(default=False)
|
||||
# Cookie stuff
|
||||
csrf_cookie_name = string(default='mediagoblin_csrftoken')
|
||||
|
||||
|
||||
[storage:publicstore]
|
||||
storage_class = string(default="mediagoblin.storage.filestorage:BasicFileStorage")
|
||||
base_dir = string(default="%(here)s/user_dev/media/public")
|
||||
@@ -54,6 +61,11 @@ storage_class = string(default="mediagoblin.storage.filestorage:BasicFileStorage
|
||||
base_dir = string(default="%(here)s/user_dev/media/queue")
|
||||
|
||||
|
||||
# Should we keep the original file?
|
||||
[media_type:mediagoblin.media_types.video]
|
||||
keep_original = boolean(default=False)
|
||||
|
||||
|
||||
[beaker.cache]
|
||||
type = string(default="file")
|
||||
data_dir = string(default="%(here)s/user_dev/beaker/cache/data")
|
||||
|
||||
@@ -23,7 +23,7 @@ Database Abstraction/Wrapper Layer
|
||||
pymongo. Read beow for why, but note that nobody is actually doing
|
||||
this and there's no proof that we'll ever support more than
|
||||
MongoDB... it would be a huge amount of work to do so.
|
||||
|
||||
|
||||
If you really want to prove that possible, jump on IRC and talk to
|
||||
us about making such a branch. In the meanwhile, it doesn't hurt to
|
||||
have things as they are... if it ever makes it hard for us to
|
||||
|
||||
92
mediagoblin/db/mixin.py
Normal file
92
mediagoblin/db/mixin.py
Normal file
@@ -0,0 +1,92 @@
|
||||
# GNU MediaGoblin -- federated, autonomous media hosting
|
||||
# Copyright (C) 2011,2012 MediaGoblin contributors. See AUTHORS.
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
"""
|
||||
This module contains some Mixin classes for the db objects.
|
||||
|
||||
A bunch of functions on the db objects are really more like
|
||||
"utility functions": They could live outside the classes
|
||||
and be called "by hand" passing the appropiate reference.
|
||||
They usually only use the public API of the object and
|
||||
rarely use database related stuff.
|
||||
|
||||
These functions now live here and get "mixed in" into the
|
||||
real objects.
|
||||
"""
|
||||
|
||||
from mediagoblin.auth import lib as auth_lib
|
||||
from mediagoblin.tools import common
|
||||
|
||||
|
||||
class UserMixin(object):
|
||||
def check_login(self, password):
|
||||
"""
|
||||
See if a user can login with this password
|
||||
"""
|
||||
return auth_lib.bcrypt_check_password(
|
||||
password, self.pw_hash)
|
||||
|
||||
|
||||
class MediaEntryMixin(object):
|
||||
def get_display_media(self, media_map,
|
||||
fetch_order=common.DISPLAY_IMAGE_FETCHING_ORDER):
|
||||
"""
|
||||
Find the best media for display.
|
||||
|
||||
Args:
|
||||
- media_map: a dict like
|
||||
{u'image_size': [u'dir1', u'dir2', u'image.jpg']}
|
||||
- fetch_order: the order we should try fetching images in
|
||||
|
||||
Returns:
|
||||
(media_size, media_path)
|
||||
"""
|
||||
media_sizes = media_map.keys()
|
||||
|
||||
for media_size in common.DISPLAY_IMAGE_FETCHING_ORDER:
|
||||
if media_size in media_sizes:
|
||||
return media_map[media_size]
|
||||
|
||||
def main_mediafile(self):
|
||||
pass
|
||||
|
||||
def url_for_self(self, urlgen, **extra_args):
|
||||
"""
|
||||
Generate an appropriate url for ourselves
|
||||
|
||||
Use a slug if we have one, else use our '_id'.
|
||||
"""
|
||||
uploader = self.get_uploader
|
||||
|
||||
if self.get('slug'):
|
||||
return urlgen(
|
||||
'mediagoblin.user_pages.media_home',
|
||||
user=uploader.username,
|
||||
media=self.slug,
|
||||
**extra_args)
|
||||
else:
|
||||
return urlgen(
|
||||
'mediagoblin.user_pages.media_home',
|
||||
user=uploader.username,
|
||||
media=unicode(self._id),
|
||||
**extra_args)
|
||||
|
||||
def get_fail_exception(self):
|
||||
"""
|
||||
Get the exception that's appropriate for this error
|
||||
"""
|
||||
if self['fail_error']:
|
||||
return common.import_component(self['fail_error'])
|
||||
@@ -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,14 +13,3 @@
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#}
|
||||
{% extends "mediagoblin/base.html" %}
|
||||
|
||||
{% block mediagoblin_content %}
|
||||
<p>
|
||||
{% trans -%}
|
||||
Your password has been changed. Try to log in now.
|
||||
{%- endtrans %}
|
||||
</p>
|
||||
{% endblock %}
|
||||
|
||||
@@ -93,8 +93,9 @@ MEDIAENTRY_INDEXES = {
|
||||
('created', DESCENDING)]},
|
||||
|
||||
'state_uploader_tags_created': {
|
||||
# Indexing on processed?, media uploader, associated tags, and timestamp
|
||||
# Used for showing media items matching a tag search, most recent first.
|
||||
# Indexing on processed?, media uploader, associated tags, and
|
||||
# timestamp Used for showing media items matching a tag
|
||||
# search, most recent first.
|
||||
'index': [('state', ASCENDING),
|
||||
('uploader', ASCENDING),
|
||||
('tags.slug', DESCENDING),
|
||||
@@ -14,7 +14,7 @@
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from mediagoblin.db.util import RegisterMigration
|
||||
from mediagoblin.db.mongo.util import RegisterMigration
|
||||
from mediagoblin.tools.text import cleaned_markdown_conversion
|
||||
|
||||
|
||||
@@ -100,3 +100,11 @@ def user_add_forgot_password_token_and_expires(database):
|
||||
"""
|
||||
add_table_field(database, 'users', 'fp_verification_key', None)
|
||||
add_table_field(database, 'users', 'fp_token_expire', None)
|
||||
|
||||
|
||||
@RegisterMigration(7)
|
||||
def media_type_image_to_multimedia_type_image(database):
|
||||
database['media_entries'].update(
|
||||
{'media_type': 'image'},
|
||||
{'$set': {'media_type': 'mediagoblin.media_types.image'}},
|
||||
multi=True)
|
||||
78
mediagoblin/db/mongo/open.py
Normal file
78
mediagoblin/db/mongo/open.py
Normal file
@@ -0,0 +1,78 @@
|
||||
# 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/>.
|
||||
|
||||
import pymongo
|
||||
import mongokit
|
||||
from paste.deploy.converters import asint
|
||||
from mediagoblin.db.mongo import models
|
||||
from mediagoblin.db.mongo.util import MigrationManager
|
||||
|
||||
|
||||
def connect_database_from_config(app_config, use_pymongo=False):
|
||||
"""
|
||||
Connect to the main database, take config from app_config
|
||||
|
||||
Optionally use pymongo instead of mongokit for the connection.
|
||||
"""
|
||||
port = app_config.get('db_port')
|
||||
if port:
|
||||
port = asint(port)
|
||||
|
||||
if use_pymongo:
|
||||
connection = pymongo.Connection(
|
||||
app_config.get('db_host'), port)
|
||||
else:
|
||||
connection = mongokit.Connection(
|
||||
app_config.get('db_host'), port)
|
||||
return connection
|
||||
|
||||
|
||||
def setup_connection_and_db_from_config(app_config, use_pymongo=False):
|
||||
"""
|
||||
Setup connection and database from config.
|
||||
|
||||
Optionally use pymongo instead of mongokit.
|
||||
"""
|
||||
connection = connect_database_from_config(app_config, use_pymongo)
|
||||
database_path = app_config['db_name']
|
||||
db = connection[database_path]
|
||||
|
||||
if not use_pymongo:
|
||||
models.register_models(connection)
|
||||
|
||||
return (connection, db)
|
||||
|
||||
|
||||
def check_db_migrations_current(db):
|
||||
# This MUST be imported so as to set up the appropriate migrations!
|
||||
from mediagoblin.db.mongo import migrations
|
||||
|
||||
# Init the migration number if necessary
|
||||
migration_manager = MigrationManager(db)
|
||||
migration_manager.install_migration_version_if_missing()
|
||||
|
||||
# Tiny hack to warn user if our migration is out of date
|
||||
if not migration_manager.database_at_latest_migration():
|
||||
db_migration_num = migration_manager.database_current_migration()
|
||||
latest_migration_num = migration_manager.latest_migration()
|
||||
if db_migration_num < latest_migration_num:
|
||||
print (
|
||||
"*WARNING:* Your migrations are out of date, "
|
||||
"maybe run ./bin/gmg migrate?")
|
||||
elif db_migration_num > latest_migration_num:
|
||||
print (
|
||||
"*WARNING:* Your migrations are out of date... "
|
||||
"in fact they appear to be from the future?!")
|
||||
292
mediagoblin/db/mongo/util.py
Normal file
292
mediagoblin/db/mongo/util.py
Normal file
@@ -0,0 +1,292 @@
|
||||
# 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/>.
|
||||
|
||||
"""
|
||||
Utilities for database operations.
|
||||
|
||||
Some note on migration and indexing tools:
|
||||
|
||||
We store information about what the state of the database is in the
|
||||
'mediagoblin' document of the 'app_metadata' collection. Keys in that
|
||||
document relevant to here:
|
||||
|
||||
- 'migration_number': The integer representing the current state of
|
||||
the migrations
|
||||
"""
|
||||
|
||||
import copy
|
||||
|
||||
# Imports that other modules might use
|
||||
from pymongo import ASCENDING, DESCENDING
|
||||
from pymongo.errors import InvalidId
|
||||
from mongokit import ObjectId
|
||||
|
||||
from mediagoblin.db.mongo.indexes import ACTIVE_INDEXES, DEPRECATED_INDEXES
|
||||
|
||||
|
||||
################
|
||||
# Indexing tools
|
||||
################
|
||||
|
||||
|
||||
def add_new_indexes(database, active_indexes=ACTIVE_INDEXES):
|
||||
"""
|
||||
Add any new indexes to the database.
|
||||
|
||||
Args:
|
||||
- database: pymongo or mongokit database instance.
|
||||
- active_indexes: indexes to possibly add in the pattern of:
|
||||
{'collection_name': {
|
||||
'identifier': {
|
||||
'index': [index_foo_goes_here],
|
||||
'unique': True}}
|
||||
where 'index' is the index to add and all other options are
|
||||
arguments for collection.create_index.
|
||||
|
||||
Returns:
|
||||
A list of indexes added in form ('collection', 'index_name')
|
||||
"""
|
||||
indexes_added = []
|
||||
|
||||
for collection_name, indexes in active_indexes.iteritems():
|
||||
collection = database[collection_name]
|
||||
collection_indexes = collection.index_information().keys()
|
||||
|
||||
for index_name, index_data in indexes.iteritems():
|
||||
if not index_name in collection_indexes:
|
||||
# Get a copy actually so we don't modify the actual
|
||||
# structure
|
||||
index_data = copy.copy(index_data)
|
||||
index = index_data.pop('index')
|
||||
collection.create_index(
|
||||
index, name=index_name, **index_data)
|
||||
|
||||
indexes_added.append((collection_name, index_name))
|
||||
|
||||
return indexes_added
|
||||
|
||||
|
||||
def remove_deprecated_indexes(database, deprecated_indexes=DEPRECATED_INDEXES):
|
||||
"""
|
||||
Remove any deprecated indexes from the database.
|
||||
|
||||
Args:
|
||||
- database: pymongo or mongokit database instance.
|
||||
- deprecated_indexes: the indexes to deprecate in the pattern of:
|
||||
{'collection_name': {
|
||||
'identifier': {
|
||||
'index': [index_foo_goes_here],
|
||||
'unique': True}}
|
||||
|
||||
(... although we really only need the 'identifier' here, as the
|
||||
rest of the information isn't used in this case. But it's kept
|
||||
around so we can remember what it was)
|
||||
|
||||
Returns:
|
||||
A list of indexes removed in form ('collection', 'index_name')
|
||||
"""
|
||||
indexes_removed = []
|
||||
|
||||
for collection_name, indexes in deprecated_indexes.iteritems():
|
||||
collection = database[collection_name]
|
||||
collection_indexes = collection.index_information().keys()
|
||||
|
||||
for index_name, index_data in indexes.iteritems():
|
||||
if index_name in collection_indexes:
|
||||
collection.drop_index(index_name)
|
||||
|
||||
indexes_removed.append((collection_name, index_name))
|
||||
|
||||
return indexes_removed
|
||||
|
||||
|
||||
#################
|
||||
# Migration tools
|
||||
#################
|
||||
|
||||
# The default migration registry...
|
||||
#
|
||||
# Don't set this yourself! RegisterMigration will automatically fill
|
||||
# this with stuff via decorating methods in migrations.py
|
||||
|
||||
class MissingCurrentMigration(Exception):
|
||||
pass
|
||||
|
||||
|
||||
MIGRATIONS = {}
|
||||
|
||||
|
||||
class RegisterMigration(object):
|
||||
"""
|
||||
Tool for registering migrations
|
||||
|
||||
Call like:
|
||||
|
||||
@RegisterMigration(33)
|
||||
def update_dwarves(database):
|
||||
[...]
|
||||
|
||||
This will register your migration with the default migration
|
||||
registry. Alternately, to specify a very specific
|
||||
migration_registry, you can pass in that as the second argument.
|
||||
|
||||
Note, the number of your migration should NEVER be 0 or less than
|
||||
0. 0 is the default "no migrations" state!
|
||||
"""
|
||||
def __init__(self, migration_number, migration_registry=MIGRATIONS):
|
||||
assert migration_number > 0, "Migration number must be > 0!"
|
||||
assert migration_number not in migration_registry, \
|
||||
"Duplicate migration numbers detected! That's not allowed!"
|
||||
|
||||
self.migration_number = migration_number
|
||||
self.migration_registry = migration_registry
|
||||
|
||||
def __call__(self, migration):
|
||||
self.migration_registry[self.migration_number] = migration
|
||||
return migration
|
||||
|
||||
|
||||
class MigrationManager(object):
|
||||
"""
|
||||
Migration handling tool.
|
||||
|
||||
Takes information about a database, lets you update the database
|
||||
to the latest migrations, etc.
|
||||
"""
|
||||
def __init__(self, database, migration_registry=MIGRATIONS):
|
||||
"""
|
||||
Args:
|
||||
- database: database we're going to migrate
|
||||
- migration_registry: where we should find all migrations to
|
||||
run
|
||||
"""
|
||||
self.database = database
|
||||
self.migration_registry = migration_registry
|
||||
self._sorted_migrations = None
|
||||
|
||||
def _ensure_current_migration_record(self):
|
||||
"""
|
||||
If there isn't a database[u'app_metadata'] mediagoblin entry
|
||||
with the 'current_migration', throw an error.
|
||||
"""
|
||||
if self.database_current_migration() is None:
|
||||
raise MissingCurrentMigration(
|
||||
"Tried to call function which requires "
|
||||
"'current_migration' set in database")
|
||||
|
||||
@property
|
||||
def sorted_migrations(self):
|
||||
"""
|
||||
Sort migrations if necessary and store in self._sorted_migrations
|
||||
"""
|
||||
if not self._sorted_migrations:
|
||||
self._sorted_migrations = sorted(
|
||||
self.migration_registry.items(),
|
||||
# sort on the key... the migration number
|
||||
key=lambda migration_tuple: migration_tuple[0])
|
||||
|
||||
return self._sorted_migrations
|
||||
|
||||
def latest_migration(self):
|
||||
"""
|
||||
Return a migration number for the latest migration, or 0 if
|
||||
there are no migrations.
|
||||
"""
|
||||
if self.sorted_migrations:
|
||||
return self.sorted_migrations[-1][0]
|
||||
else:
|
||||
# If no migrations have been set, we start at 0.
|
||||
return 0
|
||||
|
||||
def set_current_migration(self, migration_number):
|
||||
"""
|
||||
Set the migration in the database to migration_number
|
||||
"""
|
||||
# Add the mediagoblin migration if necessary
|
||||
self.database[u'app_metadata'].update(
|
||||
{u'_id': u'mediagoblin'},
|
||||
{u'$set': {u'current_migration': migration_number}},
|
||||
upsert=True)
|
||||
|
||||
def install_migration_version_if_missing(self):
|
||||
"""
|
||||
Sets the migration to the latest version if no migration
|
||||
version at all is set.
|
||||
"""
|
||||
mgoblin_metadata = self.database[u'app_metadata'].find_one(
|
||||
{u'_id': u'mediagoblin'})
|
||||
if not mgoblin_metadata:
|
||||
latest_migration = self.latest_migration()
|
||||
self.set_current_migration(latest_migration)
|
||||
|
||||
def database_current_migration(self):
|
||||
"""
|
||||
Return the current migration in the database.
|
||||
"""
|
||||
mgoblin_metadata = self.database[u'app_metadata'].find_one(
|
||||
{u'_id': u'mediagoblin'})
|
||||
if not mgoblin_metadata:
|
||||
return None
|
||||
else:
|
||||
return mgoblin_metadata[u'current_migration']
|
||||
|
||||
def database_at_latest_migration(self):
|
||||
"""
|
||||
See if the database is at the latest migration.
|
||||
Returns a boolean.
|
||||
"""
|
||||
current_migration = self.database_current_migration()
|
||||
return current_migration == self.latest_migration()
|
||||
|
||||
def migrations_to_run(self):
|
||||
"""
|
||||
Get a list of migrations to run still, if any.
|
||||
|
||||
Note that calling this will set your migration version to the
|
||||
latest version if it isn't installed to anything yet!
|
||||
"""
|
||||
self._ensure_current_migration_record()
|
||||
|
||||
db_current_migration = self.database_current_migration()
|
||||
|
||||
return [
|
||||
(migration_number, migration_func)
|
||||
for migration_number, migration_func in self.sorted_migrations
|
||||
if migration_number > db_current_migration]
|
||||
|
||||
def migrate_new(self, pre_callback=None, post_callback=None):
|
||||
"""
|
||||
Run all migrations.
|
||||
|
||||
Includes two optional args:
|
||||
- pre_callback: if called, this is a callback on something to
|
||||
run pre-migration. Takes (migration_number, migration_func)
|
||||
as arguments
|
||||
- pre_callback: if called, this is a callback on something to
|
||||
run post-migration. Takes (migration_number, migration_func)
|
||||
as arguments
|
||||
"""
|
||||
# If we aren't set to any version number, presume we're at the
|
||||
# latest (which means we'll do nothing here...)
|
||||
self.install_migration_version_if_missing()
|
||||
|
||||
for migration_number, migration_func in self.migrations_to_run():
|
||||
if pre_callback:
|
||||
pre_callback(migration_number, migration_func)
|
||||
migration_func(self.database)
|
||||
self.set_current_migration(migration_number)
|
||||
if post_callback:
|
||||
post_callback(migration_number, migration_func)
|
||||
@@ -14,42 +14,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/>.
|
||||
|
||||
import pymongo
|
||||
import mongokit
|
||||
from paste.deploy.converters import asint
|
||||
from mediagoblin.db import models
|
||||
|
||||
|
||||
def connect_database_from_config(app_config, use_pymongo=False):
|
||||
"""
|
||||
Connect to the main database, take config from app_config
|
||||
|
||||
Optionally use pymongo instead of mongokit for the connection.
|
||||
"""
|
||||
port = app_config.get('db_port')
|
||||
if port:
|
||||
port = asint(port)
|
||||
|
||||
if use_pymongo:
|
||||
connection = pymongo.Connection(
|
||||
app_config.get('db_host'), port)
|
||||
else:
|
||||
connection = mongokit.Connection(
|
||||
app_config.get('db_host'), port)
|
||||
return connection
|
||||
|
||||
|
||||
def setup_connection_and_db_from_config(app_config, use_pymongo=False):
|
||||
"""
|
||||
Setup connection and database from config.
|
||||
|
||||
Optionally use pymongo instead of mongokit.
|
||||
"""
|
||||
connection = connect_database_from_config(app_config, use_pymongo)
|
||||
database_path = app_config['db_name']
|
||||
db = connection[database_path]
|
||||
|
||||
if not use_pymongo:
|
||||
models.register_models(connection)
|
||||
|
||||
return (connection, db)
|
||||
from mediagoblin.db.mongo.open import \
|
||||
setup_connection_and_db_from_config, check_db_migrations_current
|
||||
|
||||
@@ -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,15 +13,3 @@
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#}
|
||||
{% extends "mediagoblin/base.html" %}
|
||||
|
||||
{% block mediagoblin_content %}
|
||||
<p>
|
||||
{% trans -%}
|
||||
Check your inbox. We sent an email with a URL for changing your password.
|
||||
{%- endtrans %}
|
||||
</p>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
38
mediagoblin/db/sql/base.py
Normal file
38
mediagoblin/db/sql/base.py
Normal file
@@ -0,0 +1,38 @@
|
||||
from sqlalchemy.orm import scoped_session, sessionmaker, object_session
|
||||
|
||||
|
||||
Session = scoped_session(sessionmaker())
|
||||
|
||||
|
||||
def _fix_query_dict(query_dict):
|
||||
if '_id' in query_dict:
|
||||
query_dict['id'] = query_dict.pop('_id')
|
||||
|
||||
|
||||
class GMGTableBase(object):
|
||||
query = Session.query_property()
|
||||
|
||||
@classmethod
|
||||
def find(cls, query_dict={}):
|
||||
_fix_query_dict(query_dict)
|
||||
return cls.query.filter_by(**query_dict)
|
||||
|
||||
@classmethod
|
||||
def find_one(cls, query_dict={}):
|
||||
_fix_query_dict(query_dict)
|
||||
return cls.query.filter_by(**query_dict).first()
|
||||
|
||||
@classmethod
|
||||
def one(cls, query_dict):
|
||||
return cls.find(query_dict).one()
|
||||
|
||||
def get(self, key):
|
||||
return getattr(self, key)
|
||||
|
||||
def save(self, validate = True):
|
||||
assert validate
|
||||
sess = object_session(self)
|
||||
if sess is None:
|
||||
sess = Session()
|
||||
sess.add(self)
|
||||
sess.commit()
|
||||
151
mediagoblin/db/sql/convert.py
Normal file
151
mediagoblin/db/sql/convert.py
Normal file
@@ -0,0 +1,151 @@
|
||||
from mediagoblin.init import setup_global_and_app_config, setup_database
|
||||
from mediagoblin.db.mongo.util import ObjectId
|
||||
|
||||
from mediagoblin.db.sql.models import (Base, User, MediaEntry, MediaComment,
|
||||
Tag, MediaTag, MediaFile)
|
||||
from mediagoblin.db.sql.open import setup_connection_and_db_from_config as \
|
||||
sql_connect
|
||||
from mediagoblin.db.mongo.open import setup_connection_and_db_from_config as \
|
||||
mongo_connect
|
||||
from mediagoblin.db.sql.base import Session
|
||||
|
||||
|
||||
obj_id_table = dict()
|
||||
|
||||
def add_obj_ids(entry, new_entry):
|
||||
global obj_id_table
|
||||
print "%r -> %r" % (entry._id, new_entry.id)
|
||||
obj_id_table[entry._id] = new_entry.id
|
||||
|
||||
|
||||
def copy_attrs(entry, new_entry, attr_list):
|
||||
for a in attr_list:
|
||||
val = entry[a]
|
||||
setattr(new_entry, a, val)
|
||||
|
||||
def copy_reference_attr(entry, new_entry, ref_attr):
|
||||
val = entry[ref_attr]
|
||||
val = obj_id_table[val]
|
||||
setattr(new_entry, ref_attr, val)
|
||||
|
||||
|
||||
def convert_users(mk_db):
|
||||
session = Session()
|
||||
|
||||
for entry in mk_db.User.find():
|
||||
print entry.username
|
||||
|
||||
new_entry = User()
|
||||
copy_attrs(entry, new_entry,
|
||||
('username', 'email', 'created', 'pw_hash', 'email_verified',
|
||||
'status', 'verification_key', 'is_admin', 'url',
|
||||
'bio', 'bio_html',
|
||||
'fp_verification_key', 'fp_token_expire',))
|
||||
# new_entry.fp_verification_expire = entry.fp_token_expire
|
||||
|
||||
session.add(new_entry)
|
||||
session.flush()
|
||||
add_obj_ids(entry, new_entry)
|
||||
|
||||
session.commit()
|
||||
session.close()
|
||||
|
||||
|
||||
def convert_media_entries(mk_db):
|
||||
session = Session()
|
||||
|
||||
for entry in mk_db.MediaEntry.find():
|
||||
print repr(entry.title)
|
||||
|
||||
new_entry = MediaEntry()
|
||||
copy_attrs(entry, new_entry,
|
||||
('title', 'slug', 'created',
|
||||
'description', 'description_html',
|
||||
'media_type', 'state',
|
||||
'fail_error',
|
||||
'queued_task_id',))
|
||||
copy_reference_attr(entry, new_entry, "uploader")
|
||||
|
||||
session.add(new_entry)
|
||||
session.flush()
|
||||
add_obj_ids(entry, new_entry)
|
||||
|
||||
for key, value in entry.media_files.iteritems():
|
||||
new_file = MediaFile(name=key, file_path=value)
|
||||
new_file.media_entry = new_entry.id
|
||||
Session.add(new_file)
|
||||
|
||||
session.commit()
|
||||
session.close()
|
||||
|
||||
|
||||
def convert_media_tags(mk_db):
|
||||
session = Session()
|
||||
session.autoflush = False
|
||||
|
||||
for media in mk_db.MediaEntry.find():
|
||||
print repr(media.title)
|
||||
|
||||
for otag in media.tags:
|
||||
print " ", repr((otag["slug"], otag["name"]))
|
||||
|
||||
nslug = session.query(Tag).filter_by(slug=otag["slug"]).first()
|
||||
print " ", repr(nslug)
|
||||
if nslug is None:
|
||||
nslug = Tag(slug=otag["slug"])
|
||||
session.add(nslug)
|
||||
session.flush()
|
||||
print " ", repr(nslug), nslug.id
|
||||
|
||||
ntag = MediaTag()
|
||||
ntag.tag = nslug.id
|
||||
ntag.name = otag["name"]
|
||||
ntag.media_entry = obj_id_table[media._id]
|
||||
session.add(ntag)
|
||||
|
||||
session.commit()
|
||||
session.close()
|
||||
|
||||
|
||||
def convert_media_comments(mk_db):
|
||||
session = Session()
|
||||
|
||||
for entry in mk_db.MediaComment.find():
|
||||
print repr(entry.content)
|
||||
|
||||
new_entry = MediaComment()
|
||||
copy_attrs(entry, new_entry,
|
||||
('created',
|
||||
'content', 'content_html',))
|
||||
copy_reference_attr(entry, new_entry, "media_entry")
|
||||
copy_reference_attr(entry, new_entry, "author")
|
||||
|
||||
session.add(new_entry)
|
||||
session.flush()
|
||||
add_obj_ids(entry, new_entry)
|
||||
|
||||
session.commit()
|
||||
session.close()
|
||||
|
||||
|
||||
def main():
|
||||
global_config, app_config = setup_global_and_app_config("mediagoblin.ini")
|
||||
|
||||
sql_conn, sql_db = sql_connect({'sql_engine': 'sqlite:///mediagoblin.db'})
|
||||
|
||||
mk_conn, mk_db = mongo_connect(app_config)
|
||||
|
||||
Base.metadata.create_all(sql_db.engine)
|
||||
|
||||
convert_users(mk_db)
|
||||
Session.remove()
|
||||
convert_media_entries(mk_db)
|
||||
Session.remove()
|
||||
convert_media_tags(mk_db)
|
||||
Session.remove()
|
||||
convert_media_comments(mk_db)
|
||||
Session.remove()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
18
mediagoblin/db/sql/extratypes.py
Normal file
18
mediagoblin/db/sql/extratypes.py
Normal file
@@ -0,0 +1,18 @@
|
||||
from sqlalchemy.types import TypeDecorator, Unicode
|
||||
|
||||
|
||||
class PathTupleWithSlashes(TypeDecorator):
|
||||
"Represents a Tuple of strings as a slash separated string."
|
||||
|
||||
impl = Unicode
|
||||
|
||||
def process_bind_param(self, value, dialect):
|
||||
if value is not None:
|
||||
assert len(value), "Does not support empty lists"
|
||||
value = '/'.join(value)
|
||||
return value
|
||||
|
||||
def process_result_value(self, value, dialect):
|
||||
if value is not None:
|
||||
value = tuple(value.split('/'))
|
||||
return value
|
||||
153
mediagoblin/db/sql/models.py
Normal file
153
mediagoblin/db/sql/models.py
Normal file
@@ -0,0 +1,153 @@
|
||||
import datetime
|
||||
|
||||
from sqlalchemy.ext.declarative import declarative_base
|
||||
from sqlalchemy import (
|
||||
Column, Integer, Unicode, UnicodeText, DateTime, Boolean, ForeignKey,
|
||||
UniqueConstraint)
|
||||
from sqlalchemy.orm import relationship
|
||||
from sqlalchemy.orm.collections import attribute_mapped_collection
|
||||
from sqlalchemy.ext.associationproxy import association_proxy
|
||||
|
||||
from mediagoblin.db.sql.extratypes import PathTupleWithSlashes
|
||||
from mediagoblin.db.sql.base import GMGTableBase
|
||||
from mediagoblin.db.mixin import UserMixin, MediaEntryMixin
|
||||
|
||||
|
||||
Base = declarative_base(cls=GMGTableBase)
|
||||
|
||||
|
||||
class SimpleFieldAlias(object):
|
||||
"""An alias for any field"""
|
||||
def __init__(self, fieldname):
|
||||
self.fieldname = fieldname
|
||||
|
||||
def __get__(self, instance, cls):
|
||||
return getattr(instance, self.fieldname)
|
||||
|
||||
def __set__(self, instance, val):
|
||||
setattr(instance, self.fieldname, val)
|
||||
|
||||
|
||||
class User(Base, UserMixin):
|
||||
__tablename__ = "users"
|
||||
|
||||
id = Column(Integer, primary_key=True)
|
||||
username = Column(Unicode, nullable=False, unique=True)
|
||||
email = Column(Unicode, nullable=False)
|
||||
created = Column(DateTime, nullable=False, default=datetime.datetime.now)
|
||||
pw_hash = Column(Unicode, nullable=False)
|
||||
email_verified = Column(Boolean)
|
||||
status = Column(Unicode, default=u"needs_email_verification", nullable=False)
|
||||
verification_key = Column(Unicode)
|
||||
is_admin = Column(Boolean, default=False, nullable=False)
|
||||
url = Column(Unicode)
|
||||
bio = Column(UnicodeText) # ??
|
||||
bio_html = Column(UnicodeText) # ??
|
||||
fp_verification_key = Column(Unicode)
|
||||
fp_token_expire = Column(DateTime)
|
||||
|
||||
## TODO
|
||||
# plugin data would be in a separate model
|
||||
|
||||
_id = SimpleFieldAlias("id")
|
||||
|
||||
|
||||
class MediaEntry(Base, MediaEntryMixin):
|
||||
__tablename__ = "media_entries"
|
||||
|
||||
id = Column(Integer, primary_key=True)
|
||||
uploader = Column(Integer, ForeignKey('users.id'), nullable=False)
|
||||
title = Column(Unicode, nullable=False)
|
||||
slug = Column(Unicode, nullable=False)
|
||||
created = Column(DateTime, nullable=False, default=datetime.datetime.now)
|
||||
description = Column(UnicodeText) # ??
|
||||
description_html = Column(UnicodeText) # ??
|
||||
media_type = Column(Unicode, nullable=False)
|
||||
state = Column(Unicode, nullable=False) # or use sqlalchemy.types.Enum?
|
||||
|
||||
fail_error = Column(Unicode)
|
||||
fail_metadata = Column(UnicodeText)
|
||||
|
||||
queued_media_file = Column(PathTupleWithSlashes)
|
||||
|
||||
queued_task_id = Column(Unicode)
|
||||
|
||||
__table_args__ = (
|
||||
UniqueConstraint('uploader', 'slug'),
|
||||
{})
|
||||
|
||||
get_uploader = relationship(User)
|
||||
|
||||
media_files_helper = relationship("MediaFile",
|
||||
collection_class=attribute_mapped_collection("name"),
|
||||
cascade="all, delete-orphan"
|
||||
)
|
||||
media_files = association_proxy('media_files_helper', 'file_path',
|
||||
creator=lambda k,v: MediaFile(name=k, file_path=v)
|
||||
)
|
||||
|
||||
## TODO
|
||||
# media_data
|
||||
# attachment_files
|
||||
# fail_error
|
||||
|
||||
|
||||
class MediaFile(Base):
|
||||
__tablename__ = "mediafiles"
|
||||
|
||||
media_entry = Column(
|
||||
Integer, ForeignKey(MediaEntry.id),
|
||||
nullable=False, primary_key=True)
|
||||
name = Column(Unicode, primary_key=True)
|
||||
file_path = Column(PathTupleWithSlashes)
|
||||
|
||||
def __repr__(self):
|
||||
return "<MediaFile %s: %r>" % (self.name, self.file_path)
|
||||
|
||||
|
||||
class Tag(Base):
|
||||
__tablename__ = "tags"
|
||||
|
||||
id = Column(Integer, primary_key=True)
|
||||
slug = Column(Unicode, nullable=False, unique=True)
|
||||
|
||||
|
||||
class MediaTag(Base):
|
||||
__tablename__ = "media_tags"
|
||||
|
||||
id = Column(Integer, primary_key=True)
|
||||
tag = Column(Integer, ForeignKey('tags.id'), nullable=False)
|
||||
name = Column(Unicode)
|
||||
media_entry = Column(
|
||||
Integer, ForeignKey('media_entries.id'),
|
||||
nullable=False)
|
||||
# created = Column(DateTime, nullable=False, default=datetime.datetime.now)
|
||||
|
||||
__table_args__ = (
|
||||
UniqueConstraint('tag', 'media_entry'),
|
||||
{})
|
||||
|
||||
|
||||
class MediaComment(Base):
|
||||
__tablename__ = "media_comments"
|
||||
|
||||
id = Column(Integer, primary_key=True)
|
||||
media_entry = Column(
|
||||
Integer, ForeignKey('media_entries.id'), nullable=False)
|
||||
author = Column(Integer, ForeignKey('users.id'), nullable=False)
|
||||
created = Column(DateTime, nullable=False, default=datetime.datetime.now)
|
||||
content = Column(UnicodeText, nullable=False)
|
||||
content_html = Column(UnicodeText)
|
||||
|
||||
get_author = relationship(User)
|
||||
|
||||
|
||||
def show_table_init():
|
||||
from sqlalchemy import create_engine
|
||||
engine = create_engine('sqlite:///:memory:', echo=True)
|
||||
|
||||
Base.metadata.create_all(engine)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
show_table_init()
|
||||
33
mediagoblin/db/sql/open.py
Normal file
33
mediagoblin/db/sql/open.py
Normal file
@@ -0,0 +1,33 @@
|
||||
from sqlalchemy import create_engine
|
||||
|
||||
from mediagoblin.db.sql.base import Session
|
||||
from mediagoblin.db.sql.models import Base
|
||||
|
||||
|
||||
class DatabaseMaster(object):
|
||||
def __init__(self, engine):
|
||||
self.engine = engine
|
||||
|
||||
for k,v in Base._decl_class_registry.iteritems():
|
||||
setattr(self, k, v)
|
||||
|
||||
def commit(self):
|
||||
Session.commit()
|
||||
|
||||
def save(self, obj):
|
||||
Session.add(obj)
|
||||
Session.flush()
|
||||
|
||||
def reset_after_request(self):
|
||||
Session.remove()
|
||||
|
||||
|
||||
def setup_connection_and_db_from_config(app_config):
|
||||
engine = create_engine(app_config['sql_engine'], echo=True)
|
||||
Session.configure(bind=engine)
|
||||
|
||||
return "dummy conn", DatabaseMaster(engine)
|
||||
|
||||
|
||||
def check_db_migrations_current(db):
|
||||
pass
|
||||
@@ -14,278 +14,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/>.
|
||||
|
||||
"""
|
||||
Utilities for database operations.
|
||||
|
||||
Some note on migration and indexing tools:
|
||||
|
||||
We store information about what the state of the database is in the
|
||||
'mediagoblin' document of the 'app_metadata' collection. Keys in that
|
||||
document relevant to here:
|
||||
|
||||
- 'migration_number': The integer representing the current state of
|
||||
the migrations
|
||||
"""
|
||||
|
||||
import copy
|
||||
|
||||
# Imports that other modules might use
|
||||
from pymongo import ASCENDING, DESCENDING
|
||||
from pymongo.errors import InvalidId
|
||||
from mongokit import ObjectId
|
||||
|
||||
from mediagoblin.db.indexes import ACTIVE_INDEXES, DEPRECATED_INDEXES
|
||||
|
||||
|
||||
################
|
||||
# Indexing tools
|
||||
################
|
||||
|
||||
|
||||
def add_new_indexes(database, active_indexes=ACTIVE_INDEXES):
|
||||
"""
|
||||
Add any new indexes to the database.
|
||||
|
||||
Args:
|
||||
- database: pymongo or mongokit database instance.
|
||||
- active_indexes: indexes to possibly add in the pattern of:
|
||||
{'collection_name': {
|
||||
'identifier': {
|
||||
'index': [index_foo_goes_here],
|
||||
'unique': True}}
|
||||
where 'index' is the index to add and all other options are
|
||||
arguments for collection.create_index.
|
||||
|
||||
Returns:
|
||||
A list of indexes added in form ('collection', 'index_name')
|
||||
"""
|
||||
indexes_added = []
|
||||
|
||||
for collection_name, indexes in active_indexes.iteritems():
|
||||
collection = database[collection_name]
|
||||
collection_indexes = collection.index_information().keys()
|
||||
|
||||
for index_name, index_data in indexes.iteritems():
|
||||
if not index_name in collection_indexes:
|
||||
# Get a copy actually so we don't modify the actual
|
||||
# structure
|
||||
index_data = copy.copy(index_data)
|
||||
index = index_data.pop('index')
|
||||
collection.create_index(
|
||||
index, name=index_name, **index_data)
|
||||
|
||||
indexes_added.append((collection_name, index_name))
|
||||
|
||||
return indexes_added
|
||||
|
||||
|
||||
def remove_deprecated_indexes(database, deprecated_indexes=DEPRECATED_INDEXES):
|
||||
"""
|
||||
Remove any deprecated indexes from the database.
|
||||
|
||||
Args:
|
||||
- database: pymongo or mongokit database instance.
|
||||
- deprecated_indexes: the indexes to deprecate in the pattern of:
|
||||
{'collection_name': {
|
||||
'identifier': {
|
||||
'index': [index_foo_goes_here],
|
||||
'unique': True}}
|
||||
|
||||
(... although we really only need the 'identifier' here, as the
|
||||
rest of the information isn't used in this case. But it's kept
|
||||
around so we can remember what it was)
|
||||
|
||||
Returns:
|
||||
A list of indexes removed in form ('collection', 'index_name')
|
||||
"""
|
||||
indexes_removed = []
|
||||
|
||||
for collection_name, indexes in deprecated_indexes.iteritems():
|
||||
collection = database[collection_name]
|
||||
collection_indexes = collection.index_information().keys()
|
||||
|
||||
for index_name, index_data in indexes.iteritems():
|
||||
if index_name in collection_indexes:
|
||||
collection.drop_index(index_name)
|
||||
|
||||
indexes_removed.append((collection_name, index_name))
|
||||
|
||||
return indexes_removed
|
||||
|
||||
|
||||
#################
|
||||
# Migration tools
|
||||
#################
|
||||
|
||||
# The default migration registry...
|
||||
#
|
||||
# Don't set this yourself! RegisterMigration will automatically fill
|
||||
# this with stuff via decorating methods in migrations.py
|
||||
|
||||
class MissingCurrentMigration(Exception): pass
|
||||
|
||||
|
||||
MIGRATIONS = {}
|
||||
|
||||
|
||||
class RegisterMigration(object):
|
||||
"""
|
||||
Tool for registering migrations
|
||||
|
||||
Call like:
|
||||
|
||||
@RegisterMigration(33)
|
||||
def update_dwarves(database):
|
||||
[...]
|
||||
|
||||
This will register your migration with the default migration
|
||||
registry. Alternately, to specify a very specific
|
||||
migration_registry, you can pass in that as the second argument.
|
||||
|
||||
Note, the number of your migration should NEVER be 0 or less than
|
||||
0. 0 is the default "no migrations" state!
|
||||
"""
|
||||
def __init__(self, migration_number, migration_registry=MIGRATIONS):
|
||||
assert migration_number > 0, "Migration number must be > 0!"
|
||||
assert not migration_registry.has_key(migration_number), \
|
||||
"Duplicate migration numbers detected! That's not allowed!"
|
||||
|
||||
self.migration_number = migration_number
|
||||
self.migration_registry = migration_registry
|
||||
|
||||
def __call__(self, migration):
|
||||
self.migration_registry[self.migration_number] = migration
|
||||
return migration
|
||||
|
||||
|
||||
class MigrationManager(object):
|
||||
"""
|
||||
Migration handling tool.
|
||||
|
||||
Takes information about a database, lets you update the database
|
||||
to the latest migrations, etc.
|
||||
"""
|
||||
def __init__(self, database, migration_registry=MIGRATIONS):
|
||||
"""
|
||||
Args:
|
||||
- database: database we're going to migrate
|
||||
- migration_registry: where we should find all migrations to
|
||||
run
|
||||
"""
|
||||
self.database = database
|
||||
self.migration_registry = migration_registry
|
||||
self._sorted_migrations = None
|
||||
|
||||
def _ensure_current_migration_record(self):
|
||||
"""
|
||||
If there isn't a database[u'app_metadata'] mediagoblin entry
|
||||
with the 'current_migration', throw an error.
|
||||
"""
|
||||
if self.database_current_migration() is None:
|
||||
raise MissingCurrentMigration(
|
||||
"Tried to call function which requires "
|
||||
"'current_migration' set in database")
|
||||
|
||||
@property
|
||||
def sorted_migrations(self):
|
||||
"""
|
||||
Sort migrations if necessary and store in self._sorted_migrations
|
||||
"""
|
||||
if not self._sorted_migrations:
|
||||
self._sorted_migrations = sorted(
|
||||
self.migration_registry.items(),
|
||||
# sort on the key... the migration number
|
||||
key=lambda migration_tuple: migration_tuple[0])
|
||||
|
||||
return self._sorted_migrations
|
||||
|
||||
def latest_migration(self):
|
||||
"""
|
||||
Return a migration number for the latest migration, or 0 if
|
||||
there are no migrations.
|
||||
"""
|
||||
if self.sorted_migrations:
|
||||
return self.sorted_migrations[-1][0]
|
||||
else:
|
||||
# If no migrations have been set, we start at 0.
|
||||
return 0
|
||||
|
||||
def set_current_migration(self, migration_number):
|
||||
"""
|
||||
Set the migration in the database to migration_number
|
||||
"""
|
||||
# Add the mediagoblin migration if necessary
|
||||
self.database[u'app_metadata'].update(
|
||||
{u'_id': u'mediagoblin'},
|
||||
{u'$set': {u'current_migration': migration_number}},
|
||||
upsert=True)
|
||||
|
||||
def install_migration_version_if_missing(self):
|
||||
"""
|
||||
Sets the migration to the latest version if no migration
|
||||
version at all is set.
|
||||
"""
|
||||
mgoblin_metadata = self.database[u'app_metadata'].find_one(
|
||||
{u'_id': u'mediagoblin'})
|
||||
if not mgoblin_metadata:
|
||||
latest_migration = self.latest_migration()
|
||||
self.set_current_migration(latest_migration)
|
||||
|
||||
def database_current_migration(self):
|
||||
"""
|
||||
Return the current migration in the database.
|
||||
"""
|
||||
mgoblin_metadata = self.database[u'app_metadata'].find_one(
|
||||
{u'_id': u'mediagoblin'})
|
||||
if not mgoblin_metadata:
|
||||
return None
|
||||
else:
|
||||
return mgoblin_metadata[u'current_migration']
|
||||
|
||||
def database_at_latest_migration(self):
|
||||
"""
|
||||
See if the database is at the latest migration.
|
||||
Returns a boolean.
|
||||
"""
|
||||
current_migration = self.database_current_migration()
|
||||
return current_migration == self.latest_migration()
|
||||
|
||||
def migrations_to_run(self):
|
||||
"""
|
||||
Get a list of migrations to run still, if any.
|
||||
|
||||
Note that calling this will set your migration version to the
|
||||
latest version if it isn't installed to anything yet!
|
||||
"""
|
||||
self._ensure_current_migration_record()
|
||||
|
||||
db_current_migration = self.database_current_migration()
|
||||
|
||||
return [
|
||||
(migration_number, migration_func)
|
||||
for migration_number, migration_func in self.sorted_migrations
|
||||
if migration_number > db_current_migration]
|
||||
|
||||
def migrate_new(self, pre_callback=None, post_callback=None):
|
||||
"""
|
||||
Run all migrations.
|
||||
|
||||
Includes two optional args:
|
||||
- pre_callback: if called, this is a callback on something to
|
||||
run pre-migration. Takes (migration_number, migration_func)
|
||||
as arguments
|
||||
- pre_callback: if called, this is a callback on something to
|
||||
run post-migration. Takes (migration_number, migration_func)
|
||||
as arguments
|
||||
"""
|
||||
# If we aren't set to any version number, presume we're at the
|
||||
# latest (which means we'll do nothing here...)
|
||||
self.install_migration_version_if_missing()
|
||||
|
||||
for migration_number, migration_func in self.migrations_to_run():
|
||||
if pre_callback:
|
||||
pre_callback(migration_number, migration_func)
|
||||
migration_func(self.database)
|
||||
self.set_current_migration(migration_number)
|
||||
if post_callback:
|
||||
post_callback(migration_number, migration_func)
|
||||
from mediagoblin.db.mongo.util import (ObjectId, InvalidId,
|
||||
DESCENDING)
|
||||
|
||||
@@ -40,7 +40,7 @@ def require_active_login(controller):
|
||||
request.user.get('status') == u'needs_email_verification':
|
||||
return redirect(
|
||||
request, 'mediagoblin.user_pages.user_home',
|
||||
user=request.user['username'])
|
||||
user=request.user.username)
|
||||
elif not request.user or request.user.get('status') != u'active':
|
||||
return exc.HTTPFound(
|
||||
location="%s?next=%s" % (
|
||||
@@ -57,10 +57,10 @@ 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']):
|
||||
uploader_id = 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)
|
||||
@@ -95,11 +95,10 @@ def get_user_media_entry(controller):
|
||||
|
||||
if not user:
|
||||
return render_404(request)
|
||||
|
||||
media = request.db.MediaEntry.find_one(
|
||||
{'slug': request.matchdict['media'],
|
||||
'state': 'processed',
|
||||
'uploader': user['_id']})
|
||||
'uploader': user._id})
|
||||
|
||||
# no media via slug? Grab it via ObjectId
|
||||
if not media:
|
||||
@@ -107,7 +106,7 @@ def get_user_media_entry(controller):
|
||||
media = request.db.MediaEntry.find_one(
|
||||
{'_id': ObjectId(request.matchdict['media']),
|
||||
'state': 'processed',
|
||||
'uploader': user['_id']})
|
||||
'uploader': user._id})
|
||||
except InvalidId:
|
||||
return render_404(request)
|
||||
|
||||
@@ -119,6 +118,7 @@ def get_user_media_entry(controller):
|
||||
|
||||
return _make_safe(wrapper, controller)
|
||||
|
||||
|
||||
def get_media_entry_by_id(controller):
|
||||
"""
|
||||
Pass in a MediaEntry based off of a url component
|
||||
@@ -138,4 +138,3 @@ def get_media_entry_by_id(controller):
|
||||
return controller(request, media=media, *args, **kwargs)
|
||||
|
||||
return _make_safe(wrapper, controller)
|
||||
|
||||
|
||||
@@ -13,5 +13,3 @@
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
|
||||
@@ -24,15 +24,21 @@ class EditForm(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'),
|
||||
description=_("""You can use
|
||||
<a href="http://daringfireball.net/projects/markdown/basics">
|
||||
Markdown</a> for formatting."""))
|
||||
tags = wtforms.TextField(
|
||||
_('Tags'),
|
||||
[tag_length_validator])
|
||||
[tag_length_validator],
|
||||
description=_(
|
||||
"Separate tags by commas."))
|
||||
slug = wtforms.TextField(
|
||||
_('Slug'),
|
||||
[wtforms.validators.Required(message=_("The slug can't be empty"))],
|
||||
description=_(
|
||||
"The title part of this media's URL. "
|
||||
"The title part of this media's address. "
|
||||
"You usually don't need to change this."))
|
||||
license = wtforms.SelectField(
|
||||
_('License'),
|
||||
@@ -41,11 +47,27 @@ class EditForm(wtforms.Form):
|
||||
class EditProfileForm(wtforms.Form):
|
||||
bio = wtforms.TextAreaField(
|
||||
_('Bio'),
|
||||
[wtforms.validators.Length(min=0, max=500)])
|
||||
[wtforms.validators.Length(min=0, max=500)],
|
||||
description=_("""You can use
|
||||
<a href="http://daringfireball.net/projects/markdown/basics">
|
||||
Markdown</a> for formatting."""))
|
||||
url = wtforms.TextField(
|
||||
_('Website'),
|
||||
[wtforms.validators.Optional(),
|
||||
wtforms.validators.URL(message='Improperly formed URL')])
|
||||
wtforms.validators.URL(message="""This address contains errors""")])
|
||||
|
||||
|
||||
class EditAccountForm(wtforms.Form):
|
||||
old_password = wtforms.PasswordField(
|
||||
_('Old password'),
|
||||
[wtforms.validators.Required()],
|
||||
description=_(
|
||||
"Enter your old password to prove you own this account."))
|
||||
new_password = wtforms.PasswordField(
|
||||
_('New password'),
|
||||
[wtforms.validators.Required(),
|
||||
wtforms.validators.Length(min=6, max=30)],
|
||||
id="password")
|
||||
|
||||
|
||||
class EditAttachmentsForm(wtforms.Form):
|
||||
|
||||
@@ -17,8 +17,8 @@
|
||||
|
||||
def may_edit_media(request, media):
|
||||
"""Check, if the request's user may edit the media details"""
|
||||
if media['uploader'] == request.user['_id']:
|
||||
if media.uploader == request.user._id:
|
||||
return True
|
||||
if request.user['is_admin']:
|
||||
if request.user.is_admin:
|
||||
return True
|
||||
return False
|
||||
|
||||
@@ -20,4 +20,7 @@ from routes.route import Route
|
||||
edit_routes = [
|
||||
# Media editing view handled in user_pages/routing.py
|
||||
Route('mediagoblin.edit.profile', '/profile/',
|
||||
controller="mediagoblin.edit.views:edit_profile")]
|
||||
controller="mediagoblin.edit.views:edit_profile"),
|
||||
Route('mediagoblin.edit.account', '/account/',
|
||||
controller="mediagoblin.edit.views:edit_account")
|
||||
]
|
||||
|
||||
@@ -26,6 +26,7 @@ from werkzeug.utils import secure_filename
|
||||
from mediagoblin import messages
|
||||
from mediagoblin import mg_globals
|
||||
|
||||
from mediagoblin.auth import lib as auth_lib
|
||||
from mediagoblin.edit import forms
|
||||
from mediagoblin.edit.lib import may_edit_media
|
||||
from mediagoblin.decorators import require_active_login, get_user_media_entry
|
||||
@@ -43,11 +44,11 @@ def edit_media(request, media):
|
||||
return exc.HTTPForbidden()
|
||||
|
||||
defaults = dict(
|
||||
title=media['title'],
|
||||
slug=media['slug'],
|
||||
description=media['description'],
|
||||
tags=media_tags_as_string(media['tags']),
|
||||
license=media['license'])
|
||||
title=media.title,
|
||||
slug=media.slug,
|
||||
description=media.description,
|
||||
tags=media_tags_as_string(media.tags))
|
||||
license=media.license)
|
||||
|
||||
form = forms.EditForm(
|
||||
request.POST,
|
||||
@@ -58,33 +59,34 @@ def edit_media(request, media):
|
||||
# and userid.
|
||||
existing_user_slug_entries = request.db.MediaEntry.find(
|
||||
{'slug': request.POST['slug'],
|
||||
'uploader': media['uploader'],
|
||||
'_id': {'$ne': media['_id']}}).count()
|
||||
'uploader': media.uploader,
|
||||
'_id': {'$ne': media._id}}).count()
|
||||
|
||||
if existing_user_slug_entries:
|
||||
form.slug.errors.append(
|
||||
_(u'An entry with that slug already exists for this user.'))
|
||||
else:
|
||||
media['title'] = unicode(request.POST['title'])
|
||||
media['description'] = unicode(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'])
|
||||
media.description_html = cleaned_markdown_conversion(
|
||||
media.description)
|
||||
|
||||
media['license'] = (
|
||||
media.license = (
|
||||
unicode(request.POST.get('license'))
|
||||
or '')
|
||||
|
||||
media['slug'] = unicode(request.POST['slug'])
|
||||
media.slug = unicode(request.POST['slug'])
|
||||
|
||||
media.save()
|
||||
|
||||
return exc.HTTPFound(
|
||||
location=media.url_for_self(request.urlgen))
|
||||
|
||||
if request.user['is_admin'] \
|
||||
and media['uploader'] != request.user['_id'] \
|
||||
if request.user.is_admin \
|
||||
and media.uploader != request.user._id \
|
||||
and request.method != 'POST':
|
||||
messages.add_message(
|
||||
request, messages.WARNING,
|
||||
@@ -110,7 +112,7 @@ def edit_attachments(request, media):
|
||||
|
||||
attachment_public_filepath \
|
||||
= mg_globals.public_store.get_unique_filepath(
|
||||
['media_entries', unicode(media['_id']), 'attachment',
|
||||
['media_entries', unicode(media._id), 'attachment',
|
||||
secure_filename(request.POST['attachment_file'].filename)])
|
||||
|
||||
attachment_public_file = mg_globals.public_store.get_file(
|
||||
@@ -126,7 +128,7 @@ def edit_attachments(request, media):
|
||||
name=request.POST['attachment_name'] \
|
||||
or request.POST['attachment_file'].filename,
|
||||
filepath=attachment_public_filepath,
|
||||
created=datetime.utcnow()
|
||||
created=datetime.utcnow(),
|
||||
))
|
||||
|
||||
media.save()
|
||||
@@ -152,7 +154,7 @@ def edit_attachments(request, media):
|
||||
def edit_profile(request):
|
||||
# admins may edit any user profile given a username in the querystring
|
||||
edit_username = request.GET.get('username')
|
||||
if request.user['is_admin'] and request.user['username'] != edit_username:
|
||||
if request.user.is_admin and request.user.username != edit_username:
|
||||
user = request.db.User.find_one({'username': edit_username})
|
||||
# No need to warn again if admin just submitted an edited profile
|
||||
if request.method != 'POST':
|
||||
@@ -167,22 +169,64 @@ def edit_profile(request):
|
||||
bio=user.get('bio'))
|
||||
|
||||
if request.method == 'POST' and form.validate():
|
||||
user['url'] = unicode(request.POST['url'])
|
||||
user['bio'] = unicode(request.POST['bio'])
|
||||
user.url = unicode(request.POST['url'])
|
||||
user.bio = unicode(request.POST['bio'])
|
||||
|
||||
user['bio_html'] = cleaned_markdown_conversion(user['bio'])
|
||||
user.bio_html = cleaned_markdown_conversion(user.bio)
|
||||
|
||||
user.save()
|
||||
user.save()
|
||||
|
||||
messages.add_message(request,
|
||||
messages.SUCCESS,
|
||||
'Profile edited!')
|
||||
return redirect(request,
|
||||
'mediagoblin.user_pages.user_home',
|
||||
user=edit_username)
|
||||
messages.add_message(request,
|
||||
messages.SUCCESS,
|
||||
_("Profile changes saved"))
|
||||
return redirect(request,
|
||||
'mediagoblin.user_pages.user_home',
|
||||
user=user['username'])
|
||||
|
||||
return render_to_response(
|
||||
request,
|
||||
'mediagoblin/edit/edit_profile.html',
|
||||
{'user': user,
|
||||
'form': form})
|
||||
|
||||
|
||||
@require_active_login
|
||||
def edit_account(request):
|
||||
edit_username = request.GET.get('username')
|
||||
user = request.user
|
||||
|
||||
form = forms.EditAccountForm(request.POST)
|
||||
|
||||
if request.method == 'POST' and form.validate():
|
||||
password_matches = auth_lib.bcrypt_check_password(
|
||||
request.POST['old_password'],
|
||||
user.pw_hash)
|
||||
|
||||
if (request.POST['old_password'] or request.POST['new_password']) and not \
|
||||
password_matches:
|
||||
form.old_password.errors.append(_('Wrong password'))
|
||||
|
||||
return render_to_response(
|
||||
request,
|
||||
'mediagoblin/edit/edit_account.html',
|
||||
{'user': user,
|
||||
'form': form})
|
||||
|
||||
if password_matches:
|
||||
user.pw_hash = auth_lib.bcrypt_gen_password_hash(
|
||||
request.POST['new_password'])
|
||||
|
||||
user.save()
|
||||
|
||||
messages.add_message(request,
|
||||
messages.SUCCESS,
|
||||
_("Account settings saved"))
|
||||
return redirect(request,
|
||||
'mediagoblin.user_pages.user_home',
|
||||
user=user.username)
|
||||
|
||||
return render_to_response(
|
||||
request,
|
||||
'mediagoblin/edit/edit_account.html',
|
||||
{'user': user,
|
||||
'form': form})
|
||||
|
||||
@@ -29,7 +29,7 @@ SUBCOMMAND_MAP = {
|
||||
'setup': 'mediagoblin.gmg_commands.migrate:migrate_parser_setup',
|
||||
'func': 'mediagoblin.gmg_commands.migrate:migrate',
|
||||
'help': 'Apply all unapplied bulk migrations to the database'},
|
||||
'adduser':{
|
||||
'adduser': {
|
||||
'setup': 'mediagoblin.gmg_commands.users:adduser_parser_setup',
|
||||
'func': 'mediagoblin.gmg_commands.users:adduser',
|
||||
'help': 'Creates an user'},
|
||||
@@ -68,7 +68,7 @@ def main_cli():
|
||||
|
||||
subparsers = parser.add_subparsers(help='sub-command help')
|
||||
for command_name, command_struct in SUBCOMMAND_MAP.iteritems():
|
||||
if command_struct.has_key('help'):
|
||||
if 'help' in command_struct:
|
||||
subparser = subparsers.add_parser(
|
||||
command_name, help=command_struct['help'])
|
||||
else:
|
||||
@@ -94,4 +94,3 @@ def main_cli():
|
||||
|
||||
if __name__ == '__main__':
|
||||
main_cli()
|
||||
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
|
||||
from mediagoblin import mg_globals
|
||||
from mediagoblin.db.open import setup_connection_and_db_from_config
|
||||
from mediagoblin.init.config import read_mediagoblin_config
|
||||
from mediagoblin.storage.filestorage import BasicFileStorage
|
||||
from mediagoblin.init import setup_storage, setup_global_and_app_config
|
||||
|
||||
@@ -65,10 +64,10 @@ def _import_media(db, args):
|
||||
queue_cache = BasicFileStorage(
|
||||
args._cache_path['queue'])
|
||||
|
||||
for entry in db.media_entries.find():
|
||||
for name, path in entry['media_files'].items():
|
||||
for entry in db.MediaEntry.find():
|
||||
for name, path in entry.media_files.items():
|
||||
_log.info('Importing: {0} - {1}'.format(
|
||||
entry['title'],
|
||||
entry.title,
|
||||
name))
|
||||
|
||||
media_file = mg_globals.public_store.get_file(path, mode='wb')
|
||||
@@ -88,7 +87,7 @@ def _import_database(db, args):
|
||||
args.mongorestore_path,
|
||||
'-d', db.name,
|
||||
os.path.join(args._cache_path['database'], db.name)])
|
||||
|
||||
|
||||
p.wait()
|
||||
|
||||
_log.info('...Database imported')
|
||||
@@ -108,7 +107,7 @@ def env_import(args):
|
||||
|
||||
global_config, app_config = setup_global_and_app_config(args.conf_file)
|
||||
connection, db = setup_connection_and_db_from_config(
|
||||
app_config, use_pymongo=True)
|
||||
app_config)
|
||||
|
||||
tf = tarfile.open(
|
||||
args.tar_file,
|
||||
@@ -207,15 +206,17 @@ def _export_media(db, args):
|
||||
queue_cache = BasicFileStorage(
|
||||
args._cache_path['queue'])
|
||||
|
||||
for entry in db.media_entries.find():
|
||||
for name, path in entry['media_files'].items():
|
||||
_log.info('Exporting {0} - {1}'.format(
|
||||
entry['title'],
|
||||
for entry in db.MediaEntry.find():
|
||||
for name, path in entry.media_files.items():
|
||||
_log.info(u'Exporting {0} - {1}'.format(
|
||||
entry.title,
|
||||
name))
|
||||
|
||||
mc_file = media_cache.get_file(path, mode='wb')
|
||||
mc_file.write(
|
||||
mg_globals.public_store.get_file(path, mode='rb').read())
|
||||
try:
|
||||
mc_file = media_cache.get_file(path, mode='wb')
|
||||
mc_file.write(
|
||||
mg_globals.public_store.get_file(path, mode='rb').read())
|
||||
except Exception as e:
|
||||
_log.error('Failed: {0}'.format(e))
|
||||
|
||||
_log.info('...Media exported')
|
||||
|
||||
@@ -226,7 +227,8 @@ def env_export(args):
|
||||
'''
|
||||
if args.cache_path:
|
||||
if os.path.exists(args.cache_path):
|
||||
_log.error('The cache directory must not exist before you run this script')
|
||||
_log.error('The cache directory must not exist '
|
||||
'before you run this script')
|
||||
_log.error('Cache directory: {0}'.format(args.cache_path))
|
||||
|
||||
return False
|
||||
@@ -242,9 +244,9 @@ def env_export(args):
|
||||
globa_config, app_config = setup_global_and_app_config(args.conf_file)
|
||||
|
||||
setup_storage()
|
||||
|
||||
|
||||
connection, db = setup_connection_and_db_from_config(
|
||||
app_config, use_pymongo=True)
|
||||
app_config)
|
||||
|
||||
_export_database(db, args)
|
||||
|
||||
|
||||
@@ -16,12 +16,12 @@
|
||||
|
||||
import sys
|
||||
|
||||
from mediagoblin.db import util as db_util
|
||||
from mediagoblin.db.mongo import util as db_util
|
||||
from mediagoblin.db.open import setup_connection_and_db_from_config
|
||||
from mediagoblin.init.config import read_mediagoblin_config
|
||||
from mediagoblin.init import setup_global_and_app_config
|
||||
|
||||
# This MUST be imported so as to set up the appropriate migrations!
|
||||
from mediagoblin.db import migrations
|
||||
from mediagoblin.db.mongo import migrations
|
||||
|
||||
|
||||
def migrate_parser_setup(subparser):
|
||||
@@ -41,9 +41,9 @@ def _print_finished_migration(migration_number, migration_func):
|
||||
|
||||
|
||||
def migrate(args):
|
||||
config, validation_result = read_mediagoblin_config(args.conf_file)
|
||||
global_config, app_config = setup_global_and_app_config(args.conf_file)
|
||||
connection, db = setup_connection_and_db_from_config(
|
||||
config['mediagoblin'], use_pymongo=True)
|
||||
app_config, use_pymongo=True)
|
||||
migration_manager = db_util.MigrationManager(db)
|
||||
|
||||
# Clear old indexes
|
||||
@@ -53,13 +53,13 @@ def migrate(args):
|
||||
for collection, index_name in removed_indexes:
|
||||
print "Removed index '%s' in collection '%s'" % (
|
||||
index_name, collection)
|
||||
|
||||
|
||||
# Migrate
|
||||
print "\n== Applying migrations... =="
|
||||
migration_manager.migrate_new(
|
||||
pre_callback=_print_started_migration,
|
||||
post_callback=_print_finished_migration)
|
||||
|
||||
|
||||
# Add new indexes
|
||||
print "\n== Adding new indexes... =="
|
||||
new_indexes = db_util.add_new_indexes(db)
|
||||
|
||||
@@ -18,27 +18,30 @@ from mediagoblin.gmg_commands import util as commands_util
|
||||
from mediagoblin.auth import lib as auth_lib
|
||||
from mediagoblin import mg_globals
|
||||
|
||||
|
||||
def adduser_parser_setup(subparser):
|
||||
subparser.add_argument(
|
||||
'username',
|
||||
'--username','-u',
|
||||
help="Username used to login")
|
||||
subparser.add_argument(
|
||||
'password',
|
||||
help="Your supersecret word to login")
|
||||
'--password','-p',
|
||||
help="Your supersecret word to login, beware of storing it in bash history")
|
||||
subparser.add_argument(
|
||||
'email',
|
||||
help="Email to recieve notifications")
|
||||
'--email','-e',
|
||||
help="Email to receive notifications")
|
||||
|
||||
|
||||
def adduser(args):
|
||||
#TODO: Lets trust admins this do not validate Emails :)
|
||||
commands_util.setup_app(args)
|
||||
|
||||
args.username = commands_util.prompt_if_not_set(args.username, "Username:")
|
||||
args.password = commands_util.prompt_if_not_set(args.password, "Password:",True)
|
||||
args.email = commands_util.prompt_if_not_set(args.email, "Email:")
|
||||
|
||||
db = mg_globals.database
|
||||
users_with_username = \
|
||||
db.User.find({
|
||||
'username': args.username.lower()
|
||||
'username': args.username.lower(),
|
||||
}).count()
|
||||
|
||||
if users_with_username:
|
||||
@@ -47,11 +50,11 @@ def adduser(args):
|
||||
else:
|
||||
# Create the user
|
||||
entry = db.User()
|
||||
entry['username'] = unicode(args.username.lower())
|
||||
entry['email'] = unicode(args.email)
|
||||
entry['pw_hash'] = auth_lib.bcrypt_gen_password_hash(args.password)
|
||||
entry['status'] = u'active'
|
||||
entry['email_verified'] = True
|
||||
entry.username = unicode(args.username.lower())
|
||||
entry.email = unicode(args.email)
|
||||
entry.pw_hash = auth_lib.bcrypt_gen_password_hash(args.password)
|
||||
entry.status = u'active'
|
||||
entry.email_verified = True
|
||||
entry.save(validate=True)
|
||||
|
||||
print "User created (and email marked as verified)"
|
||||
@@ -68,9 +71,9 @@ def makeadmin(args):
|
||||
|
||||
db = mg_globals.database
|
||||
|
||||
user = db.User.one({'username':unicode(args.username.lower())})
|
||||
user = db.User.one({'username': unicode(args.username.lower())})
|
||||
if user:
|
||||
user['is_admin'] = True
|
||||
user.is_admin = True
|
||||
user.save()
|
||||
print 'The user is now Admin'
|
||||
else:
|
||||
@@ -91,11 +94,10 @@ def changepw(args):
|
||||
|
||||
db = mg_globals.database
|
||||
|
||||
user = db.User.one({'username':unicode(args.username.lower())})
|
||||
user = db.User.one({'username': unicode(args.username.lower())})
|
||||
if user:
|
||||
user['pw_hash'] = auth_lib.bcrypt_gen_password_hash(args.password)
|
||||
user.pw_hash = auth_lib.bcrypt_gen_password_hash(args.password)
|
||||
user.save()
|
||||
print 'Password successfully changed'
|
||||
else:
|
||||
print 'The user doesn\'t exist'
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
|
||||
from mediagoblin import app
|
||||
import getpass
|
||||
|
||||
|
||||
def setup_app(args):
|
||||
@@ -25,3 +26,15 @@ def setup_app(args):
|
||||
mgoblin_app = app.MediaGoblinApp(args.conf_file)
|
||||
|
||||
return mgoblin_app
|
||||
|
||||
def prompt_if_not_set(variable, text, password=False):
|
||||
"""
|
||||
Checks if the variable is None and prompt for a value if it is
|
||||
"""
|
||||
if variable is None:
|
||||
if not password:
|
||||
variable=raw_input(text + u' ')
|
||||
else:
|
||||
variable=getpass.getpass(text + u' ')
|
||||
|
||||
return variable
|
||||
|
||||
Binary file not shown.
@@ -1,5 +1,5 @@
|
||||
# Translations template for PROJECT.
|
||||
# Copyright (C) 2011 ORGANIZATION
|
||||
# Copyright (C) 2012 ORGANIZATION
|
||||
# This file is distributed under the same license as the PROJECT project.
|
||||
#
|
||||
# Translators:
|
||||
@@ -10,8 +10,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: GNU MediaGoblin\n"
|
||||
"Report-Msgid-Bugs-To: http://bugs.foocorp.net/projects/mediagoblin/issues\n"
|
||||
"POT-Creation-Date: 2011-11-01 23:14-0500\n"
|
||||
"PO-Revision-Date: 2011-11-02 04:13+0000\n"
|
||||
"POT-Creation-Date: 2012-01-07 13:47-0600\n"
|
||||
"PO-Revision-Date: 2012-01-07 19:44+0000\n"
|
||||
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -21,27 +21,19 @@ msgstr ""
|
||||
"Language: ar\n"
|
||||
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5\n"
|
||||
|
||||
#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:49
|
||||
#: mediagoblin/processing.py:143
|
||||
msgid "Invalid file given for media type."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:41
|
||||
msgid "Username"
|
||||
msgstr "اسم المستخدم"
|
||||
|
||||
#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:53
|
||||
#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:45
|
||||
msgid "Password"
|
||||
msgstr "كلمة السر"
|
||||
|
||||
#: mediagoblin/auth/forms.py:35
|
||||
msgid "Passwords must match."
|
||||
msgstr "يجب أن تتطابق كلمتا السر."
|
||||
|
||||
#: mediagoblin/auth/forms.py:37
|
||||
msgid "Confirm password"
|
||||
msgstr "أكّد كلمة السر"
|
||||
|
||||
#: mediagoblin/auth/forms.py:39
|
||||
msgid "Type it again here to make sure there are no spelling mistakes."
|
||||
msgstr "اكتبها مرة أخرى هنا للتأكد من عدم وجود أخطاء إملائية."
|
||||
|
||||
#: mediagoblin/auth/forms.py:42
|
||||
#: mediagoblin/auth/forms.py:34
|
||||
msgid "Email address"
|
||||
msgstr "عنوان البريد الإلكتروني"
|
||||
|
||||
@@ -54,10 +46,10 @@ msgid "Sorry, a user with that name already exists."
|
||||
msgstr "عذرًا، لقد اختار مستخدم آخر هذا الاسم."
|
||||
|
||||
#: mediagoblin/auth/views.py:77
|
||||
msgid "Sorry, that email address has already been taken."
|
||||
msgstr "عفوًا، هذا العنوان البريدي مستخدم."
|
||||
msgid "Sorry, a user with that email address already exists."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:179
|
||||
#: mediagoblin/auth/views.py:180
|
||||
msgid ""
|
||||
"Your email address has been verified. You may now login, edit your profile, "
|
||||
"and submit images!"
|
||||
@@ -65,15 +57,28 @@ msgstr ""
|
||||
"تم التحقق من بريدك الإلكتروني. يمكنك الآن الولوج، وتحرير ملفك الشخصي، ونشر "
|
||||
"الصور!"
|
||||
|
||||
#: mediagoblin/auth/views.py:185
|
||||
#: mediagoblin/auth/views.py:186
|
||||
msgid "The verification key or user id is incorrect"
|
||||
msgstr "مفتاح التحقق أو معرف المستخدم خاطئ"
|
||||
|
||||
#: mediagoblin/auth/views.py:207
|
||||
#: mediagoblin/auth/views.py:204
|
||||
msgid "You must be logged in so we know who to send the email to!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:212
|
||||
msgid "You've already verified your email address!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:225
|
||||
msgid "Resent your verification email."
|
||||
msgstr "أعدنا إرسال رسالة التحقق."
|
||||
|
||||
#: mediagoblin/auth/views.py:248
|
||||
#: mediagoblin/auth/views.py:260
|
||||
msgid ""
|
||||
"An email has been sent with instructions on how to change your password."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:270
|
||||
msgid ""
|
||||
"Could not send password recovery email as your username is inactive or your "
|
||||
"account's email address has not been verified."
|
||||
@@ -81,74 +86,127 @@ msgstr ""
|
||||
"تعذر إرسال رسالة استعادة كلمة السر لأن اسم المستخدم معطل أو لأننا لم نتحقق "
|
||||
"من بريدك الإلكتروني."
|
||||
|
||||
#: mediagoblin/auth/views.py:282
|
||||
msgid "Couldn't find someone with that username or email."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:330
|
||||
msgid "You can now log in using your new password."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:24 mediagoblin/submit/forms.py:27
|
||||
msgid "Title"
|
||||
msgstr "العنوان"
|
||||
|
||||
#: mediagoblin/edit/forms.py:28 mediagoblin/submit/forms.py:32
|
||||
#: mediagoblin/edit/forms.py:27 mediagoblin/submit/forms.py:30
|
||||
msgid "Description of this work"
|
||||
msgstr "وصف هذا العمل."
|
||||
|
||||
#: mediagoblin/edit/forms.py:28 mediagoblin/submit/forms.py:31
|
||||
msgid ""
|
||||
"You can use\n"
|
||||
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
|
||||
" Markdown</a> for formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:32 mediagoblin/submit/forms.py:35
|
||||
msgid "Tags"
|
||||
msgstr "الوسوم"
|
||||
|
||||
#: mediagoblin/edit/forms.py:31
|
||||
#: mediagoblin/edit/forms.py:34 mediagoblin/submit/forms.py:37
|
||||
msgid "Separate tags by commas."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:37
|
||||
msgid "Slug"
|
||||
msgstr "المسار"
|
||||
|
||||
#: mediagoblin/edit/forms.py:32
|
||||
#: mediagoblin/edit/forms.py:38
|
||||
msgid "The slug can't be empty"
|
||||
msgstr "لا يمكن ترك المسار فارغًا"
|
||||
|
||||
#: mediagoblin/edit/forms.py:33
|
||||
#: mediagoblin/edit/forms.py:39
|
||||
msgid ""
|
||||
"The title part of this media's URL. You usually don't need to change this."
|
||||
"The title part of this media's address. You usually don't need to change "
|
||||
"this."
|
||||
msgstr ""
|
||||
"الجزء الذي يمثل عنوان الملف في المسار. لا حاجة إلى تغيير محتوى هذه الخانة "
|
||||
"عادةً."
|
||||
|
||||
#: mediagoblin/edit/forms.py:40
|
||||
#: mediagoblin/edit/forms.py:46
|
||||
msgid "Bio"
|
||||
msgstr "السيرة"
|
||||
|
||||
#: mediagoblin/edit/forms.py:43
|
||||
#: mediagoblin/edit/forms.py:48
|
||||
msgid ""
|
||||
"You can use\n"
|
||||
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
|
||||
" Markdown</a> for formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:53
|
||||
msgid "Website"
|
||||
msgstr "الموقع الإلكتروني"
|
||||
|
||||
#: mediagoblin/edit/views.py:64
|
||||
#: mediagoblin/edit/forms.py:60
|
||||
msgid "Old password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:62
|
||||
msgid "Enter your old password to prove you own this account."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:65
|
||||
msgid "New password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:65
|
||||
msgid "An entry with that slug already exists for this user."
|
||||
msgstr "يوجد ملف آخر بهذا المسار لدى هذى المستخدم."
|
||||
|
||||
#: mediagoblin/edit/views.py:85
|
||||
#: mediagoblin/edit/views.py:86
|
||||
msgid "You are editing another user's media. Proceed with caution."
|
||||
msgstr "أنت تحرّر وسائط مستخدم آخر. كن حذرًا أثناء العملية."
|
||||
|
||||
#: mediagoblin/edit/views.py:155
|
||||
#: mediagoblin/edit/views.py:156
|
||||
msgid "You are editing a user's profile. Proceed with caution."
|
||||
msgstr "أنت تحرّر ملف مستخدم آخر. كن حذرًا أثناء العملية."
|
||||
|
||||
#: mediagoblin/process_media/errors.py:44
|
||||
msgid "Invalid file given for media type."
|
||||
#: mediagoblin/edit/views.py:174
|
||||
msgid "Profile changes saved"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:200
|
||||
msgid "Wrong password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:216
|
||||
msgid "Account settings saved"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/media_types/__init__.py:77
|
||||
msgid "Could not extract any file extension from \"{filename}\""
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/media_types/__init__.py:88
|
||||
msgid "Sorry, I don't support that file type :("
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/submit/forms.py:25
|
||||
msgid "File"
|
||||
msgstr "الملف"
|
||||
|
||||
#: mediagoblin/submit/forms.py:30
|
||||
msgid "Description of this work"
|
||||
msgstr "وصف هذا العمل."
|
||||
|
||||
#: mediagoblin/submit/views.py:46
|
||||
#: mediagoblin/submit/views.py:50
|
||||
msgid "You must provide a file."
|
||||
msgstr "يجب أن تضع ملفًا."
|
||||
|
||||
#: mediagoblin/submit/views.py:49
|
||||
msgid "The file doesn't seem to be an image!"
|
||||
msgstr "لا يبدو أن هذا الملف صورة!"
|
||||
|
||||
#: mediagoblin/submit/views.py:121
|
||||
#: mediagoblin/submit/views.py:128
|
||||
msgid "Woohoo! Submitted!"
|
||||
msgstr "يا سلام! نُشرَت!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:21
|
||||
#: mediagoblin/templates/mediagoblin/404.html:22
|
||||
msgid "Image of 404 goblin stressing out"
|
||||
msgstr "صورة قزم مرتبك"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:23
|
||||
msgid "Oops!"
|
||||
msgstr "ويحي!"
|
||||
|
||||
@@ -163,33 +221,30 @@ msgid ""
|
||||
msgstr ""
|
||||
"إن كنت متأكدًا من صحة العنوان فربما تكون الصفحة التي تريدها نُقلت أو حُذفت."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:32
|
||||
msgid "Image of 404 goblin stressing out"
|
||||
msgstr "صورة قزم مرتبك"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:22
|
||||
msgid "GNU MediaGoblin"
|
||||
msgstr "غنو ميدياغوبلن"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:47
|
||||
#: mediagoblin/templates/mediagoblin/base.html:48
|
||||
msgid "MediaGoblin logo"
|
||||
msgstr "شعار ميدياغوبلن"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:52
|
||||
msgid "Submit media"
|
||||
msgstr "أرسل وسائط"
|
||||
#: mediagoblin/templates/mediagoblin/base.html:53
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:157
|
||||
msgid "Add media"
|
||||
msgstr "أضف وسائط"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:63
|
||||
msgid "verify your email!"
|
||||
msgstr "أكّد بريدك"
|
||||
#: mediagoblin/templates/mediagoblin/base.html:64
|
||||
msgid "Verify your email!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:73
|
||||
#: mediagoblin/templates/mediagoblin/base.html:71
|
||||
msgid "log out"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:74
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:27
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:35
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:45
|
||||
msgid "Log in"
|
||||
msgstr "لِج"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:89
|
||||
#: mediagoblin/templates/mediagoblin/base.html:86
|
||||
msgid ""
|
||||
"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
|
||||
"href=\"http://gnu.org/\">GNU</a> project"
|
||||
@@ -199,81 +254,53 @@ msgstr ""
|
||||
msgid "Explore"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:27
|
||||
msgid "Hi there, media lover! MediaGoblin is..."
|
||||
msgstr "مرحبًا بكم يا محبي الوسائط! ميدياغوبلن هو..."
|
||||
#: mediagoblin/templates/mediagoblin/root.html:26
|
||||
msgid "Hi there, welcome to this MediaGoblin site!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:28
|
||||
msgid ""
|
||||
"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
|
||||
"extraordinarily great piece of media hosting software."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:29
|
||||
msgid "The perfect place for your media!"
|
||||
msgstr "المكان الأنسب لوسائطك!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:30
|
||||
msgid ""
|
||||
"A place for people to collaborate and show off original and derived "
|
||||
"creations!"
|
||||
msgstr "مكان يجتمع فيه الناس ليتعاونوا ويعرضوا إبداعاتهم الأصلية والمقتبسة!"
|
||||
"To add your own media, place comments, save your favourites and more, you "
|
||||
"can log in with your MediaGoblin account."
|
||||
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 "مشروع حر، فنحن أحد مشاريع <a href=\"http://gnu.org\">غنو</a>."
|
||||
msgid "Don't have one yet? It's easy!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:32
|
||||
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 ""
|
||||
"جاهز للتمدد. (سيُضاف دعم أنساق كثيرة من الوسائط قريبًا، كما سندعم الفيديو!)."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:34
|
||||
msgid ""
|
||||
"Powered by people like you. (<a "
|
||||
"href=\"http://mediagoblin.org/pages/join.html\">You can help us improve this"
|
||||
" software!</a>)"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:38
|
||||
msgid "Excited to join us?"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:39
|
||||
#, python-format
|
||||
msgid ""
|
||||
"<a class=\"header_submit_highlight\" href=\"%(register_url)s\">Create a free account</a>\n"
|
||||
" or\n"
|
||||
" <a class=\"header_submit\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
|
||||
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Create an account at this site</a>\n"
|
||||
" or\n"
|
||||
" <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
|
||||
msgstr ""
|
||||
"<a class=\"header_submit_highlight\" href=\"%(register_url)s\">أنشئ حسابًا مجانيًا</a>\n"
|
||||
" أو\n"
|
||||
" <a class=\"header_submit\" href=\"http://wiki.mediagoblin.org/HackingHowto\">ركّب ميدياغوبلن على خادومك الخاص</a>"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:53
|
||||
#: mediagoblin/templates/mediagoblin/root.html:40
|
||||
msgid "Most recent media"
|
||||
msgstr "أحدث الوسائط"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:29
|
||||
msgid "Enter your new password"
|
||||
msgstr "أدخل كلمة سرك الجديدة"
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:32
|
||||
msgid "Set your new password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:29
|
||||
msgid "Enter your username or email"
|
||||
msgstr "أدخل اسم المستخدم أو بريدك الإلكتروني"
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:35
|
||||
msgid "Set password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_changed_success.html:22
|
||||
msgid "Your password has been changed. Try to log in now."
|
||||
msgstr "لقد غُيرت كلمة سرك. جرّب الولوج الآن."
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:27
|
||||
msgid "Recover password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_email_sent.html:22
|
||||
msgid ""
|
||||
"Check your inbox. We sent an email with a URL for changing your password."
|
||||
msgstr "تفقد بريدك الإلكتروني. لقد أرسلنا رسالة بها وصلة لتغيير كلمة سرك."
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:30
|
||||
msgid "Send instructions"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_verification_email.txt:19
|
||||
#, python-format
|
||||
@@ -300,27 +327,23 @@ msgstr ""
|
||||
msgid "Logging in failed!"
|
||||
msgstr "فشل الولوج!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:43
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:35
|
||||
msgid "Don't have an account yet?"
|
||||
msgstr "ألا تملك حسابًا بعد؟"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:46
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:36
|
||||
msgid "Create one here!"
|
||||
msgstr "أنشئ حسابًا هنا!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:49
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:42
|
||||
msgid "Forgot your password?"
|
||||
msgstr "أنسيت كلمة سرك؟"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:52
|
||||
msgid "Change it!"
|
||||
msgstr "غيّرها!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:27
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:32
|
||||
msgid "Create an account!"
|
||||
msgstr "أنشئ حسابًا!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:31
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:36
|
||||
msgid "Create"
|
||||
msgstr "أنشئ"
|
||||
|
||||
@@ -352,36 +375,114 @@ msgid "Cancel"
|
||||
msgstr "ألغِ"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit.html:37
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
|
||||
msgid "Save changes"
|
||||
msgstr "احفظ التغييرات"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:34
|
||||
#, python-format
|
||||
msgid "Changing %(username)s's account settings"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:29
|
||||
#, python-format
|
||||
msgid "Editing %(username)s's profile"
|
||||
msgstr "تحرير ملف %(username)s الشخصي"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:31
|
||||
msgid "Media tagged with:"
|
||||
msgstr "الوسائط الموسومة ب"
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:30
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:35
|
||||
#, python-format
|
||||
msgid "Media tagged with: %(tag_name)s"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:46
|
||||
msgid "Original"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:33
|
||||
msgid ""
|
||||
"Sorry, this video will not work because \n"
|
||||
"\t your web browser does not support HTML5 \n"
|
||||
"\t video."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:36
|
||||
msgid ""
|
||||
"You can get a modern web browser that \n"
|
||||
"\t can play this video at <a href=\"http://getfirefox.com\">\n"
|
||||
"\t http://getfirefox.com</a>!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/submit/start.html:26
|
||||
msgid "Submit yer media"
|
||||
msgstr "انشر وسائطك"
|
||||
msgid "Add your media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/submit/start.html:30
|
||||
msgid "Submit"
|
||||
msgstr "أرسل"
|
||||
msgid "Add"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:32
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
|
||||
#, python-format
|
||||
msgid "%(username)s's media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:37
|
||||
#, python-format
|
||||
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
|
||||
msgstr "وسائط <a href=\"%(user_url)s\">%(username)s</a>"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:52
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:32
|
||||
msgid "Sorry, no such user found."
|
||||
msgstr "عذرًا، تعذر العثور على مستخدم بهذا الاسم."
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:60
|
||||
#, python-format
|
||||
msgid "Added on %(date)s."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
|
||||
msgid "Edit"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
|
||||
#, python-format
|
||||
msgid "%(comment_count)s comment"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:81
|
||||
#, python-format
|
||||
msgid "%(comment_count)s comments"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
|
||||
msgid "No comments yet."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:91
|
||||
msgid "Add one"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:100
|
||||
msgid ""
|
||||
"Type your comment here. You can use <a "
|
||||
"href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> for"
|
||||
" formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:104
|
||||
msgid "Add this comment"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:126
|
||||
msgid "at"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:141
|
||||
#, python-format
|
||||
msgid "<p>❖ Browsing media by <a href=\"%(user_url)s\">%(username)s</a></p>"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
|
||||
#, python-format
|
||||
@@ -413,35 +514,45 @@ msgstr "لا توجد وسائط تحت المعالجة"
|
||||
msgid "These uploads failed to process:"
|
||||
msgstr "فشلت معالجة هذه الملفات:"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:39
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:59
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:31
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:89
|
||||
#, python-format
|
||||
msgid "%(username)s's profile"
|
||||
msgstr "ملف %(username)s الشخصي"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:43
|
||||
msgid "Sorry, no such user found."
|
||||
msgstr "عذرًا، تعذر العثور على مستخدم بهذا الاسم."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:50
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:70
|
||||
msgid "Email verification needed"
|
||||
msgstr "يجب التحقق من البريد الإلكتروني"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:42
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
|
||||
msgid "Almost done! Your account still needs to be activated."
|
||||
msgstr "أوشكنا على الانتهاء! ما زال حسابك بحاجة إلى التفعيل."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:47
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:58
|
||||
msgid ""
|
||||
"An email should arrive in a few moments with instructions on how to do so."
|
||||
msgstr "ستصلك رسالة إلكترونية خلال لحظات بها التعليمات."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:51
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
|
||||
msgid "In case it doesn't:"
|
||||
msgstr "إن لم تصل."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:54
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:65
|
||||
msgid "Resend verification email"
|
||||
msgstr "أعد إرسال رسالة التحقق"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:73
|
||||
msgid ""
|
||||
"Someone has registered an account with this username, but it still has to be"
|
||||
" activated."
|
||||
msgstr "سجّل أحدهم حسابًا بهذا الاسم، ولكننا بانتظار التفعيل حتى الآن."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:68
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:79
|
||||
#, python-format
|
||||
msgid ""
|
||||
"If you are that person but you've lost your verification email, you can <a "
|
||||
@@ -450,40 +561,36 @@ msgstr ""
|
||||
"إن كنت أنت ذلك الشخص لكنك فقدت رسالة التحقق، يمكنك <a "
|
||||
"href=\"%(login_url)s\">الولوج</a> وإعادة إرسالها."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:78
|
||||
#, python-format
|
||||
msgid "%(username)s's profile"
|
||||
msgstr "ملف %(username)s الشخصي"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:85
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
|
||||
msgid "Here's a spot to tell others about yourself."
|
||||
msgstr "هذه زاوية لتخبر الآخرين فيها عن نفسك."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:90
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:108
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:101
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
|
||||
msgid "Edit profile"
|
||||
msgstr "حرِّر الملف الشخصي"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
|
||||
msgid "This user hasn't filled in their profile (yet)."
|
||||
msgstr "لم يعبئ هذا العضو بيانات ملفه بعد."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:122
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:125
|
||||
msgid "Change account settings"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:138
|
||||
#, python-format
|
||||
msgid "View all of %(username)s's media"
|
||||
msgstr "أظهِر كل وسائط %(username)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:135
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:151
|
||||
msgid ""
|
||||
"This is where your media will appear, but you don't seem to have added "
|
||||
"anything yet."
|
||||
msgstr "هنا ستظهر وسائطك، ولكن يبدو أنك لم تضف شيئًا بعد."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:141
|
||||
msgid "Add media"
|
||||
msgstr "أضف وسائط"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:147
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:163
|
||||
#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:72
|
||||
msgid "There doesn't seem to be any media here yet..."
|
||||
msgstr "لا يبدو أنه توجد أي وسائط هنا حتى الآن..."
|
||||
|
||||
@@ -495,31 +602,57 @@ msgstr ""
|
||||
msgid "Atom feed"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:40
|
||||
msgid "Newer"
|
||||
msgstr "الأحدث"
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
|
||||
msgid "← Newer"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:46
|
||||
msgid "Older"
|
||||
msgstr "الأقدم"
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
|
||||
msgid "Older →"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/forms.py:24
|
||||
msgid "Comment"
|
||||
msgstr "علِّق"
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
|
||||
msgid "Go to page:"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:27
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:32
|
||||
msgid "newer"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:38
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:43
|
||||
msgid "older"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/tags.html:20
|
||||
msgid "View more media tagged with"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/tags.html:25
|
||||
msgid "or"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/forms.py:30
|
||||
msgid "I am sure I want to delete this"
|
||||
msgstr "أنا متأكد من رغبتي بحذف هذا العمل"
|
||||
|
||||
#: mediagoblin/user_pages/views.py:142
|
||||
msgid "Empty comments are not allowed."
|
||||
#: mediagoblin/user_pages/views.py:155
|
||||
msgid "Oops, your comment was empty."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/views.py:148
|
||||
msgid "Comment posted!"
|
||||
#: mediagoblin/user_pages/views.py:161
|
||||
msgid "Your comment has been posted!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/views.py:181
|
||||
#: mediagoblin/user_pages/views.py:183
|
||||
msgid "You deleted the media."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/views.py:190
|
||||
msgid "The media was not deleted because you didn't check that you were sure."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/views.py:198
|
||||
msgid "You are about to delete another user's media. Proceed with caution."
|
||||
msgstr "أنت على وشك حذف وسائط مستخدم آخر. كن حذرًا أثناء العملية."
|
||||
|
||||
|
||||
Binary file not shown.
@@ -1,15 +1,16 @@
|
||||
# Translations template for PROJECT.
|
||||
# Copyright (C) 2011 ORGANIZATION
|
||||
# Copyright (C) 2012 ORGANIZATION
|
||||
# This file is distributed under the same license as the PROJECT project.
|
||||
#
|
||||
# Translators:
|
||||
# Al fred <devaleitzer@aim.com>, 2011.
|
||||
# <devaleitzer@aim.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-11-01 23:14-0500\n"
|
||||
"PO-Revision-Date: 2011-11-02 04:13+0000\n"
|
||||
"POT-Creation-Date: 2012-01-07 13:47-0600\n"
|
||||
"PO-Revision-Date: 2012-01-07 19:44+0000\n"
|
||||
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -19,27 +20,19 @@ msgstr ""
|
||||
"Language: ca\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
|
||||
#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:49
|
||||
#: mediagoblin/processing.py:143
|
||||
msgid "Invalid file given for media type."
|
||||
msgstr "Aquest tipus de fitxer no és vàlid."
|
||||
|
||||
#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:41
|
||||
msgid "Username"
|
||||
msgstr "Nom d'usuari"
|
||||
|
||||
#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:53
|
||||
#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:45
|
||||
msgid "Password"
|
||||
msgstr "Contrasenya"
|
||||
|
||||
#: mediagoblin/auth/forms.py:35
|
||||
msgid "Passwords must match."
|
||||
msgstr "Les contrasenyes han de coincidir"
|
||||
|
||||
#: mediagoblin/auth/forms.py:37
|
||||
msgid "Confirm password"
|
||||
msgstr "Confirmeu la contrasenya"
|
||||
|
||||
#: mediagoblin/auth/forms.py:39
|
||||
msgid "Type it again here to make sure there are no spelling mistakes."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/forms.py:42
|
||||
#: mediagoblin/auth/forms.py:34
|
||||
msgid "Email address"
|
||||
msgstr "Adreça electrònica"
|
||||
|
||||
@@ -52,10 +45,10 @@ msgid "Sorry, a user with that name already exists."
|
||||
msgstr "Lamentablement aquest usuari ja existeix."
|
||||
|
||||
#: mediagoblin/auth/views.py:77
|
||||
msgid "Sorry, that email address has already been taken."
|
||||
msgstr "Disculpeu, aquesta adreça electrònica ja s'està utilitzant."
|
||||
msgid "Sorry, a user with that email address already exists."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:179
|
||||
#: mediagoblin/auth/views.py:180
|
||||
msgid ""
|
||||
"Your email address has been verified. You may now login, edit your profile, "
|
||||
"and submit images!"
|
||||
@@ -63,87 +56,155 @@ msgstr ""
|
||||
"Ja s'ha verificat la vostra adreça electrònica. Ara podeu entrar, editar el "
|
||||
"vostre perfil i penjar imatge!"
|
||||
|
||||
#: mediagoblin/auth/views.py:185
|
||||
#: mediagoblin/auth/views.py:186
|
||||
msgid "The verification key or user id is incorrect"
|
||||
msgstr ""
|
||||
"La clau de verificació o la identificació de l'usuari no són correctes."
|
||||
|
||||
#: mediagoblin/auth/views.py:207
|
||||
#: mediagoblin/auth/views.py:204
|
||||
msgid "You must be logged in so we know who to send the email to!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:212
|
||||
msgid "You've already verified your email address!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:225
|
||||
msgid "Resent your verification email."
|
||||
msgstr "Torna'm a enviar el correu de verificació"
|
||||
|
||||
#: mediagoblin/auth/views.py:248
|
||||
#: mediagoblin/auth/views.py:260
|
||||
msgid ""
|
||||
"An email has been sent with instructions on how to change your password."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:270
|
||||
msgid ""
|
||||
"Could not send password recovery email as your username is inactive or your "
|
||||
"account's email address has not been verified."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:282
|
||||
msgid "Couldn't find someone with that username or email."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:330
|
||||
msgid "You can now log in using your new password."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:24 mediagoblin/submit/forms.py:27
|
||||
msgid "Title"
|
||||
msgstr "Títol"
|
||||
|
||||
#: mediagoblin/edit/forms.py:28 mediagoblin/submit/forms.py:32
|
||||
#: mediagoblin/edit/forms.py:27 mediagoblin/submit/forms.py:30
|
||||
msgid "Description of this work"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:28 mediagoblin/submit/forms.py:31
|
||||
msgid ""
|
||||
"You can use\n"
|
||||
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
|
||||
" Markdown</a> for formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:32 mediagoblin/submit/forms.py:35
|
||||
msgid "Tags"
|
||||
msgstr "Etiquetes"
|
||||
|
||||
#: mediagoblin/edit/forms.py:31
|
||||
#: mediagoblin/edit/forms.py:34 mediagoblin/submit/forms.py:37
|
||||
msgid "Separate tags by commas."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:37
|
||||
msgid "Slug"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:32
|
||||
#: mediagoblin/edit/forms.py:38
|
||||
msgid "The slug can't be empty"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:33
|
||||
#: mediagoblin/edit/forms.py:39
|
||||
msgid ""
|
||||
"The title part of this media's URL. You usually don't need to change this."
|
||||
"The title part of this media's address. You usually don't need to change "
|
||||
"this."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:40
|
||||
#: mediagoblin/edit/forms.py:46
|
||||
msgid "Bio"
|
||||
msgstr "Biografia"
|
||||
|
||||
#: mediagoblin/edit/forms.py:43
|
||||
#: mediagoblin/edit/forms.py:48
|
||||
msgid ""
|
||||
"You can use\n"
|
||||
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
|
||||
" Markdown</a> for formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:53
|
||||
msgid "Website"
|
||||
msgstr "Lloc web"
|
||||
|
||||
#: mediagoblin/edit/views.py:64
|
||||
#: mediagoblin/edit/forms.py:60
|
||||
msgid "Old password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:62
|
||||
msgid "Enter your old password to prove you own this account."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:65
|
||||
msgid "New password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:65
|
||||
msgid "An entry with that slug already exists for this user."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:85
|
||||
#: mediagoblin/edit/views.py:86
|
||||
msgid "You are editing another user's media. Proceed with caution."
|
||||
msgstr "Esteu editant fitxers d'un altre usuari. Aneu amb compte."
|
||||
|
||||
#: mediagoblin/edit/views.py:155
|
||||
#: mediagoblin/edit/views.py:156
|
||||
msgid "You are editing a user's profile. Proceed with caution."
|
||||
msgstr "Esteu editant el perfil d'un usuari. Aneu amb compte"
|
||||
|
||||
#: mediagoblin/process_media/errors.py:44
|
||||
msgid "Invalid file given for media type."
|
||||
msgstr "Aquest tipus de fitxer no és vàlid."
|
||||
#: mediagoblin/edit/views.py:174
|
||||
msgid "Profile changes saved"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:200
|
||||
msgid "Wrong password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:216
|
||||
msgid "Account settings saved"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/media_types/__init__.py:77
|
||||
msgid "Could not extract any file extension from \"{filename}\""
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/media_types/__init__.py:88
|
||||
msgid "Sorry, I don't support that file type :("
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/submit/forms.py:25
|
||||
msgid "File"
|
||||
msgstr "Fitxer"
|
||||
|
||||
#: mediagoblin/submit/forms.py:30
|
||||
msgid "Description of this work"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/submit/views.py:46
|
||||
#: mediagoblin/submit/views.py:50
|
||||
msgid "You must provide a file."
|
||||
msgstr "Heu d'escollir un fitxer."
|
||||
|
||||
#: mediagoblin/submit/views.py:49
|
||||
msgid "The file doesn't seem to be an image!"
|
||||
msgstr "El fitxer no és una imatge"
|
||||
|
||||
#: mediagoblin/submit/views.py:121
|
||||
#: mediagoblin/submit/views.py:128
|
||||
msgid "Woohoo! Submitted!"
|
||||
msgstr "Visca! S'ha enviat!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:21
|
||||
#: mediagoblin/templates/mediagoblin/404.html:22
|
||||
msgid "Image of 404 goblin stressing out"
|
||||
msgstr "Imatge de la pantalla 404, el goblin no sap què fer..."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:23
|
||||
msgid "Oops!"
|
||||
msgstr "Ups!"
|
||||
|
||||
@@ -159,33 +220,30 @@ msgstr ""
|
||||
"Si esteu convençut que l'adreça és correcta, pot ser que la pàgina que "
|
||||
"cerqueu s'hagi canviat d'ubicació o s'hagi eliminat."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:32
|
||||
msgid "Image of 404 goblin stressing out"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:22
|
||||
msgid "GNU MediaGoblin"
|
||||
msgstr "GNU MediaGoblin"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:47
|
||||
#: mediagoblin/templates/mediagoblin/base.html:48
|
||||
msgid "MediaGoblin logo"
|
||||
msgstr "Logo de mediagoblin"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:52
|
||||
msgid "Submit media"
|
||||
msgstr "Envia fitxers"
|
||||
#: mediagoblin/templates/mediagoblin/base.html:53
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:157
|
||||
msgid "Add media"
|
||||
msgstr "Tots els fitxers"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:63
|
||||
msgid "verify your email!"
|
||||
msgstr "verifiqueu el correu electrònic"
|
||||
#: mediagoblin/templates/mediagoblin/base.html:64
|
||||
msgid "Verify your email!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:73
|
||||
#: mediagoblin/templates/mediagoblin/base.html:71
|
||||
msgid "log out"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:74
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:27
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:35
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:45
|
||||
msgid "Log in"
|
||||
msgstr "Entra"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:89
|
||||
#: mediagoblin/templates/mediagoblin/base.html:86
|
||||
msgid ""
|
||||
"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
|
||||
"href=\"http://gnu.org/\">GNU</a> project"
|
||||
@@ -195,85 +253,52 @@ msgstr ""
|
||||
msgid "Explore"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:27
|
||||
msgid "Hi there, media lover! MediaGoblin is..."
|
||||
msgstr "Ei, fanàtic multimèdia! MediaGoblin és..."
|
||||
#: mediagoblin/templates/mediagoblin/root.html:26
|
||||
msgid "Hi there, welcome to this MediaGoblin site!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:28
|
||||
msgid ""
|
||||
"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
|
||||
"extraordinarily great piece of media hosting software."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:29
|
||||
msgid "The perfect place for your media!"
|
||||
msgstr "El lloc fitxer pels teus fitxers!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:30
|
||||
msgid ""
|
||||
"A place for people to collaborate and show off original and derived "
|
||||
"creations!"
|
||||
"To add your own media, place comments, save your favourites and more, you "
|
||||
"can log in with your MediaGoblin account."
|
||||
msgstr ""
|
||||
"Un lloc en el qual les persones poden col·laborar i mostrar les seves "
|
||||
"creacions originals o obres derivades."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:31
|
||||
msgid ""
|
||||
"Free, as in freedom. (We’re a <a href=\"http://gnu.org\">GNU</a> project, "
|
||||
"after all.)"
|
||||
msgid "Don't have one yet? It's easy!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:32
|
||||
msgid ""
|
||||
"Aiming to make the world a better place through decentralization and "
|
||||
"(eventually, coming soon!) federation!"
|
||||
msgstr ""
|
||||
"Amb l'objectiu de fer del món un lloc millor a través de la "
|
||||
"descentralització i (eventualment, aviat disponible!) La federació!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:33
|
||||
msgid ""
|
||||
"Built for extensibility. (Multiple media types coming soon to the software,"
|
||||
" including video support!)"
|
||||
msgstr ""
|
||||
"Construït per l'ampliació. (Múltiples tipus de fitxers en breu amb el "
|
||||
"programari, incloent el suport de vídeo!)"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:34
|
||||
msgid ""
|
||||
"Powered by people like you. (<a "
|
||||
"href=\"http://mediagoblin.org/pages/join.html\">You can help us improve this"
|
||||
" software!</a>)"
|
||||
msgstr ""
|
||||
"Desenvolupat per persones com vostè. ( <a "
|
||||
"href=\"http://mediagoblin.org/pages/join.html\"> Podeu ajudar a millorar "
|
||||
"aquest programari!</a> )"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:38
|
||||
msgid "Excited to join us?"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:39
|
||||
#, python-format
|
||||
msgid ""
|
||||
"<a class=\"header_submit_highlight\" href=\"%(register_url)s\">Create a free account</a>\n"
|
||||
" or\n"
|
||||
" <a class=\"header_submit\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
|
||||
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Create an account at this site</a>\n"
|
||||
" or\n"
|
||||
" <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:53
|
||||
#: mediagoblin/templates/mediagoblin/root.html:40
|
||||
msgid "Most recent media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:29
|
||||
msgid "Enter your new password"
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:32
|
||||
msgid "Set your new password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:29
|
||||
msgid "Enter your username or email"
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:35
|
||||
msgid "Set password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_changed_success.html:22
|
||||
msgid "Your password has been changed. Try to log in now."
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:27
|
||||
msgid "Recover password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_email_sent.html:22
|
||||
msgid ""
|
||||
"Check your inbox. We sent an email with a URL for changing your password."
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:30
|
||||
msgid "Send instructions"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_verification_email.txt:19
|
||||
@@ -294,27 +319,23 @@ msgstr ""
|
||||
msgid "Logging in failed!"
|
||||
msgstr "Inici de sessió ha fallat!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:43
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:35
|
||||
msgid "Don't have an account yet?"
|
||||
msgstr "Encara no teniu un compte?"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:46
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:36
|
||||
msgid "Create one here!"
|
||||
msgstr "Creeu-ne un aquí!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:49
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:42
|
||||
msgid "Forgot your password?"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:52
|
||||
msgid "Change it!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:27
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:32
|
||||
msgid "Create an account!"
|
||||
msgstr "Creeu un compte!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:31
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:36
|
||||
msgid "Create"
|
||||
msgstr "Crea"
|
||||
|
||||
@@ -346,36 +367,114 @@ msgid "Cancel"
|
||||
msgstr "Cancel·la"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit.html:37
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
|
||||
msgid "Save changes"
|
||||
msgstr "Desa els canvis"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:34
|
||||
#, python-format
|
||||
msgid "Changing %(username)s's account settings"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:29
|
||||
#, python-format
|
||||
msgid "Editing %(username)s's profile"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:31
|
||||
msgid "Media tagged with:"
|
||||
msgstr "Etiquetat amb:"
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:30
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:35
|
||||
#, python-format
|
||||
msgid "Media tagged with: %(tag_name)s"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:46
|
||||
msgid "Original"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:33
|
||||
msgid ""
|
||||
"Sorry, this video will not work because \n"
|
||||
"\t your web browser does not support HTML5 \n"
|
||||
"\t video."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:36
|
||||
msgid ""
|
||||
"You can get a modern web browser that \n"
|
||||
"\t can play this video at <a href=\"http://getfirefox.com\">\n"
|
||||
"\t http://getfirefox.com</a>!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/submit/start.html:26
|
||||
msgid "Submit yer media"
|
||||
msgstr "Envieu els vostres fitxers"
|
||||
msgid "Add your media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/submit/start.html:30
|
||||
msgid "Submit"
|
||||
msgstr "Envia"
|
||||
msgid "Add"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:32
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
|
||||
#, python-format
|
||||
msgid "%(username)s's media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:37
|
||||
#, python-format
|
||||
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
|
||||
msgstr "<a href=\"%(user_url)s\">%(username)s</a>'s media"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:52
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:32
|
||||
msgid "Sorry, no such user found."
|
||||
msgstr "Lamentablement no s'ha trobat l'usuari que cercàveu."
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:60
|
||||
#, python-format
|
||||
msgid "Added on %(date)s."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
|
||||
msgid "Edit"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
|
||||
#, python-format
|
||||
msgid "%(comment_count)s comment"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:81
|
||||
#, python-format
|
||||
msgid "%(comment_count)s comments"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
|
||||
msgid "No comments yet."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:91
|
||||
msgid "Add one"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:100
|
||||
msgid ""
|
||||
"Type your comment here. You can use <a "
|
||||
"href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> for"
|
||||
" formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:104
|
||||
msgid "Add this comment"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:126
|
||||
msgid "at"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:141
|
||||
#, python-format
|
||||
msgid "<p>❖ Browsing media by <a href=\"%(user_url)s\">%(username)s</a></p>"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
|
||||
#, python-format
|
||||
@@ -397,7 +496,7 @@ msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:28
|
||||
msgid "Media in-processing"
|
||||
msgstr ""
|
||||
msgstr "S'està processant el fitxer"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:46
|
||||
msgid "No media in-processing"
|
||||
@@ -405,37 +504,49 @@ msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:50
|
||||
msgid "These uploads failed to process:"
|
||||
msgstr "No s'han pogut penjar els següents fitxers:"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:31
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:89
|
||||
#, python-format
|
||||
msgid "%(username)s's profile"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:39
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:59
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:43
|
||||
msgid "Sorry, no such user found."
|
||||
msgstr "Lamentablement no s'ha trobat l'usuari que cercàveu."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:50
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:70
|
||||
msgid "Email verification needed"
|
||||
msgstr ""
|
||||
msgstr "Cal que verifiqueu l'adreça electrònica"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:42
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
|
||||
msgid "Almost done! Your account still needs to be activated."
|
||||
msgstr ""
|
||||
msgstr "Gairebé esteu! Tan sols falta que activeu el vostre compte"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:47
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:58
|
||||
msgid ""
|
||||
"An email should arrive in a few moments with instructions on how to do so."
|
||||
msgstr "Us hauria d'arribar un correu amb les instruccions per a fer-ho."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:51
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
|
||||
msgid "In case it doesn't:"
|
||||
msgstr ""
|
||||
msgstr "Per si no hi fos:"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:54
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:65
|
||||
msgid "Resend verification email"
|
||||
msgstr "Torna'm a enviar el correu de verificació"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:73
|
||||
msgid ""
|
||||
"Someone has registered an account with this username, but it still has to be"
|
||||
" activated."
|
||||
msgstr ""
|
||||
"Algú ja ha registrat un compte amb aquest nom d'usuari, però encara l'ha "
|
||||
"d'activar."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:68
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:79
|
||||
#, python-format
|
||||
msgid ""
|
||||
"If you are that person but you've lost your verification email, you can <a "
|
||||
@@ -444,76 +555,98 @@ msgstr ""
|
||||
"Si siu aqeust usuari però heu perdut el correu de verificació, podeu <a "
|
||||
"href=\"%(login_url)s\">entrar</a> i tornar-lo a enviar."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:78
|
||||
#, python-format
|
||||
msgid "%(username)s's profile"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:85
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
|
||||
msgid "Here's a spot to tell others about yourself."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:90
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:108
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:101
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
|
||||
msgid "Edit profile"
|
||||
msgstr "Edita el perfil"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
|
||||
msgid "This user hasn't filled in their profile (yet)."
|
||||
msgstr "Aquest usuari encara no ha escrit res al seu perfil."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:125
|
||||
msgid "Change account settings"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:122
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:138
|
||||
#, python-format
|
||||
msgid "View all of %(username)s's media"
|
||||
msgstr "View all of %(username)s's media"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:135
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:151
|
||||
msgid ""
|
||||
"This is where your media will appear, but you don't seem to have added "
|
||||
"anything yet."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:141
|
||||
msgid "Add media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:147
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:163
|
||||
#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:72
|
||||
msgid "There doesn't seem to be any media here yet..."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
|
||||
msgid "feed icon"
|
||||
msgstr ""
|
||||
msgstr "Icona RSS"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
|
||||
msgid "Atom feed"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:40
|
||||
msgid "Newer"
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
|
||||
msgid "← Newer"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:46
|
||||
msgid "Older"
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
|
||||
msgid "Older →"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/forms.py:24
|
||||
msgid "Comment"
|
||||
msgstr "Comentari"
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
|
||||
msgid "Go to page:"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:27
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:32
|
||||
msgid "newer"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:38
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:43
|
||||
msgid "older"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/tags.html:20
|
||||
msgid "View more media tagged with"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/tags.html:25
|
||||
msgid "or"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/forms.py:30
|
||||
msgid "I am sure I want to delete this"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/views.py:142
|
||||
msgid "Empty comments are not allowed."
|
||||
#: mediagoblin/user_pages/views.py:155
|
||||
msgid "Oops, your comment was empty."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/views.py:148
|
||||
msgid "Comment posted!"
|
||||
#: mediagoblin/user_pages/views.py:161
|
||||
msgid "Your comment has been posted!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/views.py:181
|
||||
#: mediagoblin/user_pages/views.py:183
|
||||
msgid "You deleted the media."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/views.py:190
|
||||
msgid "The media was not deleted because you didn't check that you were sure."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/views.py:198
|
||||
msgid "You are about to delete another user's media. Proceed with caution."
|
||||
msgstr ""
|
||||
|
||||
|
||||
Binary file not shown.
@@ -1,12 +1,14 @@
|
||||
# Translations template for PROJECT.
|
||||
# Copyright (C) 2011 ORGANIZATION
|
||||
# Copyright (C) 2012 ORGANIZATION
|
||||
# This file is distributed under the same license as the PROJECT project.
|
||||
#
|
||||
# Translators:
|
||||
# <benjamin@lebsanft.org>, 2011.
|
||||
# <cwebber@dustycloud.org>, 2011.
|
||||
# Elrond <elrond+mediagoblin.org@samba-tng.org>, 2011.
|
||||
# <jakob.kramer@gmx.de>, 2011.
|
||||
# Jan-Christoph Borchardt <JanCBorchardt@fsfe.org>, 2011.
|
||||
# Jan-Christoph Borchardt <jan@unhosted.org>, 2011.
|
||||
# <kyoo@kyoo.ch>, 2011.
|
||||
# <mediagoblin.org@samba-tng.org>, 2011.
|
||||
# Rafael Maguiña <rafael.maguina@gmail.com>, 2011.
|
||||
@@ -15,8 +17,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-11-01 23:14-0500\n"
|
||||
"PO-Revision-Date: 2011-11-02 04:13+0000\n"
|
||||
"POT-Creation-Date: 2012-01-07 13:47-0600\n"
|
||||
"PO-Revision-Date: 2012-01-07 19:44+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"
|
||||
@@ -26,134 +28,193 @@ msgstr ""
|
||||
"Language: de\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
|
||||
#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:49
|
||||
#: mediagoblin/processing.py:143
|
||||
msgid "Invalid file given for media type."
|
||||
msgstr "Die Datei stimmt nicht mit dem gewählten Medientyp überein."
|
||||
|
||||
#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:41
|
||||
msgid "Username"
|
||||
msgstr "Benutzername"
|
||||
|
||||
#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:53
|
||||
#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:45
|
||||
msgid "Password"
|
||||
msgstr "Passwort"
|
||||
|
||||
#: mediagoblin/auth/forms.py:35
|
||||
msgid "Passwords must match."
|
||||
msgstr "Passwörter müssen übereinstimmen."
|
||||
|
||||
#: mediagoblin/auth/forms.py:37
|
||||
msgid "Confirm password"
|
||||
msgstr "Passwort wiederholen"
|
||||
|
||||
#: mediagoblin/auth/forms.py:39
|
||||
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:42
|
||||
#: mediagoblin/auth/forms.py:34
|
||||
msgid "Email address"
|
||||
msgstr "Email-Adresse"
|
||||
msgstr "E-Mail-Adresse"
|
||||
|
||||
#: mediagoblin/auth/views.py:55
|
||||
msgid "Sorry, registration is disabled on this instance."
|
||||
msgstr "Registrierung ist auf dieser Instanz leider deaktiviert."
|
||||
msgstr "Das Registrieren ist auf dieser Instanz leider deaktiviert."
|
||||
|
||||
#: mediagoblin/auth/views.py:73
|
||||
msgid "Sorry, a user with that name already exists."
|
||||
msgstr "Leider gibt es bereits einen Benutzer mit diesem Namen."
|
||||
|
||||
#: mediagoblin/auth/views.py:77
|
||||
msgid "Sorry, that email address has already been taken."
|
||||
msgstr "Tut und Leid, aber diese Email-Adresse wird bereits verwendet."
|
||||
msgid "Sorry, a user with that email address already exists."
|
||||
msgstr "Leider gibt es bereits einen Benutzer mit dieser E-Mail-Adresse."
|
||||
|
||||
#: mediagoblin/auth/views.py:179
|
||||
#: mediagoblin/auth/views.py:180
|
||||
msgid ""
|
||||
"Your email address has been verified. You may now login, edit your profile, "
|
||||
"and submit images!"
|
||||
msgstr ""
|
||||
"Deine Email-Adresse wurde bestätigt. Du kannst dich nun anmelden, Dein "
|
||||
"Deine E-Mail-Adresse wurde bestätigt. Du kannst dich nun anmelden, Dein "
|
||||
"Profil bearbeiten und Bilder hochladen!"
|
||||
|
||||
#: mediagoblin/auth/views.py:185
|
||||
#: mediagoblin/auth/views.py:186
|
||||
msgid "The verification key or user id is incorrect"
|
||||
msgstr "Der Bestätigungssschlüssel oder die Nutzernummer ist falsch."
|
||||
msgstr "Der Bestätigungsschlüssel oder die Nutzernummer ist falsch."
|
||||
|
||||
#: mediagoblin/auth/views.py:207
|
||||
#: mediagoblin/auth/views.py:204
|
||||
msgid "You must be logged in so we know who to send the email to!"
|
||||
msgstr "Du musst angemeldet sein, damit wir wissen, wer die Email bekommt."
|
||||
|
||||
#: mediagoblin/auth/views.py:212
|
||||
msgid "You've already verified your email address!"
|
||||
msgstr "Deine E-Mail-Adresse wurde bereits bestätigt."
|
||||
|
||||
#: mediagoblin/auth/views.py:225
|
||||
msgid "Resent your verification email."
|
||||
msgstr "Bestätigungs-Email wurde erneut versandt."
|
||||
msgstr "Bestätigungs-E-Mail wurde erneut versandt."
|
||||
|
||||
#: mediagoblin/auth/views.py:248
|
||||
#: mediagoblin/auth/views.py:260
|
||||
msgid ""
|
||||
"An email has been sent with instructions on how to change your password."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:270
|
||||
msgid ""
|
||||
"Could not send password recovery email as your username is inactive or your "
|
||||
"account's email address has not been verified."
|
||||
msgstr ""
|
||||
"Konnte Email zur Wiederherstellung des Passworts nicht senden, weil dein "
|
||||
"Benutzername inaktiv oder deine Email-Adresse noch nicht verifiziert ist."
|
||||
"E-Mail zur Wiederherstellung des Passworts konnte nicht gesendet werden, "
|
||||
"weil dein Benutzername inaktiv oder deine E-Mail-Adresse noch nicht "
|
||||
"verifiziert ist."
|
||||
|
||||
#: mediagoblin/auth/views.py:282
|
||||
msgid "Couldn't find someone with that username or email."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:330
|
||||
msgid "You can now log in using your new password."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:24 mediagoblin/submit/forms.py:27
|
||||
msgid "Title"
|
||||
msgstr "Titel"
|
||||
|
||||
#: mediagoblin/edit/forms.py:28 mediagoblin/submit/forms.py:32
|
||||
#: mediagoblin/edit/forms.py:27 mediagoblin/submit/forms.py:30
|
||||
msgid "Description of this work"
|
||||
msgstr "Beschreibung des Werkes"
|
||||
|
||||
#: mediagoblin/edit/forms.py:28 mediagoblin/submit/forms.py:31
|
||||
msgid ""
|
||||
"You can use\n"
|
||||
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
|
||||
" Markdown</a> for formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:32 mediagoblin/submit/forms.py:35
|
||||
msgid "Tags"
|
||||
msgstr "Markierungen"
|
||||
|
||||
#: mediagoblin/edit/forms.py:31
|
||||
#: mediagoblin/edit/forms.py:34 mediagoblin/submit/forms.py:37
|
||||
msgid "Separate tags by commas."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:37
|
||||
msgid "Slug"
|
||||
msgstr "Kurztitel"
|
||||
|
||||
#: mediagoblin/edit/forms.py:32
|
||||
#: mediagoblin/edit/forms.py:38
|
||||
msgid "The slug can't be empty"
|
||||
msgstr "Bitte gib einen Kurztitel ein"
|
||||
|
||||
#: mediagoblin/edit/forms.py:33
|
||||
#: mediagoblin/edit/forms.py:39
|
||||
msgid ""
|
||||
"The title part of this media's URL. You usually don't need to change this."
|
||||
"The title part of this media's address. You usually don't need to change "
|
||||
"this."
|
||||
msgstr ""
|
||||
"Der Titelteil der Medienadresse. Normalerweise muss hier nichts geändert "
|
||||
"werden."
|
||||
|
||||
#: mediagoblin/edit/forms.py:40
|
||||
#: mediagoblin/edit/forms.py:46
|
||||
msgid "Bio"
|
||||
msgstr "Biographie"
|
||||
|
||||
#: mediagoblin/edit/forms.py:43
|
||||
#: mediagoblin/edit/forms.py:48
|
||||
msgid ""
|
||||
"You can use\n"
|
||||
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
|
||||
" Markdown</a> for formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:53
|
||||
msgid "Website"
|
||||
msgstr "Webseite"
|
||||
|
||||
#: mediagoblin/edit/views.py:64
|
||||
#: mediagoblin/edit/forms.py:60
|
||||
msgid "Old password"
|
||||
msgstr "Altes Passwort"
|
||||
|
||||
#: mediagoblin/edit/forms.py:62
|
||||
msgid "Enter your old password to prove you own this account."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:65
|
||||
msgid "New password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:65
|
||||
msgid "An entry with that slug already exists for this user."
|
||||
msgstr "Diesen Kurztitel hast du bereits vergeben."
|
||||
|
||||
#: mediagoblin/edit/views.py:85
|
||||
#: mediagoblin/edit/views.py:86
|
||||
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:155
|
||||
#: mediagoblin/edit/views.py:156
|
||||
msgid "You are editing a user's profile. Proceed with caution."
|
||||
msgstr "Du bearbeitest das Profil eines Anderen. Bitte sei vorsichtig."
|
||||
|
||||
#: mediagoblin/process_media/errors.py:44
|
||||
msgid "Invalid file given for media type."
|
||||
msgstr "Die Datei stimmt nicht mit dem gewählten Medientyp überein."
|
||||
#: mediagoblin/edit/views.py:174
|
||||
msgid "Profile changes saved"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:200
|
||||
msgid "Wrong password"
|
||||
msgstr "Falsches Passwort"
|
||||
|
||||
#: mediagoblin/edit/views.py:216
|
||||
msgid "Account settings saved"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/media_types/__init__.py:77
|
||||
msgid "Could not extract any file extension from \"{filename}\""
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/media_types/__init__.py:88
|
||||
msgid "Sorry, I don't support that file type :("
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/submit/forms.py:25
|
||||
msgid "File"
|
||||
msgstr "Datei"
|
||||
|
||||
#: mediagoblin/submit/forms.py:30
|
||||
msgid "Description of this work"
|
||||
msgstr "Beschreibung des Werkes"
|
||||
|
||||
#: mediagoblin/submit/views.py:46
|
||||
#: mediagoblin/submit/views.py:50
|
||||
msgid "You must provide a file."
|
||||
msgstr "Du musst eine Datei angeben."
|
||||
|
||||
#: mediagoblin/submit/views.py:49
|
||||
msgid "The file doesn't seem to be an image!"
|
||||
msgstr "Diese Datei scheint kein Bild zu sein!"
|
||||
|
||||
#: mediagoblin/submit/views.py:121
|
||||
#: mediagoblin/submit/views.py:128
|
||||
msgid "Woohoo! Submitted!"
|
||||
msgstr "Yeeeaaah! Geschafft!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:21
|
||||
#: mediagoblin/templates/mediagoblin/404.html:22
|
||||
msgid "Image of 404 goblin stressing out"
|
||||
msgstr "Bild eines angespannten Goblins"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:23
|
||||
msgid "Oops!"
|
||||
msgstr "Hoppla!"
|
||||
|
||||
@@ -169,33 +230,30 @@ msgstr ""
|
||||
"Wenn du sicher bist, dass die Adresse stimmt, wurde die Seite eventuell "
|
||||
"verschoben oder gelöscht."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:32
|
||||
msgid "Image of 404 goblin stressing out"
|
||||
msgstr "Bild eines angespannten Goblins"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:22
|
||||
msgid "GNU MediaGoblin"
|
||||
msgstr "GNU MediaGoblin"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:47
|
||||
#: mediagoblin/templates/mediagoblin/base.html:48
|
||||
msgid "MediaGoblin logo"
|
||||
msgstr "MediaGoblin-Logo"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:52
|
||||
msgid "Submit media"
|
||||
msgstr "Medien hochladen"
|
||||
#: mediagoblin/templates/mediagoblin/base.html:53
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:157
|
||||
msgid "Add media"
|
||||
msgstr "Medien hinzufügen"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:63
|
||||
msgid "verify your email!"
|
||||
msgstr "Bitte bestätige deine Email-Adresse!"
|
||||
#: mediagoblin/templates/mediagoblin/base.html:64
|
||||
msgid "Verify your email!"
|
||||
msgstr "Bitte bestätige deine E-Mail-Adresse!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:73
|
||||
#: mediagoblin/templates/mediagoblin/base.html:71
|
||||
msgid "log out"
|
||||
msgstr "Abmelden"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:74
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:27
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:35
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:45
|
||||
msgid "Log in"
|
||||
msgstr "Anmelden"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:89
|
||||
#: mediagoblin/templates/mediagoblin/base.html:86
|
||||
msgid ""
|
||||
"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
|
||||
"href=\"http://gnu.org/\">GNU</a> project"
|
||||
@@ -207,93 +265,57 @@ msgstr ""
|
||||
msgid "Explore"
|
||||
msgstr "Entdecke"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:27
|
||||
msgid "Hi there, media lover! MediaGoblin is..."
|
||||
msgstr "Hallo Medien-Liebhaber! MediaGoblin ist …"
|
||||
#: mediagoblin/templates/mediagoblin/root.html:26
|
||||
msgid "Hi there, welcome to this MediaGoblin site!"
|
||||
msgstr "Hallo du, willkommen auf dieser MediaGoblin-Seite!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:28
|
||||
msgid ""
|
||||
"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
|
||||
"extraordinarily great piece of media hosting software."
|
||||
msgstr ""
|
||||
"Diese Seite läuft mit <a href=\"http://mediagoblin.org\">MediaGoblin</a>, "
|
||||
"einer großartigen Software für Medienhosting."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:29
|
||||
msgid "The perfect place for your media!"
|
||||
msgstr "Der perfekte Platz für deine Medien!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:30
|
||||
msgid ""
|
||||
"A place for people to collaborate and show off original and derived "
|
||||
"creations!"
|
||||
"To add your own media, place comments, save your favourites and more, you "
|
||||
"can log in with your MediaGoblin account."
|
||||
msgstr ""
|
||||
"Ein Platz für Zusammenarbeit und um Originale und abgeleitete Werke zu "
|
||||
"präsentieren!"
|
||||
"Melde dich mit deinem MediaGoblin-Konto an, um eigene Medien hinzuzufügen, "
|
||||
"zu kommentieren, Favoriten zu speichern und mehr."
|
||||
|
||||
#: 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 ""
|
||||
"Frei, wie in Freiheit. (Wir sind schließlich ein <a "
|
||||
"href=\"http://gnu.org\">GNU</a>-Projekt.)"
|
||||
msgid "Don't have one yet? It's easy!"
|
||||
msgstr "Hast du noch keinen? Das geht ganz einfach!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:32
|
||||
msgid ""
|
||||
"Aiming to make the world a better place through decentralization and "
|
||||
"(eventually, coming soon!) federation!"
|
||||
msgstr ""
|
||||
"Weltverbesserer durch Dezentralisierung und (hoffentlich bald!) unabhängige "
|
||||
"Kommunikation!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:33
|
||||
msgid ""
|
||||
"Built for extensibility. (Multiple media types coming soon to the software,"
|
||||
" including video support!)"
|
||||
msgstr ""
|
||||
"Gebaut für Erweiterungen. (Bald mit Unterstützung für verschiedene "
|
||||
"Medientypen inklusive Videos!)"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:34
|
||||
msgid ""
|
||||
"Powered by people like you. (<a "
|
||||
"href=\"http://mediagoblin.org/pages/join.html\">You can help us improve this"
|
||||
" software!</a>)"
|
||||
msgstr ""
|
||||
"Betrieben von Leuten wie dir. (<a "
|
||||
"href=\"http://mediagoblin.org/pages/join.html\">Du kannst uns dabei helfen, "
|
||||
"die Software zu verbessern!</a>)"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:38
|
||||
msgid "Excited to join us?"
|
||||
msgstr "Neugierig dich uns anzuschliessen?"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:39
|
||||
#, python-format
|
||||
msgid ""
|
||||
"<a class=\"header_submit_highlight\" href=\"%(register_url)s\">Create a free account</a>\n"
|
||||
" or\n"
|
||||
" <a class=\"header_submit\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
|
||||
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Create an account at this site</a>\n"
|
||||
" or\n"
|
||||
" <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
|
||||
msgstr ""
|
||||
"<a class=\"header_submit_highlight\" href=\"%(register_url)s\">Gratis ein Konto einrichten</a>\n"
|
||||
" or\n"
|
||||
" <a class=\"header_submit\" href=\"http://wiki.mediagoblin.org/HackingHowto\">MediaGoblin auf deinem eigenen Server einrichten</a>"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:53
|
||||
#: mediagoblin/templates/mediagoblin/root.html:40
|
||||
msgid "Most recent media"
|
||||
msgstr "Neuste Medien"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:29
|
||||
msgid "Enter your new password"
|
||||
msgstr "Neues Passwort eingeben"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:29
|
||||
msgid "Enter your username or email"
|
||||
msgstr "Benutzername oder Email-Adresse eingeben"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_changed_success.html:22
|
||||
msgid "Your password has been changed. Try to log in now."
|
||||
msgstr "Dein Passwort wurde geändert. Versuche dich jetzt einzuloggen."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_email_sent.html:22
|
||||
msgid ""
|
||||
"Check your inbox. We sent an email with a URL for changing your password."
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:32
|
||||
msgid "Set your new password"
|
||||
msgstr ""
|
||||
"Prüfe deinen Posteingang. Wir haben dir eine Email geschickt mit einer URL, "
|
||||
"um dein Passwort zu ändern."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:35
|
||||
msgid "Set password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:27
|
||||
msgid "Recover password"
|
||||
msgstr "Passwort wiederherstellen"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:30
|
||||
msgid "Send instructions"
|
||||
msgstr "Anleitung senden"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_verification_email.txt:19
|
||||
#, python-format
|
||||
@@ -314,33 +336,29 @@ msgstr ""
|
||||
"\n"
|
||||
"%(verification_url)s\n"
|
||||
"\n"
|
||||
"Wenn du denkst, dass das ein Fehler ist, ignoriere einfach diese Email und bleib ein glücklicher Goblin!"
|
||||
"Wenn du denkst, dass das ein Fehler ist, ignoriere einfach diese E-Mail und bleib ein glücklicher Goblin!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:30
|
||||
msgid "Logging in failed!"
|
||||
msgstr "Anmeldevorgang fehlgeschlagen!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:43
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:35
|
||||
msgid "Don't have an account yet?"
|
||||
msgstr "Hast du noch kein Konto?"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:46
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:36
|
||||
msgid "Create one here!"
|
||||
msgstr "Registriere dich hier!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:49
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:42
|
||||
msgid "Forgot your password?"
|
||||
msgstr "Passwort vergessen?"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:52
|
||||
msgid "Change it!"
|
||||
msgstr "Wechsle es!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:27
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:32
|
||||
msgid "Create an account!"
|
||||
msgstr "Neues Konto registrieren!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:31
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:36
|
||||
msgid "Create"
|
||||
msgstr "Registrieren"
|
||||
|
||||
@@ -356,7 +374,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Hallo %(username)s,\n"
|
||||
"\n"
|
||||
"um dein Konto bei GNU MediaGoblin zu aktivieren, musst du folgende Adresse in einem Webbrowser öffnen:\n"
|
||||
"um dein Konto bei GNU MediaGoblin zu aktivieren, musst du folgende Adresse in deinem Webbrowser öffnen:\n"
|
||||
"\n"
|
||||
"%(verification_url)s"
|
||||
|
||||
@@ -371,36 +389,114 @@ msgid "Cancel"
|
||||
msgstr "Abbrechen"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit.html:37
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
|
||||
msgid "Save changes"
|
||||
msgstr "Änderungen speichern"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:34
|
||||
#, python-format
|
||||
msgid "Changing %(username)s's account settings"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:29
|
||||
#, python-format
|
||||
msgid "Editing %(username)s's profile"
|
||||
msgstr "%(username)ss Profil bearbeiten"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:31
|
||||
msgid "Media tagged with:"
|
||||
msgstr "Medien markiert mit:"
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:30
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:35
|
||||
#, python-format
|
||||
msgid "Media tagged with: %(tag_name)s"
|
||||
msgstr "Medien markiert mit: %(tag_name)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:46
|
||||
msgid "Original"
|
||||
msgstr "Original"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:33
|
||||
msgid ""
|
||||
"Sorry, this video will not work because \n"
|
||||
"\t your web browser does not support HTML5 \n"
|
||||
"\t video."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:36
|
||||
msgid ""
|
||||
"You can get a modern web browser that \n"
|
||||
"\t can play this video at <a href=\"http://getfirefox.com\">\n"
|
||||
"\t http://getfirefox.com</a>!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/submit/start.html:26
|
||||
msgid "Submit yer media"
|
||||
msgstr "Medien hochladen"
|
||||
msgid "Add your media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/submit/start.html:30
|
||||
msgid "Submit"
|
||||
msgstr "Bestätigen"
|
||||
msgid "Add"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:32
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
|
||||
#, python-format
|
||||
msgid "%(username)s's media"
|
||||
msgstr "%(username)ss Medien"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:37
|
||||
#, python-format
|
||||
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
|
||||
msgstr "<a href=\"%(user_url)s\">%(username)s</a>s Medien"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:52
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:32
|
||||
msgid "Sorry, no such user found."
|
||||
msgstr "Dieser Benutzer wurde leider nicht gefunden."
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:60
|
||||
#, python-format
|
||||
msgid "Added on %(date)s."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
|
||||
msgid "Edit"
|
||||
msgstr "Bearbeiten"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
|
||||
msgid "Delete"
|
||||
msgstr "Löschen"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
|
||||
#, python-format
|
||||
msgid "%(comment_count)s comment"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:81
|
||||
#, python-format
|
||||
msgid "%(comment_count)s comments"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
|
||||
msgid "No comments yet."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:91
|
||||
msgid "Add one"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:100
|
||||
msgid ""
|
||||
"Type your comment here. You can use <a "
|
||||
"href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> for"
|
||||
" formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:104
|
||||
msgid "Add this comment"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:126
|
||||
msgid "at"
|
||||
msgstr "bei"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:141
|
||||
#, python-format
|
||||
msgid "<p>❖ Browsing media by <a href=\"%(user_url)s\">%(username)s</a></p>"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
|
||||
#, python-format
|
||||
@@ -434,31 +530,41 @@ msgstr "Keine Medien in Bearbeitung"
|
||||
msgid "These uploads failed to process:"
|
||||
msgstr "Die folgenden Uploads sind fehlgeschlagen:"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:39
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:59
|
||||
msgid "Email verification needed"
|
||||
msgstr "Email-Bestätigung benötigt"
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:31
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:89
|
||||
#, python-format
|
||||
msgid "%(username)s's profile"
|
||||
msgstr "%(username)ss Profil"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:42
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:43
|
||||
msgid "Sorry, no such user found."
|
||||
msgstr "Dieser Benutzer konnte leider nicht gefunden werden."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:50
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:70
|
||||
msgid "Email verification needed"
|
||||
msgstr "E-Mail-Bestätigung benötigt"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
|
||||
msgid "Almost done! Your account still needs to be activated."
|
||||
msgstr "Fast fertig! Dein Konto muss noch freigeschaltet werden."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:47
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:58
|
||||
msgid ""
|
||||
"An email should arrive in a few moments with instructions on how to do so."
|
||||
msgstr ""
|
||||
"Gleich solltest du eine Email bekommen, die dir sagt, was du noch machen "
|
||||
"musst."
|
||||
"Gleich solltest du eine E-Mail erhalten, die dir erklärt, was du noch machen"
|
||||
" musst."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:51
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
|
||||
msgid "In case it doesn't:"
|
||||
msgstr "Wenn sie nicht ankommt:"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:54
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:65
|
||||
msgid "Resend verification email"
|
||||
msgstr "Bestätigung erneut senden"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:73
|
||||
msgid ""
|
||||
"Someone has registered an account with this username, but it still has to be"
|
||||
" activated."
|
||||
@@ -466,7 +572,7 @@ msgstr ""
|
||||
"Jemand hat bereits ein Konto mit diesem Benutzernamen registriert, aber es "
|
||||
"muss noch aktiviert werden."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:68
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:79
|
||||
#, python-format
|
||||
msgid ""
|
||||
"If you are that person but you've lost your verification email, you can <a "
|
||||
@@ -476,40 +582,36 @@ msgstr ""
|
||||
" kannst du dich <a href=\"%(login_url)s\">anmelden</a> und sie erneut "
|
||||
"senden."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:78
|
||||
#, python-format
|
||||
msgid "%(username)s's profile"
|
||||
msgstr "%(username)ss Profil"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:85
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
|
||||
msgid "Here's a spot to tell others about yourself."
|
||||
msgstr "Hier kannst du Anderen etwas über dich erzählen."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:90
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:108
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:101
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
|
||||
msgid "Edit profile"
|
||||
msgstr "Profil bearbeiten"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
|
||||
msgid "This user hasn't filled in their profile (yet)."
|
||||
msgstr "Dieser Benutzer hat (noch) keine Daten in seinem Profil."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:122
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:125
|
||||
msgid "Change account settings"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:138
|
||||
#, python-format
|
||||
msgid "View all of %(username)s's media"
|
||||
msgstr "Alle Medien von %(username)s anschauen"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:135
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:151
|
||||
msgid ""
|
||||
"This is where your media will appear, but you don't seem to have added "
|
||||
"anything yet."
|
||||
msgstr "Hier erscheinen deine Medien. Sobald du etwas hochgeladen hast."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:141
|
||||
msgid "Add media"
|
||||
msgstr "Medien hinzufügen"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:147
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:163
|
||||
#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:72
|
||||
msgid "There doesn't seem to be any media here yet..."
|
||||
msgstr "Scheinbar gibt es hier noch nichts …"
|
||||
|
||||
@@ -521,31 +623,59 @@ msgstr "Feed-Symbol"
|
||||
msgid "Atom feed"
|
||||
msgstr "Atom-Feed"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:40
|
||||
msgid "Newer"
|
||||
msgstr "Neuere"
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
|
||||
msgid "← Newer"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:46
|
||||
msgid "Older"
|
||||
msgstr "Ältere"
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
|
||||
msgid "Older →"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/forms.py:24
|
||||
msgid "Comment"
|
||||
msgstr "Kommentar"
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
|
||||
msgid "Go to page:"
|
||||
msgstr "Zu Seite:"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:27
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:32
|
||||
msgid "newer"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:38
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:43
|
||||
msgid "older"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/tags.html:20
|
||||
msgid "View more media tagged with"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/tags.html:25
|
||||
msgid "or"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/forms.py:30
|
||||
msgid "I am sure I want to delete this"
|
||||
msgstr "Ja, wirklich löschen"
|
||||
|
||||
#: mediagoblin/user_pages/views.py:142
|
||||
msgid "Empty comments are not allowed."
|
||||
msgstr ""
|
||||
#: mediagoblin/user_pages/views.py:155
|
||||
msgid "Oops, your comment was empty."
|
||||
msgstr "Ohh, der Kommentar war leer."
|
||||
|
||||
#: mediagoblin/user_pages/views.py:148
|
||||
msgid "Comment posted!"
|
||||
msgstr ""
|
||||
#: mediagoblin/user_pages/views.py:161
|
||||
msgid "Your comment has been posted!"
|
||||
msgstr "Dein Kommentar wurde gesendet!"
|
||||
|
||||
#: mediagoblin/user_pages/views.py:181
|
||||
#: mediagoblin/user_pages/views.py:183
|
||||
msgid "You deleted the media."
|
||||
msgstr "Du hast das Medium gelöscht."
|
||||
|
||||
#: mediagoblin/user_pages/views.py:190
|
||||
msgid "The media was not deleted because you didn't check that you were sure."
|
||||
msgstr ""
|
||||
"Das Medium wurde nicht gelöscht. Du musst ankreuzen, dass du es wirklich "
|
||||
"löschen möchtest."
|
||||
|
||||
#: mediagoblin/user_pages/views.py:198
|
||||
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."
|
||||
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
# Translations template for PROJECT.
|
||||
# Copyright (C) 2011 ORGANIZATION
|
||||
# Copyright (C) 2012 ORGANIZATION
|
||||
# This file is distributed under the same license as the PROJECT project.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2011-11-01 23:14-0500\n"
|
||||
"POT-Creation-Date: 2012-01-07 13:47-0600\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -17,27 +17,19 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 0.9.6\n"
|
||||
|
||||
#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:49
|
||||
#: mediagoblin/processing.py:143
|
||||
msgid "Invalid file given for media type."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:41
|
||||
msgid "Username"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:53
|
||||
#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:45
|
||||
msgid "Password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/forms.py:35
|
||||
msgid "Passwords must match."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/forms.py:37
|
||||
msgid "Confirm password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/forms.py:39
|
||||
msgid "Type it again here to make sure there are no spelling mistakes."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/forms.py:42
|
||||
#: mediagoblin/auth/forms.py:34
|
||||
msgid "Email address"
|
||||
msgstr ""
|
||||
|
||||
@@ -50,94 +42,164 @@ msgid "Sorry, a user with that name already exists."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:77
|
||||
msgid "Sorry, that email address has already been taken."
|
||||
msgid "Sorry, a user with that email address already exists."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:179
|
||||
#: mediagoblin/auth/views.py:180
|
||||
msgid ""
|
||||
"Your email address has been verified. You may now login, edit your "
|
||||
"profile, and submit images!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:185
|
||||
#: mediagoblin/auth/views.py:186
|
||||
msgid "The verification key or user id is incorrect"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:207
|
||||
#: mediagoblin/auth/views.py:204
|
||||
msgid "You must be logged in so we know who to send the email to!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:212
|
||||
msgid "You've already verified your email address!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:225
|
||||
msgid "Resent your verification email."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:248
|
||||
#: mediagoblin/auth/views.py:260
|
||||
msgid "An email has been sent with instructions on how to change your password."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:270
|
||||
msgid ""
|
||||
"Could not send password recovery email as your username is inactive or "
|
||||
"your account's email address has not been verified."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:282
|
||||
msgid "Couldn't find someone with that username or email."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:330
|
||||
msgid "You can now log in using your new password."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:24 mediagoblin/submit/forms.py:27
|
||||
msgid "Title"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:28 mediagoblin/submit/forms.py:32
|
||||
#: mediagoblin/edit/forms.py:27 mediagoblin/submit/forms.py:30
|
||||
msgid "Description of this work"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:28 mediagoblin/submit/forms.py:31
|
||||
msgid ""
|
||||
"You can use\n"
|
||||
" <a "
|
||||
"href=\"http://daringfireball.net/projects/markdown/basics\">\n"
|
||||
" Markdown</a> for formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:32 mediagoblin/submit/forms.py:35
|
||||
msgid "Tags"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:31
|
||||
#: mediagoblin/edit/forms.py:34 mediagoblin/submit/forms.py:37
|
||||
msgid "Separate tags by commas."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:37
|
||||
msgid "Slug"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:32
|
||||
#: mediagoblin/edit/forms.py:38
|
||||
msgid "The slug can't be empty"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:33
|
||||
msgid "The title part of this media's URL. You usually don't need to change this."
|
||||
#: mediagoblin/edit/forms.py:39
|
||||
msgid ""
|
||||
"The title part of this media's address. You usually don't need to change "
|
||||
"this."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:40
|
||||
#: mediagoblin/edit/forms.py:46
|
||||
msgid "Bio"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:43
|
||||
#: mediagoblin/edit/forms.py:48
|
||||
msgid ""
|
||||
"You can use\n"
|
||||
" <a "
|
||||
"href=\"http://daringfireball.net/projects/markdown/basics\">\n"
|
||||
" Markdown</a> for formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:53
|
||||
msgid "Website"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:64
|
||||
#: mediagoblin/edit/forms.py:60
|
||||
msgid "Old password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:62
|
||||
msgid "Enter your old password to prove you own this account."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:65
|
||||
msgid "New password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:65
|
||||
msgid "An entry with that slug already exists for this user."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:85
|
||||
#: mediagoblin/edit/views.py:86
|
||||
msgid "You are editing another user's media. Proceed with caution."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:155
|
||||
#: mediagoblin/edit/views.py:156
|
||||
msgid "You are editing a user's profile. Proceed with caution."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/process_media/errors.py:44
|
||||
msgid "Invalid file given for media type."
|
||||
#: mediagoblin/edit/views.py:174
|
||||
msgid "Profile changes saved"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:200
|
||||
msgid "Wrong password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:216
|
||||
msgid "Account settings saved"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/media_types/__init__.py:77
|
||||
msgid "Could not extract any file extension from \"{filename}\""
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/media_types/__init__.py:88
|
||||
msgid "Sorry, I don't support that file type :("
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/submit/forms.py:25
|
||||
msgid "File"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/submit/forms.py:30
|
||||
msgid "Description of this work"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/submit/views.py:46
|
||||
#: mediagoblin/submit/views.py:50
|
||||
msgid "You must provide a file."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/submit/views.py:49
|
||||
msgid "The file doesn't seem to be an image!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/submit/views.py:121
|
||||
#: mediagoblin/submit/views.py:128
|
||||
msgid "Woohoo! Submitted!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:21
|
||||
#: mediagoblin/templates/mediagoblin/404.html:22
|
||||
msgid "Image of 404 goblin stressing out"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:23
|
||||
msgid "Oops!"
|
||||
msgstr ""
|
||||
|
||||
@@ -151,33 +213,30 @@ msgid ""
|
||||
"has been moved or deleted."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:32
|
||||
msgid "Image of 404 goblin stressing out"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:22
|
||||
msgid "GNU MediaGoblin"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:47
|
||||
#: mediagoblin/templates/mediagoblin/base.html:48
|
||||
msgid "MediaGoblin logo"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:52
|
||||
msgid "Submit media"
|
||||
#: mediagoblin/templates/mediagoblin/base.html:53
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:157
|
||||
msgid "Add media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:63
|
||||
msgid "verify your email!"
|
||||
#: mediagoblin/templates/mediagoblin/base.html:64
|
||||
msgid "Verify your email!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:73
|
||||
#: mediagoblin/templates/mediagoblin/base.html:71
|
||||
msgid "log out"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:74
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:27
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:35
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:45
|
||||
msgid "Log in"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:89
|
||||
#: mediagoblin/templates/mediagoblin/base.html:86
|
||||
msgid ""
|
||||
"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
|
||||
"href=\"http://gnu.org/\">GNU</a> project"
|
||||
@@ -187,78 +246,55 @@ msgstr ""
|
||||
msgid "Explore"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:27
|
||||
msgid "Hi there, media lover! MediaGoblin is..."
|
||||
#: mediagoblin/templates/mediagoblin/root.html:26
|
||||
msgid "Hi there, welcome to this MediaGoblin site!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:28
|
||||
msgid ""
|
||||
"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, "
|
||||
"an extraordinarily great piece of media hosting software."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:29
|
||||
msgid "The perfect place for your media!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:30
|
||||
msgid ""
|
||||
"A place for people to collaborate and show off original and derived "
|
||||
"creations!"
|
||||
"To add your own media, place comments, save your favourites and more, you"
|
||||
" can log in with your MediaGoblin account."
|
||||
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.)"
|
||||
msgid "Don't have one yet? It's easy!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:32
|
||||
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 ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:34
|
||||
msgid ""
|
||||
"Powered by people like you. (<a "
|
||||
"href=\"http://mediagoblin.org/pages/join.html\">You can help us improve "
|
||||
"this software!</a>)"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:38
|
||||
msgid "Excited to join us?"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:39
|
||||
#, python-format
|
||||
msgid ""
|
||||
"<a class=\"header_submit_highlight\" href=\"%(register_url)s\">Create a "
|
||||
"free account</a>\n"
|
||||
" or\n"
|
||||
" <a class=\"header_submit\" "
|
||||
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Create an "
|
||||
"account at this site</a>\n"
|
||||
" or\n"
|
||||
" <a class=\"button_action\" "
|
||||
"href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on "
|
||||
"your own server</a>"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:53
|
||||
#: mediagoblin/templates/mediagoblin/root.html:40
|
||||
msgid "Most recent media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:29
|
||||
msgid "Enter your new password"
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:32
|
||||
msgid "Set your new password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:29
|
||||
msgid "Enter your username or email"
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:35
|
||||
msgid "Set password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_changed_success.html:22
|
||||
msgid "Your password has been changed. Try to log in now."
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:27
|
||||
msgid "Recover password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_email_sent.html:22
|
||||
msgid "Check your inbox. We sent an email with a URL for changing your password."
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:30
|
||||
msgid "Send instructions"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_verification_email.txt:19
|
||||
@@ -279,27 +315,23 @@ msgstr ""
|
||||
msgid "Logging in failed!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:43
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:35
|
||||
msgid "Don't have an account yet?"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:46
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:36
|
||||
msgid "Create one here!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:49
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:42
|
||||
msgid "Forgot your password?"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:52
|
||||
msgid "Change it!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:27
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:32
|
||||
msgid "Create an account!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:31
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:36
|
||||
msgid "Create"
|
||||
msgstr ""
|
||||
|
||||
@@ -325,35 +357,113 @@ msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit.html:37
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
|
||||
msgid "Save changes"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:34
|
||||
#, python-format
|
||||
msgid "Changing %(username)s's account settings"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:29
|
||||
#, python-format
|
||||
msgid "Editing %(username)s's profile"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:31
|
||||
msgid "Media tagged with:"
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:30
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:35
|
||||
#, python-format
|
||||
msgid "Media tagged with: %(tag_name)s"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:46
|
||||
msgid "Original"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:33
|
||||
msgid ""
|
||||
"Sorry, this video will not work because \n"
|
||||
"\t your web browser does not support HTML5 \n"
|
||||
"\t video."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:36
|
||||
msgid ""
|
||||
"You can get a modern web browser that \n"
|
||||
"\t can play this video at <a href=\"http://getfirefox.com\">\n"
|
||||
"\t http://getfirefox.com</a>!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/submit/start.html:26
|
||||
msgid "Submit yer media"
|
||||
msgid "Add your media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/submit/start.html:30
|
||||
msgid "Submit"
|
||||
msgid "Add"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:32
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
|
||||
#, python-format
|
||||
msgid "%(username)s's media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:37
|
||||
#, python-format
|
||||
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:52
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:32
|
||||
msgid "Sorry, no such user found."
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:60
|
||||
#, python-format
|
||||
msgid "Added on %(date)s."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
|
||||
msgid "Edit"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
|
||||
#, python-format
|
||||
msgid "%(comment_count)s comment"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:81
|
||||
#, python-format
|
||||
msgid "%(comment_count)s comments"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
|
||||
msgid "No comments yet."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:91
|
||||
msgid "Add one"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:100
|
||||
msgid ""
|
||||
"Type your comment here. You can use <a "
|
||||
"href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> "
|
||||
"for formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:104
|
||||
msgid "Add this comment"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:126
|
||||
msgid "at"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:141
|
||||
#, python-format
|
||||
msgid "<p>❖ Browsing media by <a href=\"%(user_url)s\">%(username)s</a></p>"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
|
||||
@@ -385,74 +495,80 @@ msgstr ""
|
||||
msgid "These uploads failed to process:"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:39
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:59
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:31
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:89
|
||||
#, python-format
|
||||
msgid "%(username)s's profile"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:43
|
||||
msgid "Sorry, no such user found."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:50
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:70
|
||||
msgid "Email verification needed"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:42
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
|
||||
msgid "Almost done! Your account still needs to be activated."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:47
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:58
|
||||
msgid "An email should arrive in a few moments with instructions on how to do so."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:51
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
|
||||
msgid "In case it doesn't:"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:54
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:65
|
||||
msgid "Resend verification email"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:73
|
||||
msgid ""
|
||||
"Someone has registered an account with this username, but it still has to"
|
||||
" be activated."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:68
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:79
|
||||
#, python-format
|
||||
msgid ""
|
||||
"If you are that person but you've lost your verification email, you can "
|
||||
"<a href=\"%(login_url)s\">log in</a> and resend it."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:78
|
||||
#, python-format
|
||||
msgid "%(username)s's profile"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:85
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
|
||||
msgid "Here's a spot to tell others about yourself."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:90
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:108
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:101
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
|
||||
msgid "Edit profile"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
|
||||
msgid "This user hasn't filled in their profile (yet)."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:122
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:125
|
||||
msgid "Change account settings"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:138
|
||||
#, python-format
|
||||
msgid "View all of %(username)s's media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:135
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:151
|
||||
msgid ""
|
||||
"This is where your media will appear, but you don't seem to have added "
|
||||
"anything yet."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:141
|
||||
msgid "Add media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:147
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:163
|
||||
#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:72
|
||||
msgid "There doesn't seem to be any media here yet..."
|
||||
msgstr ""
|
||||
|
||||
@@ -464,31 +580,57 @@ msgstr ""
|
||||
msgid "Atom feed"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:40
|
||||
msgid "Newer"
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
|
||||
msgid "← Newer"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:46
|
||||
msgid "Older"
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
|
||||
msgid "Older →"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/forms.py:24
|
||||
msgid "Comment"
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
|
||||
msgid "Go to page:"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:27
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:32
|
||||
msgid "newer"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:38
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:43
|
||||
msgid "older"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/tags.html:20
|
||||
msgid "View more media tagged with"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/tags.html:25
|
||||
msgid "or"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/forms.py:30
|
||||
msgid "I am sure I want to delete this"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/views.py:142
|
||||
msgid "Empty comments are not allowed."
|
||||
#: mediagoblin/user_pages/views.py:155
|
||||
msgid "Oops, your comment was empty."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/views.py:148
|
||||
msgid "Comment posted!"
|
||||
#: mediagoblin/user_pages/views.py:161
|
||||
msgid "Your comment has been posted!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/views.py:181
|
||||
#: mediagoblin/user_pages/views.py:183
|
||||
msgid "You deleted the media."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/views.py:190
|
||||
msgid "The media was not deleted because you didn't check that you were sure."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/views.py:198
|
||||
msgid "You are about to delete another user's media. Proceed with caution."
|
||||
msgstr ""
|
||||
|
||||
|
||||
Binary file not shown.
@@ -1,5 +1,5 @@
|
||||
# Translations template for PROJECT.
|
||||
# Copyright (C) 2011 ORGANIZATION
|
||||
# Copyright (C) 2012 ORGANIZATION
|
||||
# This file is distributed under the same license as the PROJECT project.
|
||||
#
|
||||
# Translators:
|
||||
@@ -10,8 +10,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: GNU MediaGoblin\n"
|
||||
"Report-Msgid-Bugs-To: http://bugs.foocorp.net/projects/mediagoblin/issues\n"
|
||||
"POT-Creation-Date: 2011-11-01 23:14-0500\n"
|
||||
"PO-Revision-Date: 2011-11-02 04:13+0000\n"
|
||||
"POT-Creation-Date: 2012-01-07 13:47-0600\n"
|
||||
"PO-Revision-Date: 2012-01-07 19:44+0000\n"
|
||||
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -21,27 +21,19 @@ msgstr ""
|
||||
"Language: eo\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
|
||||
#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:49
|
||||
#: mediagoblin/processing.py:143
|
||||
msgid "Invalid file given for media type."
|
||||
msgstr "La provizita dosiero ne konformas al la informtipo."
|
||||
|
||||
#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:41
|
||||
msgid "Username"
|
||||
msgstr "Uzantnomo"
|
||||
|
||||
#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:53
|
||||
#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:45
|
||||
msgid "Password"
|
||||
msgstr "Pasvorto"
|
||||
|
||||
#: mediagoblin/auth/forms.py:35
|
||||
msgid "Passwords must match."
|
||||
msgstr "Pasvortoj devas esti egalaj."
|
||||
|
||||
#: mediagoblin/auth/forms.py:37
|
||||
msgid "Confirm password"
|
||||
msgstr "Retajpu pasvorton"
|
||||
|
||||
#: mediagoblin/auth/forms.py:39
|
||||
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:42
|
||||
#: mediagoblin/auth/forms.py:34
|
||||
msgid "Email address"
|
||||
msgstr "Retpoŝtadreso"
|
||||
|
||||
@@ -54,10 +46,10 @@ msgid "Sorry, a user with that name already exists."
|
||||
msgstr "Bedaŭrinde, uzanto kun tiu nomo jam ekzistas."
|
||||
|
||||
#: mediagoblin/auth/views.py:77
|
||||
msgid "Sorry, that email address has already been taken."
|
||||
msgstr "Tiu retpoŝtadreso jam estas uzata."
|
||||
msgid "Sorry, a user with that email address already exists."
|
||||
msgstr "Ni bedaŭras, sed konto kun tiu retpoŝtadreso jam ekzistas."
|
||||
|
||||
#: mediagoblin/auth/views.py:179
|
||||
#: mediagoblin/auth/views.py:180
|
||||
msgid ""
|
||||
"Your email address has been verified. You may now login, edit your profile, "
|
||||
"and submit images!"
|
||||
@@ -65,15 +57,28 @@ msgstr ""
|
||||
"Via retpoŝtadreso estas konfirmita. Vi povas nun ensaluti, redakti vian "
|
||||
"profilon, kaj alŝuti bildojn!"
|
||||
|
||||
#: mediagoblin/auth/views.py:185
|
||||
#: mediagoblin/auth/views.py:186
|
||||
msgid "The verification key or user id is incorrect"
|
||||
msgstr "La kontrol-kodo aŭ la uzantonomo ne estas korekta"
|
||||
|
||||
#: mediagoblin/auth/views.py:207
|
||||
#: mediagoblin/auth/views.py:204
|
||||
msgid "You must be logged in so we know who to send the email to!"
|
||||
msgstr "Vi devas esti ensalutita, por ke ni sciu, al kiu sendi la retleteron!"
|
||||
|
||||
#: mediagoblin/auth/views.py:212
|
||||
msgid "You've already verified your email address!"
|
||||
msgstr "Vi jam konfirmis vian retpoŝtadreson!"
|
||||
|
||||
#: mediagoblin/auth/views.py:225
|
||||
msgid "Resent your verification email."
|
||||
msgstr "Resendi vian kontrol-mesaĝon."
|
||||
|
||||
#: mediagoblin/auth/views.py:248
|
||||
#: mediagoblin/auth/views.py:260
|
||||
msgid ""
|
||||
"An email has been sent with instructions on how to change your password."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:270
|
||||
msgid ""
|
||||
"Could not send password recovery email as your username is inactive or your "
|
||||
"account's email address has not been verified."
|
||||
@@ -81,74 +86,127 @@ msgstr ""
|
||||
"Ni ne povas sendi pasvortsavan retleteron, ĉar aŭ via konto estas neaktiva, "
|
||||
"aŭ ĝia retpoŝtadreso ne estis konfirmita."
|
||||
|
||||
#: mediagoblin/auth/views.py:282
|
||||
msgid "Couldn't find someone with that username or email."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:330
|
||||
msgid "You can now log in using your new password."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:24 mediagoblin/submit/forms.py:27
|
||||
msgid "Title"
|
||||
msgstr "Titolo"
|
||||
|
||||
#: mediagoblin/edit/forms.py:28 mediagoblin/submit/forms.py:32
|
||||
#: mediagoblin/edit/forms.py:27 mediagoblin/submit/forms.py:30
|
||||
msgid "Description of this work"
|
||||
msgstr "Priskribo de ĉi tiu verko"
|
||||
|
||||
#: mediagoblin/edit/forms.py:28 mediagoblin/submit/forms.py:31
|
||||
msgid ""
|
||||
"You can use\n"
|
||||
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
|
||||
" Markdown</a> for formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:32 mediagoblin/submit/forms.py:35
|
||||
msgid "Tags"
|
||||
msgstr "Etikedoj"
|
||||
|
||||
#: mediagoblin/edit/forms.py:31
|
||||
#: mediagoblin/edit/forms.py:34 mediagoblin/submit/forms.py:37
|
||||
msgid "Separate tags by commas."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:37
|
||||
msgid "Slug"
|
||||
msgstr "La distingiga adresparto"
|
||||
|
||||
#: mediagoblin/edit/forms.py:32
|
||||
#: mediagoblin/edit/forms.py:38
|
||||
msgid "The slug can't be empty"
|
||||
msgstr "La distingiga adresparto ne povas esti malplena"
|
||||
|
||||
#: mediagoblin/edit/forms.py:33
|
||||
#: mediagoblin/edit/forms.py:39
|
||||
msgid ""
|
||||
"The title part of this media's URL. You usually don't need to change this."
|
||||
"The title part of this media's address. You usually don't need to change "
|
||||
"this."
|
||||
msgstr ""
|
||||
"La parto de la dosieradreso, bazita sur la dosiertitolo. Ordinare ne necesas"
|
||||
" ĝin ŝanĝi."
|
||||
|
||||
#: mediagoblin/edit/forms.py:40
|
||||
#: mediagoblin/edit/forms.py:46
|
||||
msgid "Bio"
|
||||
msgstr "Bio"
|
||||
|
||||
#: mediagoblin/edit/forms.py:43
|
||||
#: mediagoblin/edit/forms.py:48
|
||||
msgid ""
|
||||
"You can use\n"
|
||||
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
|
||||
" Markdown</a> for formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:53
|
||||
msgid "Website"
|
||||
msgstr "Retejo"
|
||||
|
||||
#: mediagoblin/edit/views.py:64
|
||||
#: mediagoblin/edit/forms.py:60
|
||||
msgid "Old password"
|
||||
msgstr "La malnova pasvorto"
|
||||
|
||||
#: mediagoblin/edit/forms.py:62
|
||||
msgid "Enter your old password to prove you own this account."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:65
|
||||
msgid "New password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:65
|
||||
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:85
|
||||
#: mediagoblin/edit/views.py:86
|
||||
msgid "You are editing another user's media. Proceed with caution."
|
||||
msgstr "Vi priredaktas dosieron de alia uzanto. Agu singardeme."
|
||||
|
||||
#: mediagoblin/edit/views.py:155
|
||||
#: mediagoblin/edit/views.py:156
|
||||
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 "La provizita dosiero ne konformas al la informtipo."
|
||||
#: mediagoblin/edit/views.py:174
|
||||
msgid "Profile changes saved"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:200
|
||||
msgid "Wrong password"
|
||||
msgstr "Malĝusta pasvorto"
|
||||
|
||||
#: mediagoblin/edit/views.py:216
|
||||
msgid "Account settings saved"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/media_types/__init__.py:77
|
||||
msgid "Could not extract any file extension from \"{filename}\""
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/media_types/__init__.py:88
|
||||
msgid "Sorry, I don't support that file type :("
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/submit/forms.py:25
|
||||
msgid "File"
|
||||
msgstr "Dosiero"
|
||||
|
||||
#: mediagoblin/submit/forms.py:30
|
||||
msgid "Description of this work"
|
||||
msgstr "Priskribo de ĉi tiu verko"
|
||||
|
||||
#: mediagoblin/submit/views.py:46
|
||||
#: mediagoblin/submit/views.py:50
|
||||
msgid "You must provide a file."
|
||||
msgstr "Vi devas provizi dosieron."
|
||||
|
||||
#: mediagoblin/submit/views.py:49
|
||||
msgid "The file doesn't seem to be an image!"
|
||||
msgstr "La dosiero ŝajnas ne esti bildo!"
|
||||
|
||||
#: mediagoblin/submit/views.py:121
|
||||
#: mediagoblin/submit/views.py:128
|
||||
msgid "Woohoo! Submitted!"
|
||||
msgstr "Hura! Alŝutitas!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:21
|
||||
#: mediagoblin/templates/mediagoblin/404.html:22
|
||||
msgid "Image of 404 goblin stressing out"
|
||||
msgstr "Bildo de 404-koboldo penŝvitanta."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:23
|
||||
msgid "Oops!"
|
||||
msgstr "Oj!"
|
||||
|
||||
@@ -164,33 +222,30 @@ msgstr ""
|
||||
"Se vi estas certa, ke la adreso estas ĝusta, eble la serĉata de vi paĝo "
|
||||
"estis movita aŭ forigita."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:32
|
||||
msgid "Image of 404 goblin stressing out"
|
||||
msgstr "Bildo de 404-koboldo penŝvitanta."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:22
|
||||
msgid "GNU MediaGoblin"
|
||||
msgstr "GNU MediaGoblin"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:47
|
||||
#: mediagoblin/templates/mediagoblin/base.html:48
|
||||
msgid "MediaGoblin logo"
|
||||
msgstr "Emblemo de MediaGoblin"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:52
|
||||
msgid "Submit media"
|
||||
msgstr "Alŝuti aŭd-vid-dosieron"
|
||||
#: mediagoblin/templates/mediagoblin/base.html:53
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:157
|
||||
msgid "Add media"
|
||||
msgstr "Aldoni dosieron"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:63
|
||||
msgid "verify your email!"
|
||||
msgstr "konfirmu vian retpoŝtadreson! "
|
||||
#: mediagoblin/templates/mediagoblin/base.html:64
|
||||
msgid "Verify your email!"
|
||||
msgstr "Konfirmu viecon de la retpoŝtadreso!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:73
|
||||
#: mediagoblin/templates/mediagoblin/base.html:71
|
||||
msgid "log out"
|
||||
msgstr "elsaluti"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:74
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:27
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:35
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:45
|
||||
msgid "Log in"
|
||||
msgstr "Ensaluti"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:89
|
||||
#: mediagoblin/templates/mediagoblin/base.html:86
|
||||
msgid ""
|
||||
"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
|
||||
"href=\"http://gnu.org/\">GNU</a> project"
|
||||
@@ -200,93 +255,60 @@ msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:24
|
||||
msgid "Explore"
|
||||
msgstr ""
|
||||
msgstr "Ĉirkaŭrigardi"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:27
|
||||
msgid "Hi there, media lover! MediaGoblin is..."
|
||||
msgstr "Saluton, artemulo! MediaGoblin estas…"
|
||||
#: mediagoblin/templates/mediagoblin/root.html:26
|
||||
msgid "Hi there, welcome to this MediaGoblin site!"
|
||||
msgstr "Saluton, kaj bonvenon al ĉi tiu MediaGoblina retpaĝaro!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:28
|
||||
msgid ""
|
||||
"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
|
||||
"extraordinarily great piece of media hosting software."
|
||||
msgstr ""
|
||||
"Ĉi tiu retpaĝaro funkcias per <a "
|
||||
"href=\"http://mediagoblin.org\">MediaGoblin</a>, eksterordinare bonega "
|
||||
"programaro por gastigado de aŭd‐vid‐dosieroj."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:29
|
||||
msgid "The perfect place for your media!"
|
||||
msgstr "La perfekta loko por viaj aŭd-vid-dosieroj!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:30
|
||||
msgid ""
|
||||
"A place for people to collaborate and show off original and derived "
|
||||
"creations!"
|
||||
"To add your own media, place comments, save your favourites and more, you "
|
||||
"can log in with your MediaGoblin account."
|
||||
msgstr ""
|
||||
"Loko, kie homoj povas kunlabori, kaj elmeti originalajn kreaĵojn kaj "
|
||||
"derivaĵojn!"
|
||||
"Por aldoni viajn proprajn dosierojn, fari al vi liston de la plej plaĉaj, "
|
||||
"ks, vi povas ensaluti je via MediaGoblina konto."
|
||||
|
||||
#: 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>.)"
|
||||
msgid "Don't have one yet? It's easy!"
|
||||
msgstr "Ĉu vi ankoraŭ ne havas tian? Ne malĝoju!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:32
|
||||
msgid ""
|
||||
"Aiming to make the world a better place through decentralization and "
|
||||
"(eventually, coming soon!) federation!"
|
||||
msgstr ""
|
||||
"Celanta plibonigi la mondon per sencentreco kaj (iam, baldaŭ!) federateco!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:33
|
||||
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 ""
|
||||
"Powered by people like you. (<a "
|
||||
"href=\"http://mediagoblin.org/pages/join.html\">You can help us improve this"
|
||||
" software!</a>)"
|
||||
msgstr ""
|
||||
"Vivanta per homoj kiel vi. (<a "
|
||||
"href=\"http://mediagoblin.org/pages/join.html\">Vi povas helpi al ni "
|
||||
"plibonigi la programon!</a>)"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:38
|
||||
msgid "Excited to join us?"
|
||||
msgstr "Ĉu vi deziregas aliĝi nin?"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:39
|
||||
#, python-format
|
||||
msgid ""
|
||||
"<a class=\"header_submit_highlight\" href=\"%(register_url)s\">Create a free account</a>\n"
|
||||
" or\n"
|
||||
" <a class=\"header_submit\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
|
||||
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Create an account at this site</a>\n"
|
||||
" or\n"
|
||||
" <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
|
||||
msgstr ""
|
||||
"<a class=\"header_submit_highlight\" href=\"%(register_url)s\">Kreu senpagan"
|
||||
" konton</a>⏎ aŭ⏎ <a class=\"header_submit\" "
|
||||
"href=\"http://wiki.mediagoblin.org/HackingHowto\">Kreu senpagan konton</a>"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:53
|
||||
#: mediagoblin/templates/mediagoblin/root.html:40
|
||||
msgid "Most recent media"
|
||||
msgstr "Plej nove aldonitaj dosieroj"
|
||||
msgstr "Laste aldonitaj dosieroj"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:29
|
||||
msgid "Enter your new password"
|
||||
msgstr "Enigu vian novan pasvorton"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:29
|
||||
msgid "Enter your username or email"
|
||||
msgstr "Enigu vian salutnomon aŭ retpoŝtadreson"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_changed_success.html:22
|
||||
msgid "Your password has been changed. Try to log in now."
|
||||
msgstr "Via pasvorto estis ŝanĝita. Nun provu ensaluti."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_email_sent.html:22
|
||||
msgid ""
|
||||
"Check your inbox. We sent an email with a URL for changing your password."
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:32
|
||||
msgid "Set your new password"
|
||||
msgstr ""
|
||||
"Kontrolu vian retleterujon. Ni sendis retleteron kun retadreso por ŝanĝo de "
|
||||
"via pasvorto."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:35
|
||||
msgid "Set password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:27
|
||||
msgid "Recover password"
|
||||
msgstr "Ekhavo de nova pasvorto"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:30
|
||||
msgid "Send instructions"
|
||||
msgstr "Sendi instrukcion"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_verification_email.txt:19
|
||||
#, python-format
|
||||
@@ -313,27 +335,23 @@ msgstr ""
|
||||
msgid "Logging in failed!"
|
||||
msgstr "Ensaluto malsukcesis!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:43
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:35
|
||||
msgid "Don't have an account yet?"
|
||||
msgstr "Ĉu ankoraŭ sen konto?"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:46
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:36
|
||||
msgid "Create one here!"
|
||||
msgstr "Kreu ĝin ĉi tie!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:49
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:42
|
||||
msgid "Forgot your password?"
|
||||
msgstr "Ĉu vi forgesis vian pasvorton?"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:52
|
||||
msgid "Change it!"
|
||||
msgstr "Ŝanĝu ĝin!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:27
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:32
|
||||
msgid "Create an account!"
|
||||
msgstr "Kreu konton!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:31
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:36
|
||||
msgid "Create"
|
||||
msgstr "Krei"
|
||||
|
||||
@@ -364,36 +382,114 @@ msgid "Cancel"
|
||||
msgstr "Nuligi"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit.html:37
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
|
||||
msgid "Save changes"
|
||||
msgstr "Konservi ŝanĝojn"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:34
|
||||
#, python-format
|
||||
msgid "Changing %(username)s's account settings"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:29
|
||||
#, python-format
|
||||
msgid "Editing %(username)s's profile"
|
||||
msgstr "Redaktado de l’profilo de %(username)s'"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:31
|
||||
msgid "Media tagged with:"
|
||||
msgstr "Dosieroj markitaj per:"
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:30
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:35
|
||||
#, python-format
|
||||
msgid "Media tagged with: %(tag_name)s"
|
||||
msgstr "Dosieroj kun etikedo: %(tag_name)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:46
|
||||
msgid "Original"
|
||||
msgstr "Originalo"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:33
|
||||
msgid ""
|
||||
"Sorry, this video will not work because \n"
|
||||
"\t your web browser does not support HTML5 \n"
|
||||
"\t video."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:36
|
||||
msgid ""
|
||||
"You can get a modern web browser that \n"
|
||||
"\t can play this video at <a href=\"http://getfirefox.com\">\n"
|
||||
"\t http://getfirefox.com</a>!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/submit/start.html:26
|
||||
msgid "Submit yer media"
|
||||
msgstr "Alŝutu vian aŭd-vid-dosieron"
|
||||
msgid "Add your media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/submit/start.html:30
|
||||
msgid "Submit"
|
||||
msgstr "Alŝuti"
|
||||
msgid "Add"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:32
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
|
||||
#, python-format
|
||||
msgid "%(username)s's media"
|
||||
msgstr "Dosieroj de %(username)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:37
|
||||
#, python-format
|
||||
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
|
||||
msgstr "Dosieroj de <a href=\"%(user_url)s\">%(username)s</a>"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:52
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:32
|
||||
msgid "Sorry, no such user found."
|
||||
msgstr "Uzanto ne trovita."
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:60
|
||||
#, python-format
|
||||
msgid "Added on %(date)s."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
|
||||
msgid "Edit"
|
||||
msgstr "Ŝanĝi"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
|
||||
msgid "Delete"
|
||||
msgstr "Forigi"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
|
||||
#, python-format
|
||||
msgid "%(comment_count)s comment"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:81
|
||||
#, python-format
|
||||
msgid "%(comment_count)s comments"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
|
||||
msgid "No comments yet."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:91
|
||||
msgid "Add one"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:100
|
||||
msgid ""
|
||||
"Type your comment here. You can use <a "
|
||||
"href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> for"
|
||||
" formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:104
|
||||
msgid "Add this comment"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:126
|
||||
msgid "at"
|
||||
msgstr "je"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:141
|
||||
#, python-format
|
||||
msgid "<p>❖ Browsing media by <a href=\"%(user_url)s\">%(username)s</a></p>"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
|
||||
#, python-format
|
||||
@@ -427,30 +523,40 @@ msgstr "Neniu dosieroj preparatas"
|
||||
msgid "These uploads failed to process:"
|
||||
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
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:31
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:89
|
||||
#, python-format
|
||||
msgid "%(username)s's profile"
|
||||
msgstr "Profilo de %(username)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:43
|
||||
msgid "Sorry, no such user found."
|
||||
msgstr "Uzanto ne trovita."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:50
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:70
|
||||
msgid "Email verification needed"
|
||||
msgstr "Necesas konfirmo de retpoŝtadreso"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:42
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
|
||||
msgid "Almost done! Your account still needs to be activated."
|
||||
msgstr "Preskaŭ finite! Restas nur validigi vian konton."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:47
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:58
|
||||
msgid ""
|
||||
"An email should arrive in a few moments with instructions on how to do so."
|
||||
msgstr ""
|
||||
"Post kelkaj momentoj devas veni retletero kun instrukcio pri kiel tion fari."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:51
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
|
||||
msgid "In case it doesn't:"
|
||||
msgstr "Se tio ne okazas:"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:54
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:65
|
||||
msgid "Resend verification email"
|
||||
msgstr "Resendi kontrolmesaĝon"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:73
|
||||
msgid ""
|
||||
"Someone has registered an account with this username, but it still has to be"
|
||||
" activated."
|
||||
@@ -458,7 +564,7 @@ msgstr ""
|
||||
"Iu registris konton kun tiu ĉi uzantonomo, sed ĝi devas ankoraŭ esti "
|
||||
"aktivigita."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:68
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:79
|
||||
#, python-format
|
||||
msgid ""
|
||||
"If you are that person but you've lost your verification email, you can <a "
|
||||
@@ -467,41 +573,37 @@ msgstr ""
|
||||
"Se vi estas tiu sed vi perdis vian kontrolmesaĝon, vi povas <a "
|
||||
"href=\"%(login_url)s\">ensaluti</a> kaj resendi ĝin."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:78
|
||||
#, python-format
|
||||
msgid "%(username)s's profile"
|
||||
msgstr "Profilo de %(username)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:85
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
|
||||
msgid "Here's a spot to tell others about yourself."
|
||||
msgstr "Jen estas spaceto por rakonti pri vi al aliaj."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:90
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:108
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:101
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
|
||||
msgid "Edit profile"
|
||||
msgstr "Redakti profilon"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
|
||||
msgid "This user hasn't filled in their profile (yet)."
|
||||
msgstr "Ĉi tiu uzanto ne jam aldonis informojn pri si."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:122
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:125
|
||||
msgid "Change account settings"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:138
|
||||
#, python-format
|
||||
msgid "View all of %(username)s's media"
|
||||
msgstr "Rigardi ĉiujn dosierojn de %(username)s'"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:135
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:151
|
||||
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"
|
||||
msgstr "Aldoni dosieron"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:147
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:163
|
||||
#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:72
|
||||
msgid "There doesn't seem to be any media here yet..."
|
||||
msgstr "Ĉi tie ŝajne estas ankoraŭ neniuj dosieroj…"
|
||||
|
||||
@@ -513,31 +615,59 @@ msgstr "flusimbolo"
|
||||
msgid "Atom feed"
|
||||
msgstr "Atom-a informfluo"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:40
|
||||
msgid "Newer"
|
||||
msgstr "Plinovaj"
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
|
||||
msgid "← Newer"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:46
|
||||
msgid "Older"
|
||||
msgstr "Malplinovaj"
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
|
||||
msgid "Older →"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/forms.py:24
|
||||
msgid "Comment"
|
||||
msgstr "Komento"
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
|
||||
msgid "Go to page:"
|
||||
msgstr "Iri al paĝo:"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:27
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:32
|
||||
msgid "newer"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:38
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:43
|
||||
msgid "older"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/tags.html:20
|
||||
msgid "View more media tagged with"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/tags.html:25
|
||||
msgid "or"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/forms.py:30
|
||||
msgid "I am sure I want to delete this"
|
||||
msgstr "Mi estas certa, ke mi volas forigi ĉi tion"
|
||||
|
||||
#: mediagoblin/user_pages/views.py:142
|
||||
msgid "Empty comments are not allowed."
|
||||
msgstr ""
|
||||
#: mediagoblin/user_pages/views.py:155
|
||||
msgid "Oops, your comment was empty."
|
||||
msgstr "Oj, via komento estis malplena."
|
||||
|
||||
#: mediagoblin/user_pages/views.py:148
|
||||
msgid "Comment posted!"
|
||||
msgstr ""
|
||||
#: mediagoblin/user_pages/views.py:161
|
||||
msgid "Your comment has been posted!"
|
||||
msgstr "Via komento estis afiŝita!"
|
||||
|
||||
#: mediagoblin/user_pages/views.py:181
|
||||
#: mediagoblin/user_pages/views.py:183
|
||||
msgid "You deleted the media."
|
||||
msgstr "Vi forigis la dosieron."
|
||||
|
||||
#: mediagoblin/user_pages/views.py:190
|
||||
msgid "The media was not deleted because you didn't check that you were sure."
|
||||
msgstr ""
|
||||
"La dosiero ne estis forigita, ĉar vi ne konfirmis vian certecon per la "
|
||||
"markilo."
|
||||
|
||||
#: mediagoblin/user_pages/views.py:198
|
||||
msgid "You are about to delete another user's media. Proceed with caution."
|
||||
msgstr "Vi estas forigonta dosieron de alia uzanto. Estu singardema."
|
||||
|
||||
|
||||
Binary file not shown.
@@ -1,5 +1,5 @@
|
||||
# Translations template for PROJECT.
|
||||
# Copyright (C) 2011 ORGANIZATION
|
||||
# Copyright (C) 2012 ORGANIZATION
|
||||
# This file is distributed under the same license as the PROJECT project.
|
||||
#
|
||||
# Translators:
|
||||
@@ -10,12 +10,13 @@
|
||||
# <juangsub@gmail.com>, 2011.
|
||||
# <juanma@kde.org.ar>, 2011.
|
||||
# Mario Rodriguez <msrodriguez00@gmail.com>, 2011.
|
||||
# <mu@member.fsf.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-11-01 23:14-0500\n"
|
||||
"PO-Revision-Date: 2011-11-02 04:13+0000\n"
|
||||
"POT-Creation-Date: 2012-01-07 13:47-0600\n"
|
||||
"PO-Revision-Date: 2012-01-07 19:44+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"
|
||||
@@ -25,28 +26,19 @@ msgstr ""
|
||||
"Language: es\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
|
||||
#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:49
|
||||
#: mediagoblin/processing.py:143
|
||||
msgid "Invalid file given for media type."
|
||||
msgstr "Archivo inválido para el formato seleccionado."
|
||||
|
||||
#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:41
|
||||
msgid "Username"
|
||||
msgstr "Nombre de usuario"
|
||||
|
||||
#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:53
|
||||
#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:45
|
||||
msgid "Password"
|
||||
msgstr "Contraseña"
|
||||
|
||||
#: mediagoblin/auth/forms.py:35
|
||||
msgid "Passwords must match."
|
||||
msgstr "Las contraseñas deben coincidir."
|
||||
|
||||
#: mediagoblin/auth/forms.py:37
|
||||
msgid "Confirm password"
|
||||
msgstr "Confirma tu contraseña"
|
||||
|
||||
#: mediagoblin/auth/forms.py:39
|
||||
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:42
|
||||
#: mediagoblin/auth/forms.py:34
|
||||
msgid "Email address"
|
||||
msgstr "Dirección de correo electrónico"
|
||||
|
||||
@@ -59,10 +51,10 @@ msgid "Sorry, a user with that name already exists."
|
||||
msgstr "Lo sentimos, ya existe un usuario con ese nombre."
|
||||
|
||||
#: mediagoblin/auth/views.py:77
|
||||
msgid "Sorry, that email address has already been taken."
|
||||
msgstr "Lo sentimos, esa dirección de correo electrónico ya ha sido tomada."
|
||||
msgid "Sorry, a user with that email address already exists."
|
||||
msgstr "Lo sentimos, ya existe un usuario con esa dirección de email."
|
||||
|
||||
#: mediagoblin/auth/views.py:179
|
||||
#: mediagoblin/auth/views.py:180
|
||||
msgid ""
|
||||
"Your email address has been verified. You may now login, edit your profile, "
|
||||
"and submit images!"
|
||||
@@ -70,16 +62,31 @@ msgstr ""
|
||||
"Tu dirección de correo electrónico ha sido verificada. ¡Ahora puedes "
|
||||
"ingresar, editar tu perfil, y enviar imágenes!"
|
||||
|
||||
#: mediagoblin/auth/views.py:185
|
||||
#: mediagoblin/auth/views.py:186
|
||||
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:207
|
||||
#: mediagoblin/auth/views.py:204
|
||||
msgid "You must be logged in so we know who to send the email to!"
|
||||
msgstr ""
|
||||
"¡Debes iniciar sesión para que podamos saber a quién le enviamos el correo "
|
||||
"electrónico!"
|
||||
|
||||
#: mediagoblin/auth/views.py:212
|
||||
msgid "You've already verified your email address!"
|
||||
msgstr "¡Ya has verificado tu dirección de correo!"
|
||||
|
||||
#: mediagoblin/auth/views.py:225
|
||||
msgid "Resent your verification email."
|
||||
msgstr "Se reenvió tu correo electrónico de verificación."
|
||||
|
||||
#: mediagoblin/auth/views.py:248
|
||||
#: mediagoblin/auth/views.py:260
|
||||
msgid ""
|
||||
"An email has been sent with instructions on how to change your password."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:270
|
||||
msgid ""
|
||||
"Could not send password recovery email as your username is inactive or your "
|
||||
"account's email address has not been verified."
|
||||
@@ -88,76 +95,129 @@ msgstr ""
|
||||
"porque su nombre de usuario está inactivo o la dirección de su cuenta de "
|
||||
"correo electrónico no ha sido verificada."
|
||||
|
||||
#: mediagoblin/auth/views.py:282
|
||||
msgid "Couldn't find someone with that username or email."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:330
|
||||
msgid "You can now log in using your new password."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:24 mediagoblin/submit/forms.py:27
|
||||
msgid "Title"
|
||||
msgstr "Título"
|
||||
|
||||
#: mediagoblin/edit/forms.py:28 mediagoblin/submit/forms.py:32
|
||||
#: mediagoblin/edit/forms.py:27 mediagoblin/submit/forms.py:30
|
||||
msgid "Description of this work"
|
||||
msgstr "Descripción de esta obra"
|
||||
|
||||
#: mediagoblin/edit/forms.py:28 mediagoblin/submit/forms.py:31
|
||||
msgid ""
|
||||
"You can use\n"
|
||||
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
|
||||
" Markdown</a> for formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:32 mediagoblin/submit/forms.py:35
|
||||
msgid "Tags"
|
||||
msgstr "Etiquetas"
|
||||
|
||||
#: mediagoblin/edit/forms.py:31
|
||||
#: mediagoblin/edit/forms.py:34 mediagoblin/submit/forms.py:37
|
||||
msgid "Separate tags by commas."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:37
|
||||
msgid "Slug"
|
||||
msgstr "Ficha"
|
||||
|
||||
#: mediagoblin/edit/forms.py:32
|
||||
#: mediagoblin/edit/forms.py:38
|
||||
msgid "The slug can't be empty"
|
||||
msgstr "La ficha no puede estar vacía"
|
||||
|
||||
#: mediagoblin/edit/forms.py:33
|
||||
#: mediagoblin/edit/forms.py:39
|
||||
msgid ""
|
||||
"The title part of this media's URL. You usually don't need to change this."
|
||||
"The title part of this media's address. You usually don't need to change "
|
||||
"this."
|
||||
msgstr ""
|
||||
"La parte del título de la URL de este contenido. Normalmente no necesitas "
|
||||
"cambiar esto."
|
||||
|
||||
#: mediagoblin/edit/forms.py:40
|
||||
#: mediagoblin/edit/forms.py:46
|
||||
msgid "Bio"
|
||||
msgstr "Bio"
|
||||
|
||||
#: mediagoblin/edit/forms.py:43
|
||||
#: mediagoblin/edit/forms.py:48
|
||||
msgid ""
|
||||
"You can use\n"
|
||||
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
|
||||
" Markdown</a> for formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:53
|
||||
msgid "Website"
|
||||
msgstr "Sitio web"
|
||||
|
||||
#: mediagoblin/edit/views.py:64
|
||||
#: mediagoblin/edit/forms.py:60
|
||||
msgid "Old password"
|
||||
msgstr "Vieja contraseña"
|
||||
|
||||
#: mediagoblin/edit/forms.py:62
|
||||
msgid "Enter your old password to prove you own this account."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:65
|
||||
msgid "New password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:65
|
||||
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:85
|
||||
#: mediagoblin/edit/views.py:86
|
||||
msgid "You are editing another user's media. Proceed with caution."
|
||||
msgstr "Estás editando el contenido de otro usuario. Proceder con precaución."
|
||||
|
||||
#: mediagoblin/edit/views.py:155
|
||||
#: mediagoblin/edit/views.py:156
|
||||
msgid "You are editing a user's profile. Proceed with caution."
|
||||
msgstr "Estás editando un perfil de usuario. Proceder con precaución."
|
||||
|
||||
#: mediagoblin/process_media/errors.py:44
|
||||
msgid "Invalid file given for media type."
|
||||
msgstr "Archivo inválido para el formato seleccionado."
|
||||
#: mediagoblin/edit/views.py:174
|
||||
msgid "Profile changes saved"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:200
|
||||
msgid "Wrong password"
|
||||
msgstr "Contraseña incorrecta"
|
||||
|
||||
#: mediagoblin/edit/views.py:216
|
||||
msgid "Account settings saved"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/media_types/__init__.py:77
|
||||
msgid "Could not extract any file extension from \"{filename}\""
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/media_types/__init__.py:88
|
||||
msgid "Sorry, I don't support that file type :("
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/submit/forms.py:25
|
||||
msgid "File"
|
||||
msgstr "Archivo"
|
||||
|
||||
#: mediagoblin/submit/forms.py:30
|
||||
msgid "Description of this work"
|
||||
msgstr "Descripción de esta obra"
|
||||
|
||||
#: mediagoblin/submit/views.py:46
|
||||
#: mediagoblin/submit/views.py:50
|
||||
msgid "You must provide a file."
|
||||
msgstr "Debes proporcionar un archivo."
|
||||
|
||||
#: mediagoblin/submit/views.py:49
|
||||
msgid "The file doesn't seem to be an image!"
|
||||
msgstr "¡El archivo no parece ser una imagen!"
|
||||
|
||||
#: mediagoblin/submit/views.py:121
|
||||
#: mediagoblin/submit/views.py:128
|
||||
msgid "Woohoo! Submitted!"
|
||||
msgstr "¡Woohoo! ¡Enviado!"
|
||||
msgstr "¡Yujú! ¡Enviado!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:21
|
||||
#: mediagoblin/templates/mediagoblin/404.html:22
|
||||
msgid "Image of 404 goblin stressing out"
|
||||
msgstr "Imagen de 404 goblin estresándose"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:23
|
||||
msgid "Oops!"
|
||||
msgstr "Ups!"
|
||||
msgstr "¡Ups!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:24
|
||||
msgid "There doesn't seem to be a page at this address. Sorry!"
|
||||
@@ -171,33 +231,30 @@ msgstr ""
|
||||
"Si estás seguro que la dirección es correcta, puede ser que la pagina haya "
|
||||
"sido movida o borrada."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:32
|
||||
msgid "Image of 404 goblin stressing out"
|
||||
msgstr "Imagen de 404 goblin estresándose"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:22
|
||||
msgid "GNU MediaGoblin"
|
||||
msgstr "GNU MediaGoblin"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:47
|
||||
#: mediagoblin/templates/mediagoblin/base.html:48
|
||||
msgid "MediaGoblin logo"
|
||||
msgstr "Logo de MediaGoblin"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:52
|
||||
msgid "Submit media"
|
||||
msgstr "Enviar contenido"
|
||||
#: mediagoblin/templates/mediagoblin/base.html:53
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:157
|
||||
msgid "Add media"
|
||||
msgstr "Añadir contenido"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:63
|
||||
msgid "verify your email!"
|
||||
msgstr "¡Verifica tu correo electrónico!"
|
||||
#: mediagoblin/templates/mediagoblin/base.html:64
|
||||
msgid "Verify your email!"
|
||||
msgstr "¡Verifica tu email!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:73
|
||||
#: mediagoblin/templates/mediagoblin/base.html:71
|
||||
msgid "log out"
|
||||
msgstr "Cerrar sesión"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:74
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:27
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:35
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:45
|
||||
msgid "Log in"
|
||||
msgstr "Conectarse"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:89
|
||||
#: mediagoblin/templates/mediagoblin/base.html:86
|
||||
msgid ""
|
||||
"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
|
||||
"href=\"http://gnu.org/\">GNU</a> project"
|
||||
@@ -209,93 +266,58 @@ msgstr ""
|
||||
msgid "Explore"
|
||||
msgstr "Explorar"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:27
|
||||
msgid "Hi there, media lover! MediaGoblin is..."
|
||||
msgstr "¡Hola, amante de los contenidos! MediaGoblin es ..."
|
||||
#: mediagoblin/templates/mediagoblin/root.html:26
|
||||
msgid "Hi there, welcome to this MediaGoblin site!"
|
||||
msgstr "Hola, ¡bienvenido a este sitio de MediaGoblin!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:28
|
||||
msgid ""
|
||||
"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
|
||||
"extraordinarily great piece of media hosting software."
|
||||
msgstr ""
|
||||
"Este sitio está montado con <a "
|
||||
"href=\"http://mediagoblin.org\">MediaGoblin</a>, un programa libre buenísimo"
|
||||
" para gestionar contenido multimedia."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:29
|
||||
msgid "The perfect place for your media!"
|
||||
msgstr "¡El lugar ideal para tus contenidos!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:30
|
||||
msgid ""
|
||||
"A place for people to collaborate and show off original and derived "
|
||||
"creations!"
|
||||
"To add your own media, place comments, save your favourites and more, you "
|
||||
"can log in with your MediaGoblin account."
|
||||
msgstr ""
|
||||
"¡Un lugar para colaborar y exhibir tus creaciones originales y derivadas!"
|
||||
"Para añadir tus propios contenidos, dejar comentarios, guardar tus favoritos"
|
||||
" y más, puedes iniciar sesión con tu cuenta de MediaGoblin."
|
||||
|
||||
#: 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 ""
|
||||
"Libre, como en la libertad. (Somos parte del proyecto <a "
|
||||
"href=\"http://gnu.org\">GNU</a> después de todo.)"
|
||||
msgid "Don't have one yet? It's easy!"
|
||||
msgstr "¿Aún no tienes una? ¡Es fácil!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:32
|
||||
msgid ""
|
||||
"Aiming to make the world a better place through decentralization and "
|
||||
"(eventually, coming soon!) federation!"
|
||||
msgstr ""
|
||||
"Queriendo hacer del mundo un mejor lugar a través de la descentralización y "
|
||||
"(eventualmente, muy pronto!) la federalización!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:33
|
||||
msgid ""
|
||||
"Built for extensibility. (Multiple media types coming soon to the software,"
|
||||
" including video support!)"
|
||||
msgstr ""
|
||||
"Pensado para ser extensible. (Prontamente soporte para multiples formatos, "
|
||||
"incluyendo video!)"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:34
|
||||
msgid ""
|
||||
"Powered by people like you. (<a "
|
||||
"href=\"http://mediagoblin.org/pages/join.html\">You can help us improve this"
|
||||
" software!</a>)"
|
||||
msgstr ""
|
||||
"Impulsado por gente como vos. (<a "
|
||||
"href=\"http://mediagoblin.org/pages/join.html\"> Vos podés ayudarnos a "
|
||||
"mejorar este programa</a>)"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:38
|
||||
msgid "Excited to join us?"
|
||||
msgstr "Te gustaría unirte a nosotros?"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:39
|
||||
#, python-format
|
||||
msgid ""
|
||||
"<a class=\"header_submit_highlight\" href=\"%(register_url)s\">Create a free account</a>\n"
|
||||
" or\n"
|
||||
" <a class=\"header_submit\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
|
||||
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Create an account at this site</a>\n"
|
||||
" or\n"
|
||||
" <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
|
||||
msgstr ""
|
||||
"<a class=\"header_submit_highlight\" href=\"%(register_url)s\">Crea una "
|
||||
"cuenta gratuita</a> o <a class=\"header_submit\" "
|
||||
"href=\"http://wiki.mediagoblin.org/HackingHowto\">Establece MediaGoblin en "
|
||||
"tu propio servidor</a>"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:53
|
||||
#: mediagoblin/templates/mediagoblin/root.html:40
|
||||
msgid "Most recent media"
|
||||
msgstr "El contenido más reciente"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:29
|
||||
msgid "Enter your new password"
|
||||
msgstr "Ingrese su nueva contraseña"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:29
|
||||
msgid "Enter your username or email"
|
||||
msgstr "Introduzca su nombre de usuario o correo electrónico"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_changed_success.html:22
|
||||
msgid "Your password has been changed. Try to log in now."
|
||||
msgstr "Se cambió tu contraseña. Intenta iniciar sesión ahora."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_email_sent.html:22
|
||||
msgid ""
|
||||
"Check your inbox. We sent an email with a URL for changing your password."
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:32
|
||||
msgid "Set your new password"
|
||||
msgstr ""
|
||||
"Revisa tu bandeja de entrada. Te enviamos un correo electrónico con una URL "
|
||||
"para cambiar tu contraseña."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:35
|
||||
msgid "Set password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:27
|
||||
msgid "Recover password"
|
||||
msgstr "Recuperar contraseña"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:30
|
||||
msgid "Send instructions"
|
||||
msgstr "Enviar instrucciones"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_verification_email.txt:19
|
||||
#, python-format
|
||||
@@ -310,36 +332,35 @@ msgid ""
|
||||
"If you think this is an error, just ignore this email and continue being\n"
|
||||
"a happy goblin!"
|
||||
msgstr ""
|
||||
"Hola %(username)s , para cambiar su contraseña de GNU MediaGoblin, abra la "
|
||||
"siguiente URL en su navegador: %(verification_url)s Si usted piensa que "
|
||||
"esto es un error, simplemente ignore este mensaje y siga siendo un duende "
|
||||
"feliz!"
|
||||
"Hola %(username)s,\n"
|
||||
"\n"
|
||||
"Para cambiar tu contraseña de GNU MediaGoblin, abre la siguiente URL en un navegador:\n"
|
||||
"\n"
|
||||
"%(verification_url)s \n"
|
||||
"\n"
|
||||
"Si piensas que esto es un error, simplemente ignora este mensaje y sigue siendo un trasgo feliz."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:30
|
||||
msgid "Logging in failed!"
|
||||
msgstr "¡Falló el inicio de sesión!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:43
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:35
|
||||
msgid "Don't have an account yet?"
|
||||
msgstr "¿No tienes una cuenta?"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:46
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:36
|
||||
msgid "Create one here!"
|
||||
msgstr "¡Crea una aquí!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:49
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:42
|
||||
msgid "Forgot your password?"
|
||||
msgstr "¿Olvidaste tu contraseña?"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:52
|
||||
msgid "Change it!"
|
||||
msgstr "Cambiarlo!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:27
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:32
|
||||
msgid "Create an account!"
|
||||
msgstr "¡Crea una cuenta!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:31
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:36
|
||||
msgid "Create"
|
||||
msgstr "Crear"
|
||||
|
||||
@@ -362,7 +383,7 @@ msgstr ""
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit.html:29
|
||||
#, python-format
|
||||
msgid "Editing %(media_title)s"
|
||||
msgstr "Edición %(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
|
||||
@@ -370,41 +391,119 @@ msgid "Cancel"
|
||||
msgstr "Cancelar"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit.html:37
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
|
||||
msgid "Save changes"
|
||||
msgstr "Guardar cambios"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:34
|
||||
#, python-format
|
||||
msgid "Changing %(username)s's account settings"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:29
|
||||
#, python-format
|
||||
msgid "Editing %(username)s's profile"
|
||||
msgstr "Editando el perfil de %(username)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:31
|
||||
msgid "Media tagged with:"
|
||||
msgstr "Contenido etiquetado con:"
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:30
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:35
|
||||
#, python-format
|
||||
msgid "Media tagged with: %(tag_name)s"
|
||||
msgstr "Contenido etiquetado con: %(tag_name)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:46
|
||||
msgid "Original"
|
||||
msgstr "Original"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:33
|
||||
msgid ""
|
||||
"Sorry, this video will not work because \n"
|
||||
"\t your web browser does not support HTML5 \n"
|
||||
"\t video."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:36
|
||||
msgid ""
|
||||
"You can get a modern web browser that \n"
|
||||
"\t can play this video at <a href=\"http://getfirefox.com\">\n"
|
||||
"\t http://getfirefox.com</a>!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/submit/start.html:26
|
||||
msgid "Submit yer media"
|
||||
msgstr "Envía tu contenido"
|
||||
msgid "Add your media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/submit/start.html:30
|
||||
msgid "Submit"
|
||||
msgstr "Enviar"
|
||||
msgid "Add"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:32
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
|
||||
#, python-format
|
||||
msgid "%(username)s's media"
|
||||
msgstr "Contenidos de %(username)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:37
|
||||
#, python-format
|
||||
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
|
||||
msgstr "Contenido de <a href=\"%(user_url)s\">%(username)s</a>'s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:52
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:32
|
||||
msgid "Sorry, no such user found."
|
||||
msgstr "Lo sentimos, no se encontró ese usuario."
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:60
|
||||
#, python-format
|
||||
msgid "Added on %(date)s."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
|
||||
msgid "Edit"
|
||||
msgstr "Editar"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
|
||||
msgid "Delete"
|
||||
msgstr "Borrar"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
|
||||
#, python-format
|
||||
msgid "%(comment_count)s comment"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:81
|
||||
#, python-format
|
||||
msgid "%(comment_count)s comments"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
|
||||
msgid "No comments yet."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:91
|
||||
msgid "Add one"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:100
|
||||
msgid ""
|
||||
"Type your comment here. You can use <a "
|
||||
"href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> for"
|
||||
" formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:104
|
||||
msgid "Add this comment"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:126
|
||||
msgid "at"
|
||||
msgstr "en"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:141
|
||||
#, python-format
|
||||
msgid "<p>❖ Browsing media by <a href=\"%(user_url)s\">%(username)s</a></p>"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
|
||||
#, python-format
|
||||
msgid "Really delete %(title)s?"
|
||||
msgstr "Realmente deseas eliminar %(title)s ?"
|
||||
msgstr "¿Realmente deseas eliminar %(title)s?"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:50
|
||||
msgid "Delete Permanently"
|
||||
@@ -433,31 +532,41 @@ msgstr "No hay contenido siendo procesado."
|
||||
msgid "These uploads failed to process:"
|
||||
msgstr "Estos archivos no pudieron ser procesados:"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:39
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:59
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:31
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:89
|
||||
#, python-format
|
||||
msgid "%(username)s's profile"
|
||||
msgstr "Perfil de %(username)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:43
|
||||
msgid "Sorry, no such user found."
|
||||
msgstr "Lo sentimos, no se encontró ese usuario."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:50
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:70
|
||||
msgid "Email verification needed"
|
||||
msgstr "Es necesario un correo electrónico de verificación"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:42
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
|
||||
msgid "Almost done! Your account still needs to be activated."
|
||||
msgstr "Casi terminas! Solo falta activar la cuenta."
|
||||
msgstr "¡Casi hemos terminado! Solo falta activar la cuenta."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:47
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:58
|
||||
msgid ""
|
||||
"An email should arrive in a few moments with instructions on how to do so."
|
||||
msgstr ""
|
||||
"En unos momentos te debería llegar un correo electrónico con las "
|
||||
"instrucciones para hacerlo."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:51
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
|
||||
msgid "In case it doesn't:"
|
||||
msgstr "En caso de que no:"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:54
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:65
|
||||
msgid "Resend verification email"
|
||||
msgstr "Reenviar correo electrónico de verificación"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:73
|
||||
msgid ""
|
||||
"Someone has registered an account with this username, but it still has to be"
|
||||
" activated."
|
||||
@@ -465,7 +574,7 @@ msgstr ""
|
||||
"Alguien ya registró una cuenta con ese nombre de usuario, pero todavía no "
|
||||
"fue activada."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:68
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:79
|
||||
#, python-format
|
||||
msgid ""
|
||||
"If you are that person but you've lost your verification email, you can <a "
|
||||
@@ -474,41 +583,37 @@ msgstr ""
|
||||
"Si tú eres esa persona, pero has perdido tu correo electrónico de "
|
||||
"verificación, puedes <a href=\"%(login_url)s\">acceder</a> y reenviarlo."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:78
|
||||
#, python-format
|
||||
msgid "%(username)s's profile"
|
||||
msgstr "Perfil de %(username)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:85
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
|
||||
msgid "Here's a spot to tell others about yourself."
|
||||
msgstr "Aquí hay un lugar para que le cuentes a los demás sobre tí."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:90
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:108
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:101
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
|
||||
msgid "Edit profile"
|
||||
msgstr "Editar perfil"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
|
||||
msgid "This user hasn't filled in their profile (yet)."
|
||||
msgstr "Este usuario (todavia) no ha completado su perfil."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:122
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:125
|
||||
msgid "Change account settings"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:138
|
||||
#, python-format
|
||||
msgid "View all of %(username)s's media"
|
||||
msgstr "Ver todo el contenido de %(username)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:135
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:151
|
||||
msgid ""
|
||||
"This is where your media will appear, but you don't seem to have added "
|
||||
"anything yet."
|
||||
msgstr ""
|
||||
"Aquí es donde tú contenido estará, pero parece que aún no has agregado nada."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:141
|
||||
msgid "Add media"
|
||||
msgstr "Añadir contenido"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:147
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:163
|
||||
#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:72
|
||||
msgid "There doesn't seem to be any media here yet..."
|
||||
msgstr "Parece que aún no hay ningún contenido aquí..."
|
||||
|
||||
@@ -520,31 +625,57 @@ msgstr "ícono feed"
|
||||
msgid "Atom feed"
|
||||
msgstr "Atom feed"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:40
|
||||
msgid "Newer"
|
||||
msgstr "Recientes"
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
|
||||
msgid "← Newer"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:46
|
||||
msgid "Older"
|
||||
msgstr "Antiguas"
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
|
||||
msgid "Older →"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/forms.py:24
|
||||
msgid "Comment"
|
||||
msgstr "Comentario"
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
|
||||
msgid "Go to page:"
|
||||
msgstr "Ir a la página:"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:27
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:32
|
||||
msgid "newer"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:38
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:43
|
||||
msgid "older"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/tags.html:20
|
||||
msgid "View more media tagged with"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/tags.html:25
|
||||
msgid "or"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/forms.py:30
|
||||
msgid "I am sure I want to delete this"
|
||||
msgstr "Estoy seguro de que quiero borrar esto"
|
||||
|
||||
#: mediagoblin/user_pages/views.py:142
|
||||
msgid "Empty comments are not allowed."
|
||||
msgstr ""
|
||||
#: mediagoblin/user_pages/views.py:155
|
||||
msgid "Oops, your comment was empty."
|
||||
msgstr "Ups, tu comentario estaba vacío."
|
||||
|
||||
#: mediagoblin/user_pages/views.py:148
|
||||
msgid "Comment posted!"
|
||||
msgstr ""
|
||||
#: mediagoblin/user_pages/views.py:161
|
||||
msgid "Your comment has been posted!"
|
||||
msgstr "¡Tu comentario ha sido publicado!"
|
||||
|
||||
#: mediagoblin/user_pages/views.py:181
|
||||
#: mediagoblin/user_pages/views.py:183
|
||||
msgid "You deleted the media."
|
||||
msgstr "Eliminaste el contenido"
|
||||
|
||||
#: mediagoblin/user_pages/views.py:190
|
||||
msgid "The media was not deleted because you didn't check that you were sure."
|
||||
msgstr "El contenido no se eliminó porque no marcaste que estabas seguro."
|
||||
|
||||
#: mediagoblin/user_pages/views.py:198
|
||||
msgid "You are about to delete another user's media. Proceed with caution."
|
||||
msgstr ""
|
||||
"Estás a punto de eliminar un contenido de otro usuario. Proceder con "
|
||||
|
||||
Binary file not shown.
@@ -3,6 +3,8 @@
|
||||
# This file is distributed under the same license as the PROJECT project.
|
||||
#
|
||||
# Translators:
|
||||
# <a5565930@nepwk.com>, 2011.
|
||||
# <chesuidayeur@yahoo.fr>, 2011.
|
||||
# <joehillen@gmail.com>, 2011.
|
||||
# <marktraceur@gmail.com>, 2011.
|
||||
# <maxineb@members.fsf.org>, 2011.
|
||||
@@ -12,9 +14,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-11-01 23:14-0500\n"
|
||||
"PO-Revision-Date: 2011-11-02 04:13+0000\n"
|
||||
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
|
||||
"POT-Creation-Date: 2011-12-04 10:24-0600\n"
|
||||
"PO-Revision-Date: 2011-12-29 17:39+0000\n"
|
||||
"Last-Translator: ianux <a5565930@nepwk.com>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -23,6 +25,10 @@ msgstr ""
|
||||
"Language: fr\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1)\n"
|
||||
|
||||
#: mediagoblin/processing.py:143
|
||||
msgid "Invalid file given for media type."
|
||||
msgstr "Le fichier envoyé ne correspond pas au type de média."
|
||||
|
||||
#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:49
|
||||
msgid "Username"
|
||||
msgstr "Nom d'utilisateur"
|
||||
@@ -42,7 +48,7 @@ msgstr "Confirmer le mot de passe"
|
||||
#: mediagoblin/auth/forms.py:39
|
||||
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 "
|
||||
"Tapez-le à nouveau ici pour vous assurer qu'il n'y a pas de fautes "
|
||||
"d'orthographe."
|
||||
|
||||
#: mediagoblin/auth/forms.py:42
|
||||
@@ -58,8 +64,8 @@ msgid "Sorry, a user with that name already exists."
|
||||
msgstr "Un utilisateur existe déjà avec ce nom, désolé."
|
||||
|
||||
#: mediagoblin/auth/views.py:77
|
||||
msgid "Sorry, that email address has already been taken."
|
||||
msgstr "Désolé, cette adresse courriel a déjà été prise."
|
||||
msgid "Sorry, a user with that email address already exists."
|
||||
msgstr "Désolé, il existe déjà un utilisateur ayant cette adresse e-mail."
|
||||
|
||||
#: mediagoblin/auth/views.py:179
|
||||
msgid ""
|
||||
@@ -73,15 +79,26 @@ msgstr ""
|
||||
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:207
|
||||
#: mediagoblin/auth/views.py:203
|
||||
msgid "You must be logged in so we know who to send the email to!"
|
||||
msgstr ""
|
||||
"Vous devez être authentifié afin que nous sachions à qui envoyer l'e-mail !"
|
||||
|
||||
#: mediagoblin/auth/views.py:211
|
||||
msgid "You've already verified your email address!"
|
||||
msgstr "Votre adresse e-mail a déjà été vérifiée !"
|
||||
|
||||
#: mediagoblin/auth/views.py:224
|
||||
msgid "Resent your verification email."
|
||||
msgstr "E-mail de vérification renvoyé."
|
||||
|
||||
#: mediagoblin/auth/views.py:248
|
||||
#: mediagoblin/auth/views.py:265
|
||||
msgid ""
|
||||
"Could not send password recovery email as your username is inactive or your "
|
||||
"account's email address has not been verified."
|
||||
msgstr ""
|
||||
"Impossible d'envoyer un email de récupération de mot de passe : votre compte"
|
||||
" est inactif ou bien l'email de votre compte n'a pas été vérifiée."
|
||||
|
||||
#: mediagoblin/edit/forms.py:24 mediagoblin/submit/forms.py:27
|
||||
msgid "Title"
|
||||
@@ -91,46 +108,68 @@ msgstr "Titre"
|
||||
msgid "Tags"
|
||||
msgstr "Tags"
|
||||
|
||||
#: mediagoblin/edit/forms.py:31
|
||||
#: mediagoblin/edit/forms.py:30 mediagoblin/submit/forms.py:34
|
||||
msgid "Seperate tags by commas."
|
||||
msgstr "Séparez les tags par des virgules."
|
||||
|
||||
#: mediagoblin/edit/forms.py:33
|
||||
msgid "Slug"
|
||||
msgstr "Légende"
|
||||
|
||||
#: mediagoblin/edit/forms.py:32
|
||||
#: 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/edit/forms.py:35
|
||||
msgid ""
|
||||
"The title part of this media's URL. You usually don't need to change this."
|
||||
msgstr ""
|
||||
"Le nom de ce media dans l'URL. Vous n'avez normalement pas besoin de le "
|
||||
"changer"
|
||||
|
||||
#: mediagoblin/edit/forms.py:40
|
||||
#: mediagoblin/edit/forms.py:42
|
||||
msgid "Bio"
|
||||
msgstr "Bio"
|
||||
|
||||
#: mediagoblin/edit/forms.py:43
|
||||
#: mediagoblin/edit/forms.py:45
|
||||
msgid "Website"
|
||||
msgstr "Site web"
|
||||
|
||||
#: mediagoblin/edit/views.py:64
|
||||
#: mediagoblin/edit/forms.py:49
|
||||
msgid "Old password"
|
||||
msgstr "Ancien mot de passe."
|
||||
|
||||
#: mediagoblin/edit/forms.py:52
|
||||
msgid "New Password"
|
||||
msgstr "Nouveau mot de passe"
|
||||
|
||||
#: mediagoblin/edit/views.py:65
|
||||
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:85
|
||||
#: mediagoblin/edit/views.py:86
|
||||
msgid "You are editing another user's media. Proceed with caution."
|
||||
msgstr ""
|
||||
"Vous vous apprêtez à modifier le média d'un autre utilisateur. Veuillez "
|
||||
"prendre garde."
|
||||
|
||||
#: mediagoblin/edit/views.py:155
|
||||
#: mediagoblin/edit/views.py:156
|
||||
msgid "You are editing a user's profile. Proceed with caution."
|
||||
msgstr ""
|
||||
"Vous vous apprêtez à modifier le profil d'un utilisateur. Veuillez prendre "
|
||||
"garde."
|
||||
|
||||
#: mediagoblin/process_media/errors.py:44
|
||||
msgid "Invalid file given for media type."
|
||||
msgstr "Invalide fichier donné pour le type de média."
|
||||
#: mediagoblin/edit/views.py:171
|
||||
msgid "Wrong password"
|
||||
msgstr "Mauvais mot de passe"
|
||||
|
||||
#: mediagoblin/edit/views.py:192
|
||||
msgid "Profile edited!"
|
||||
msgstr "Profile mis à jour !"
|
||||
|
||||
#: mediagoblin/media_types/__init__.py:65
|
||||
msgid "Could not find any file extension in \"{filename}\""
|
||||
msgstr "Impossible d'extraire une extension de fichier de \"{nomfichier}\""
|
||||
|
||||
#: mediagoblin/submit/forms.py:25
|
||||
msgid "File"
|
||||
@@ -138,27 +177,27 @@ msgstr "Fichier"
|
||||
|
||||
#: mediagoblin/submit/forms.py:30
|
||||
msgid "Description of this work"
|
||||
msgstr ""
|
||||
msgstr "Descriptif pour ce travail"
|
||||
|
||||
#: mediagoblin/submit/views.py:46
|
||||
#: mediagoblin/submit/views.py:49
|
||||
msgid "You must provide a file."
|
||||
msgstr "Il vous faut fournir un fichier."
|
||||
|
||||
#: mediagoblin/submit/views.py:49
|
||||
msgid "The file doesn't seem to be an image!"
|
||||
msgstr "Ce fichier ne semble pas être une image !"
|
||||
|
||||
#: mediagoblin/submit/views.py:121
|
||||
#: mediagoblin/submit/views.py:127
|
||||
msgid "Woohoo! Submitted!"
|
||||
msgstr "Youhou, c'est envoyé !"
|
||||
|
||||
#: mediagoblin/submit/views.py:133
|
||||
msgid "Invalid file type."
|
||||
msgstr "Type de fichier invalide."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:21
|
||||
msgid "Oops!"
|
||||
msgstr "Zut!"
|
||||
msgstr "Zut !"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:24
|
||||
msgid "There doesn't seem to be a page at this address. Sorry!"
|
||||
msgstr "Il ne semble pas être une page à cette adresse. Désolé!"
|
||||
msgstr "Il ne semble pas y avoir de page à cette adresse. Désolé !"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:26
|
||||
msgid ""
|
||||
@@ -166,128 +205,113 @@ msgid ""
|
||||
" 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é."
|
||||
"recherchez a été déplacée ou supprimée."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:32
|
||||
msgid "Image of 404 goblin stressing out"
|
||||
msgstr "Image de 404 gobelin stresser"
|
||||
msgstr "Image de 404 gobelin angoissé"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:22
|
||||
msgid "GNU MediaGoblin"
|
||||
msgstr "GNU MediaGoblin"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:47
|
||||
#: mediagoblin/templates/mediagoblin/base.html:49
|
||||
msgid "MediaGoblin logo"
|
||||
msgstr "Logo MediaGoblin"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:52
|
||||
#: mediagoblin/templates/mediagoblin/base.html:54
|
||||
msgid "Submit media"
|
||||
msgstr "Soumettre un média"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:63
|
||||
msgid "verify your email!"
|
||||
msgstr "vérifiez votre adresse e-mail !"
|
||||
#: mediagoblin/templates/mediagoblin/base.html:65
|
||||
msgid "Verify your email!"
|
||||
msgstr "Vérifiez votre adresse e-mail !"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:73
|
||||
#: mediagoblin/templates/mediagoblin/base.html:72
|
||||
msgid "log out"
|
||||
msgstr "déconnexion"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:75
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:27
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:35
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:45
|
||||
msgid "Log in"
|
||||
msgstr "S'identifier"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:89
|
||||
#: mediagoblin/templates/mediagoblin/base.html:91
|
||||
msgid ""
|
||||
"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
|
||||
"href=\"http://gnu.org/\">GNU</a> project"
|
||||
msgstr ""
|
||||
"Propulsé par <a href=\"http://mediagoblin.org\">MediaGoblin</a> , un <a "
|
||||
"href=\"http://gnu.org/\">GNU</a> de projet"
|
||||
"Propulsé par <a href=\"http://mediagoblin.org\">MediaGoblin</a> , un projet "
|
||||
"<a href=\"http://gnu.org/\">GNU</a>"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:24
|
||||
msgid "Explore"
|
||||
msgstr ""
|
||||
msgstr "Explorer"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:27
|
||||
msgid "Hi there, media lover! MediaGoblin is..."
|
||||
msgstr "Salut à tous, amateur de médias! MediaGoblin est ..."
|
||||
msgid "Hi there, welcome to this MediaGoblin site!"
|
||||
msgstr "Bonjour, et bienvenu sur ce site MediaGoblin !"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:28
|
||||
msgid ""
|
||||
"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
|
||||
"extraordinarily great piece of media hosting software."
|
||||
msgstr ""
|
||||
"Ce site fait tourner <a href=\"http://mediagoblin.org\">MediaGoblin</a>, un "
|
||||
"logiciel d'hébergement de média extraordinairement génial."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:29
|
||||
msgid "The perfect place for your media!"
|
||||
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!"
|
||||
"To add your own media, place comments, save your favourites and more, you "
|
||||
"can log in with your MediaGoblin account."
|
||||
msgstr ""
|
||||
"Un lieu pour les personnes de collaborer et de montrer des créations "
|
||||
"originales et dérivées!"
|
||||
"Ajoutez vos propres medias, commentez ceux des autres, sauvegardez vos "
|
||||
"préférés et plus encore ! Faites tout cela depuis votre compte MediaGoblin."
|
||||
|
||||
#: 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.)"
|
||||
msgid "Don't have one yet? It's easy!"
|
||||
msgstr "Vous n'en avez pas ? C'est facile !"
|
||||
|
||||
#: 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 ""
|
||||
"Powered by people like you. (<a "
|
||||
"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/root.html:38
|
||||
msgid "Excited to join us?"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:39
|
||||
#, python-format
|
||||
msgid ""
|
||||
"<a class=\"header_submit_highlight\" href=\"%(register_url)s\">Create a free account</a>\n"
|
||||
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Create an account at this site</a>\n"
|
||||
" or\n"
|
||||
" <a class=\"header_submit\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
|
||||
" <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
|
||||
msgstr ""
|
||||
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Créez un compte sur ce site</a>\n"
|
||||
" ou\n"
|
||||
" <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Déployez MediaGoblin sur votre propre serveur</a>"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:53
|
||||
#: mediagoblin/templates/mediagoblin/root.html:44
|
||||
msgid "Most recent media"
|
||||
msgstr ""
|
||||
msgstr "Tout derniers media"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:29
|
||||
msgid "Enter your new password"
|
||||
msgstr ""
|
||||
msgstr "Entrez un nouveau mot de passe"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:29
|
||||
msgid "Enter your username or email"
|
||||
msgstr ""
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:33
|
||||
#: mediagoblin/templates/mediagoblin/submit/start.html:30
|
||||
msgid "Submit"
|
||||
msgstr "Soumettre"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:27
|
||||
msgid "Recover password"
|
||||
msgstr "Récupérer le mot de passe"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:30
|
||||
msgid "Send instructions"
|
||||
msgstr "Envoyer les instructions"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_changed_success.html:22
|
||||
msgid "Your password has been changed. Try to log in now."
|
||||
msgstr ""
|
||||
"Votre mot de passe a été changé. Essayez maintenant de vous identifier."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_email_sent.html:22
|
||||
msgid ""
|
||||
"Check your inbox. We sent an email with a URL for changing your password."
|
||||
msgstr ""
|
||||
"Verifiez votre boîte de réception. Nous vous avons envoyé un email avec une "
|
||||
"URL vous permettant de changer votre mot de passe."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_verification_email.txt:19
|
||||
#, python-format
|
||||
@@ -302,30 +326,35 @@ msgid ""
|
||||
"If you think this is an error, just ignore this email and continue being\n"
|
||||
"a happy goblin!"
|
||||
msgstr ""
|
||||
"Bonjour %(username)s,\n"
|
||||
"\n"
|
||||
"Pour changer votre mot de passe GNU MediaGoblin, ouvrez l'URL suivante dans \n"
|
||||
"votre navigateur internet :\n"
|
||||
"\n"
|
||||
"%(verification_url)s\n"
|
||||
"\n"
|
||||
"Si vous pensez qu'il s'agit d'une erreur, ignorez simplement cet email et restez\n"
|
||||
"un goblin heureux !"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:30
|
||||
msgid "Logging in failed!"
|
||||
msgstr "Connexion a échoué!"
|
||||
msgstr "La connexion a échoué!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:43
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:35
|
||||
msgid "Don't have an account yet?"
|
||||
msgstr "Pas encore de compte?"
|
||||
msgstr "Pas encore de compte ?"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:46
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:36
|
||||
msgid "Create one here!"
|
||||
msgstr "Créez-en un ici!"
|
||||
msgstr "Créez-en un ici !"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:49
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:42
|
||||
msgid "Forgot your password?"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:52
|
||||
msgid "Change it!"
|
||||
msgstr ""
|
||||
msgstr "Vous avez oublié votre mot de passe ?"
|
||||
|
||||
#: 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:31
|
||||
msgid "Create"
|
||||
@@ -367,27 +396,54 @@ msgstr "Enregistrer les modifications"
|
||||
msgid "Editing %(username)s's profile"
|
||||
msgstr "Modification du profil de %(username)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:31
|
||||
msgid "Media tagged with:"
|
||||
msgstr "Média comportant les tags suivants :"
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:30
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:35
|
||||
#, python-format
|
||||
msgid "Media tagged with: %(tag_name)s"
|
||||
msgstr "Médias taggés avec : %(tag_name)s "
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:19
|
||||
msgid "Original"
|
||||
msgstr "Original"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/submit/start.html:26
|
||||
msgid "Submit yer media"
|
||||
msgstr "Soumettez ce média"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/submit/start.html:30
|
||||
msgid "Submit"
|
||||
msgstr "Soumettre"
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
|
||||
#, python-format
|
||||
msgid "%(username)s's media"
|
||||
msgstr "Medias de %(username)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:32
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:37
|
||||
#, python-format
|
||||
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
|
||||
msgstr "Médias de <a href=\"%(user_url)s\">%(username)s</a>"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:52
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:32
|
||||
msgid "Sorry, no such user found."
|
||||
msgstr "Impossible de trouver cet utilisateur, désolé."
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:57
|
||||
#, python-format
|
||||
msgid "By <a href=\"%(user_url)s\">%(username)s</a> on %(date)s"
|
||||
msgstr "Par <a href=\"%(user_url)s\">%(username)s</a> le %(date)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:67
|
||||
msgid "Post a comment"
|
||||
msgstr "Poster un commentaire"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:85
|
||||
msgid "at"
|
||||
msgstr "à"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:102
|
||||
msgid "Post comment!"
|
||||
msgstr "Poster le commentaire !"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:124
|
||||
msgid "Edit"
|
||||
msgstr "Éditer"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:130
|
||||
msgid "Delete"
|
||||
msgstr "Effacer"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
|
||||
#, python-format
|
||||
@@ -396,7 +452,7 @@ msgstr "Voulez-vous vraiment supprimer %(title)s ?"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:50
|
||||
msgid "Delete Permanently"
|
||||
msgstr ""
|
||||
msgstr "Supprimer définitivement"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:22
|
||||
msgid "Media processing panel"
|
||||
@@ -419,33 +475,43 @@ msgstr "Aucun média en transformation"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:50
|
||||
msgid "These uploads failed to process:"
|
||||
msgstr "Ces ajouts n'etaient pas processé:"
|
||||
msgstr "Le traitement de ces ajouts a échoué :"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:39
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:59
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:31
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:89
|
||||
#, python-format
|
||||
msgid "%(username)s's profile"
|
||||
msgstr "profil de %(username)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:43
|
||||
msgid "Sorry, no such user found."
|
||||
msgstr "Impossible de trouver cet utilisateur, désolé."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:50
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:70
|
||||
msgid "Email verification needed"
|
||||
msgstr "Vérification d'email nécessaire"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:42
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
|
||||
msgid "Almost done! Your account still needs to be activated."
|
||||
msgstr "Presque fini! Votre compte a encore besoin d'être activé."
|
||||
msgstr "Presque fini ! Votre compte a encore besoin d'être activé."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:47
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:58
|
||||
msgid ""
|
||||
"An email should arrive in a few moments with instructions on how to do so."
|
||||
msgstr ""
|
||||
"Un e-mail devrait vous parvenir dans quelques instants ; il vous indiquera "
|
||||
"comment procéder."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:51
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
|
||||
msgid "In case it doesn't:"
|
||||
msgstr "Si la vérification n'est pas arrivée à bon port :"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:54
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:65
|
||||
msgid "Resend verification email"
|
||||
msgstr "Renvoyer l'e-mail de vérification"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:73
|
||||
msgid ""
|
||||
"Someone has registered an account with this username, but it still has to be"
|
||||
" activated."
|
||||
@@ -453,7 +519,7 @@ msgstr ""
|
||||
"Quelqu'un a enregistré un compte avec ce nom, mais il doit encore être "
|
||||
"activé."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:68
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:79
|
||||
#, python-format
|
||||
msgid ""
|
||||
"If you are that person but you've lost your verification email, you can <a "
|
||||
@@ -463,48 +529,43 @@ msgstr ""
|
||||
"vérification, vous pouvez vous <a href=\"%(login_url)s\">identifier</a> et "
|
||||
"le renvoyer."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:78
|
||||
#, python-format
|
||||
msgid "%(username)s's profile"
|
||||
msgstr "profil de %(username)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:85
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
|
||||
msgid "Here's a spot to tell others about yourself."
|
||||
msgstr "Voici un endroit pour parler aux autres de vous-même."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:90
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:108
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:101
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:119
|
||||
msgid "Edit profile"
|
||||
msgstr "Modifier le profil"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:107
|
||||
msgid "This user hasn't filled in their profile (yet)."
|
||||
msgstr "Cet utilisateur n'a pas rempli leur profil (encore)."
|
||||
msgstr "Cet utilisateur n'a pas (encore) rempli son profil."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:122
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:133
|
||||
#, python-format
|
||||
msgid "View all of %(username)s's media"
|
||||
msgstr "Voir tous les médias de %(username)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:135
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:146
|
||||
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é."
|
||||
"C'est là où vos médias apparaîssent, mais vous ne semblez pas avoir encore "
|
||||
"ajouté quoi que ce soit."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:141
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:152
|
||||
msgid "Add media"
|
||||
msgstr "Ajouter des médias"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:147
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:158
|
||||
msgid "There doesn't seem to be any media here yet..."
|
||||
msgstr "Il ne semble pas être un média encore là ..."
|
||||
msgstr "Il ne semble pas y avoir de média là, pour l'instant ..."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
|
||||
msgid "feed icon"
|
||||
msgstr "icon de flux"
|
||||
msgstr "icone de flux"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
|
||||
msgid "Atom feed"
|
||||
@@ -512,11 +573,23 @@ msgstr "flux Atom"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:40
|
||||
msgid "Newer"
|
||||
msgstr ""
|
||||
msgstr "Nouveaux"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:46
|
||||
msgid "Older"
|
||||
msgstr ""
|
||||
msgstr "Anciens"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:50
|
||||
msgid "Go to page:"
|
||||
msgstr "Aller à la page :"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/tags.html:20
|
||||
msgid "Tagged with"
|
||||
msgstr "Taggé avec"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/tags.html:25
|
||||
msgid "and"
|
||||
msgstr "et"
|
||||
|
||||
#: mediagoblin/user_pages/forms.py:24
|
||||
msgid "Comment"
|
||||
@@ -524,17 +597,27 @@ msgstr "Commentaire"
|
||||
|
||||
#: mediagoblin/user_pages/forms.py:30
|
||||
msgid "I am sure I want to delete this"
|
||||
msgstr ""
|
||||
msgstr "Je suis sûr de vouloir supprimer cela"
|
||||
|
||||
#: mediagoblin/user_pages/views.py:142
|
||||
msgid "Empty comments are not allowed."
|
||||
msgstr ""
|
||||
#: mediagoblin/user_pages/views.py:155
|
||||
msgid "Oops, your comment was empty."
|
||||
msgstr "Oups, votre commentaire était vide."
|
||||
|
||||
#: mediagoblin/user_pages/views.py:148
|
||||
msgid "Comment posted!"
|
||||
msgstr ""
|
||||
#: mediagoblin/user_pages/views.py:161
|
||||
msgid "Your comment has been posted!"
|
||||
msgstr "Votre commentaire a été posté !"
|
||||
|
||||
#: mediagoblin/user_pages/views.py:181
|
||||
#: mediagoblin/user_pages/views.py:183
|
||||
msgid "You deleted the media."
|
||||
msgstr "Vous avez supprimé le media."
|
||||
|
||||
#: mediagoblin/user_pages/views.py:190
|
||||
msgid "The media was not deleted because you didn't check that you were sure."
|
||||
msgstr ""
|
||||
"Ce media n'a pas été supprimé car vous n'avez pas confirmer que vous étiez "
|
||||
"sur."
|
||||
|
||||
#: mediagoblin/user_pages/views.py:198
|
||||
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. "
|
||||
|
||||
Binary file not shown.
@@ -1,5 +1,5 @@
|
||||
# Translations template for PROJECT.
|
||||
# Copyright (C) 2011 ORGANIZATION
|
||||
# Copyright (C) 2012 ORGANIZATION
|
||||
# This file is distributed under the same license as the PROJECT project.
|
||||
#
|
||||
# Translators:
|
||||
@@ -8,8 +8,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: GNU MediaGoblin\n"
|
||||
"Report-Msgid-Bugs-To: http://bugs.foocorp.net/projects/mediagoblin/issues\n"
|
||||
"POT-Creation-Date: 2011-11-01 23:14-0500\n"
|
||||
"PO-Revision-Date: 2011-11-02 04:13+0000\n"
|
||||
"POT-Creation-Date: 2012-01-07 13:47-0600\n"
|
||||
"PO-Revision-Date: 2012-01-07 19:44+0000\n"
|
||||
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -19,27 +19,19 @@ msgstr ""
|
||||
"Language: ia\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
|
||||
#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:49
|
||||
#: mediagoblin/processing.py:143
|
||||
msgid "Invalid file given for media type."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:41
|
||||
msgid "Username"
|
||||
msgstr "Nomine de usator"
|
||||
|
||||
#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:53
|
||||
#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:45
|
||||
msgid "Password"
|
||||
msgstr "Contrasigno"
|
||||
|
||||
#: mediagoblin/auth/forms.py:35
|
||||
msgid "Passwords must match."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/forms.py:37
|
||||
msgid "Confirm password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/forms.py:39
|
||||
msgid "Type it again here to make sure there are no spelling mistakes."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/forms.py:42
|
||||
#: mediagoblin/auth/forms.py:34
|
||||
msgid "Email address"
|
||||
msgstr "Adresse de e-posta"
|
||||
|
||||
@@ -52,95 +44,163 @@ msgid "Sorry, a user with that name already exists."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:77
|
||||
msgid "Sorry, that email address has already been taken."
|
||||
msgid "Sorry, a user with that email address already exists."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:179
|
||||
#: mediagoblin/auth/views.py:180
|
||||
msgid ""
|
||||
"Your email address has been verified. You may now login, edit your profile, "
|
||||
"and submit images!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:185
|
||||
#: mediagoblin/auth/views.py:186
|
||||
msgid "The verification key or user id is incorrect"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:207
|
||||
#: mediagoblin/auth/views.py:204
|
||||
msgid "You must be logged in so we know who to send the email to!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:212
|
||||
msgid "You've already verified your email address!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:225
|
||||
msgid "Resent your verification email."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:248
|
||||
#: mediagoblin/auth/views.py:260
|
||||
msgid ""
|
||||
"An email has been sent with instructions on how to change your password."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:270
|
||||
msgid ""
|
||||
"Could not send password recovery email as your username is inactive or your "
|
||||
"account's email address has not been verified."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:282
|
||||
msgid "Couldn't find someone with that username or email."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:330
|
||||
msgid "You can now log in using your new password."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:24 mediagoblin/submit/forms.py:27
|
||||
msgid "Title"
|
||||
msgstr "Titulo"
|
||||
|
||||
#: mediagoblin/edit/forms.py:28 mediagoblin/submit/forms.py:32
|
||||
#: mediagoblin/edit/forms.py:27 mediagoblin/submit/forms.py:30
|
||||
msgid "Description of this work"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:28 mediagoblin/submit/forms.py:31
|
||||
msgid ""
|
||||
"You can use\n"
|
||||
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
|
||||
" Markdown</a> for formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:32 mediagoblin/submit/forms.py:35
|
||||
msgid "Tags"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:31
|
||||
#: mediagoblin/edit/forms.py:34 mediagoblin/submit/forms.py:37
|
||||
msgid "Separate tags by commas."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:37
|
||||
msgid "Slug"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:32
|
||||
#: mediagoblin/edit/forms.py:38
|
||||
msgid "The slug can't be empty"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:33
|
||||
#: mediagoblin/edit/forms.py:39
|
||||
msgid ""
|
||||
"The title part of this media's URL. You usually don't need to change this."
|
||||
"The title part of this media's address. You usually don't need to change "
|
||||
"this."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:40
|
||||
#: mediagoblin/edit/forms.py:46
|
||||
msgid "Bio"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:43
|
||||
#: mediagoblin/edit/forms.py:48
|
||||
msgid ""
|
||||
"You can use\n"
|
||||
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
|
||||
" Markdown</a> for formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:53
|
||||
msgid "Website"
|
||||
msgstr "Sito web"
|
||||
|
||||
#: mediagoblin/edit/views.py:64
|
||||
#: mediagoblin/edit/forms.py:60
|
||||
msgid "Old password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:62
|
||||
msgid "Enter your old password to prove you own this account."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:65
|
||||
msgid "New password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:65
|
||||
msgid "An entry with that slug already exists for this user."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:85
|
||||
#: mediagoblin/edit/views.py:86
|
||||
msgid "You are editing another user's media. Proceed with caution."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:155
|
||||
#: mediagoblin/edit/views.py:156
|
||||
msgid "You are editing a user's profile. Proceed with caution."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/process_media/errors.py:44
|
||||
msgid "Invalid file given for media type."
|
||||
#: mediagoblin/edit/views.py:174
|
||||
msgid "Profile changes saved"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:200
|
||||
msgid "Wrong password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:216
|
||||
msgid "Account settings saved"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/media_types/__init__.py:77
|
||||
msgid "Could not extract any file extension from \"{filename}\""
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/media_types/__init__.py:88
|
||||
msgid "Sorry, I don't support that file type :("
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/submit/forms.py:25
|
||||
msgid "File"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/submit/forms.py:30
|
||||
msgid "Description of this work"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/submit/views.py:46
|
||||
#: mediagoblin/submit/views.py:50
|
||||
msgid "You must provide a file."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/submit/views.py:49
|
||||
msgid "The file doesn't seem to be an image!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/submit/views.py:121
|
||||
#: mediagoblin/submit/views.py:128
|
||||
msgid "Woohoo! Submitted!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:21
|
||||
#: mediagoblin/templates/mediagoblin/404.html:22
|
||||
msgid "Image of 404 goblin stressing out"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:23
|
||||
msgid "Oops!"
|
||||
msgstr ""
|
||||
|
||||
@@ -154,33 +214,30 @@ msgid ""
|
||||
" been moved or deleted."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:32
|
||||
msgid "Image of 404 goblin stressing out"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:22
|
||||
msgid "GNU MediaGoblin"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:47
|
||||
#: mediagoblin/templates/mediagoblin/base.html:48
|
||||
msgid "MediaGoblin logo"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:52
|
||||
msgid "Submit media"
|
||||
#: mediagoblin/templates/mediagoblin/base.html:53
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:157
|
||||
msgid "Add media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:63
|
||||
msgid "verify your email!"
|
||||
#: mediagoblin/templates/mediagoblin/base.html:64
|
||||
msgid "Verify your email!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:73
|
||||
#: mediagoblin/templates/mediagoblin/base.html:71
|
||||
msgid "log out"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:74
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:27
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:35
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:45
|
||||
msgid "Log in"
|
||||
msgstr "Initiar session"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:89
|
||||
#: mediagoblin/templates/mediagoblin/base.html:86
|
||||
msgid ""
|
||||
"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
|
||||
"href=\"http://gnu.org/\">GNU</a> project"
|
||||
@@ -190,76 +247,52 @@ msgstr ""
|
||||
msgid "Explore"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:27
|
||||
msgid "Hi there, media lover! MediaGoblin is..."
|
||||
#: mediagoblin/templates/mediagoblin/root.html:26
|
||||
msgid "Hi there, welcome to this MediaGoblin site!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:28
|
||||
msgid ""
|
||||
"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
|
||||
"extraordinarily great piece of media hosting software."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:29
|
||||
msgid "The perfect place for your media!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:30
|
||||
msgid ""
|
||||
"A place for people to collaborate and show off original and derived "
|
||||
"creations!"
|
||||
"To add your own media, place comments, save your favourites and more, you "
|
||||
"can log in with your MediaGoblin account."
|
||||
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.)"
|
||||
msgid "Don't have one yet? It's easy!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:32
|
||||
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 ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:34
|
||||
msgid ""
|
||||
"Powered by people like you. (<a "
|
||||
"href=\"http://mediagoblin.org/pages/join.html\">You can help us improve this"
|
||||
" software!</a>)"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:38
|
||||
msgid "Excited to join us?"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:39
|
||||
#, python-format
|
||||
msgid ""
|
||||
"<a class=\"header_submit_highlight\" href=\"%(register_url)s\">Create a free account</a>\n"
|
||||
" or\n"
|
||||
" <a class=\"header_submit\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
|
||||
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Create an account at this site</a>\n"
|
||||
" or\n"
|
||||
" <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:53
|
||||
#: mediagoblin/templates/mediagoblin/root.html:40
|
||||
msgid "Most recent media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:29
|
||||
msgid "Enter your new password"
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:32
|
||||
msgid "Set your new password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:29
|
||||
msgid "Enter your username or email"
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:35
|
||||
msgid "Set password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_changed_success.html:22
|
||||
msgid "Your password has been changed. Try to log in now."
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:27
|
||||
msgid "Recover password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_email_sent.html:22
|
||||
msgid ""
|
||||
"Check your inbox. We sent an email with a URL for changing your password."
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:30
|
||||
msgid "Send instructions"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_verification_email.txt:19
|
||||
@@ -280,27 +313,23 @@ msgstr ""
|
||||
msgid "Logging in failed!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:43
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:35
|
||||
msgid "Don't have an account yet?"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:46
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:36
|
||||
msgid "Create one here!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:49
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:42
|
||||
msgid "Forgot your password?"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:52
|
||||
msgid "Change it!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:27
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:32
|
||||
msgid "Create an account!"
|
||||
msgstr "Crear un conto!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:31
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:36
|
||||
msgid "Create"
|
||||
msgstr ""
|
||||
|
||||
@@ -326,35 +355,113 @@ msgid "Cancel"
|
||||
msgstr "Cancellar"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit.html:37
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
|
||||
msgid "Save changes"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:34
|
||||
#, python-format
|
||||
msgid "Changing %(username)s's account settings"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:29
|
||||
#, python-format
|
||||
msgid "Editing %(username)s's profile"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:31
|
||||
msgid "Media tagged with:"
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:30
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:35
|
||||
#, python-format
|
||||
msgid "Media tagged with: %(tag_name)s"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:46
|
||||
msgid "Original"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:33
|
||||
msgid ""
|
||||
"Sorry, this video will not work because \n"
|
||||
"\t your web browser does not support HTML5 \n"
|
||||
"\t video."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:36
|
||||
msgid ""
|
||||
"You can get a modern web browser that \n"
|
||||
"\t can play this video at <a href=\"http://getfirefox.com\">\n"
|
||||
"\t http://getfirefox.com</a>!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/submit/start.html:26
|
||||
msgid "Submit yer media"
|
||||
msgid "Add your media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/submit/start.html:30
|
||||
msgid "Submit"
|
||||
msgid "Add"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:32
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
|
||||
#, python-format
|
||||
msgid "%(username)s's media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:37
|
||||
#, python-format
|
||||
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:52
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:32
|
||||
msgid "Sorry, no such user found."
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:60
|
||||
#, python-format
|
||||
msgid "Added on %(date)s."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
|
||||
msgid "Edit"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
|
||||
#, python-format
|
||||
msgid "%(comment_count)s comment"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:81
|
||||
#, python-format
|
||||
msgid "%(comment_count)s comments"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
|
||||
msgid "No comments yet."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:91
|
||||
msgid "Add one"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:100
|
||||
msgid ""
|
||||
"Type your comment here. You can use <a "
|
||||
"href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> for"
|
||||
" formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:104
|
||||
msgid "Add this comment"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:126
|
||||
msgid "at"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:141
|
||||
#, python-format
|
||||
msgid "<p>❖ Browsing media by <a href=\"%(user_url)s\">%(username)s</a></p>"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
|
||||
@@ -387,75 +494,81 @@ msgstr ""
|
||||
msgid "These uploads failed to process:"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:39
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:59
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:31
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:89
|
||||
#, python-format
|
||||
msgid "%(username)s's profile"
|
||||
msgstr "Profilo de %(username)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:43
|
||||
msgid "Sorry, no such user found."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:50
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:70
|
||||
msgid "Email verification needed"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:42
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
|
||||
msgid "Almost done! Your account still needs to be activated."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:47
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:58
|
||||
msgid ""
|
||||
"An email should arrive in a few moments with instructions on how to do so."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:51
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
|
||||
msgid "In case it doesn't:"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:54
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:65
|
||||
msgid "Resend verification email"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:73
|
||||
msgid ""
|
||||
"Someone has registered an account with this username, but it still has to be"
|
||||
" activated."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:68
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:79
|
||||
#, python-format
|
||||
msgid ""
|
||||
"If you are that person but you've lost your verification email, you can <a "
|
||||
"href=\"%(login_url)s\">log in</a> and resend it."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:78
|
||||
#, python-format
|
||||
msgid "%(username)s's profile"
|
||||
msgstr "Profilo de %(username)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:85
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
|
||||
msgid "Here's a spot to tell others about yourself."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:90
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:108
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:101
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
|
||||
msgid "Edit profile"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
|
||||
msgid "This user hasn't filled in their profile (yet)."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:122
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:125
|
||||
msgid "Change account settings"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:138
|
||||
#, python-format
|
||||
msgid "View all of %(username)s's media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:135
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:151
|
||||
msgid ""
|
||||
"This is where your media will appear, but you don't seem to have added "
|
||||
"anything yet."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:141
|
||||
msgid "Add media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:147
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:163
|
||||
#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:72
|
||||
msgid "There doesn't seem to be any media here yet..."
|
||||
msgstr ""
|
||||
|
||||
@@ -467,31 +580,57 @@ msgstr ""
|
||||
msgid "Atom feed"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:40
|
||||
msgid "Newer"
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
|
||||
msgid "← Newer"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:46
|
||||
msgid "Older"
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
|
||||
msgid "Older →"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/forms.py:24
|
||||
msgid "Comment"
|
||||
msgstr "Commento"
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
|
||||
msgid "Go to page:"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:27
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:32
|
||||
msgid "newer"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:38
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:43
|
||||
msgid "older"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/tags.html:20
|
||||
msgid "View more media tagged with"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/tags.html:25
|
||||
msgid "or"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/forms.py:30
|
||||
msgid "I am sure I want to delete this"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/views.py:142
|
||||
msgid "Empty comments are not allowed."
|
||||
#: mediagoblin/user_pages/views.py:155
|
||||
msgid "Oops, your comment was empty."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/views.py:148
|
||||
msgid "Comment posted!"
|
||||
#: mediagoblin/user_pages/views.py:161
|
||||
msgid "Your comment has been posted!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/views.py:181
|
||||
#: mediagoblin/user_pages/views.py:183
|
||||
msgid "You deleted the media."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/views.py:190
|
||||
msgid "The media was not deleted because you didn't check that you were sure."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/views.py:198
|
||||
msgid "You are about to delete another user's media. Proceed with caution."
|
||||
msgstr ""
|
||||
|
||||
|
||||
Binary file not shown.
@@ -1,15 +1,16 @@
|
||||
# Translations template for PROJECT.
|
||||
# Copyright (C) 2011 ORGANIZATION
|
||||
# Copyright (C) 2012 ORGANIZATION
|
||||
# This file is distributed under the same license as the PROJECT project.
|
||||
#
|
||||
# Translators:
|
||||
# <pikappa469@alice.it>, 2011.
|
||||
# <robi@nunnisoft.ch>, 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-11-01 23:14-0500\n"
|
||||
"PO-Revision-Date: 2011-11-02 04:13+0000\n"
|
||||
"POT-Creation-Date: 2012-01-07 13:47-0600\n"
|
||||
"PO-Revision-Date: 2012-01-07 19:44+0000\n"
|
||||
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -19,27 +20,19 @@ msgstr ""
|
||||
"Language: it\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
|
||||
#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:49
|
||||
#: mediagoblin/processing.py:143
|
||||
msgid "Invalid file given for media type."
|
||||
msgstr "documento non valido come tipo multimediale."
|
||||
|
||||
#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:41
|
||||
msgid "Username"
|
||||
msgstr "Nome utente"
|
||||
|
||||
#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:53
|
||||
#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:45
|
||||
msgid "Password"
|
||||
msgstr "Password"
|
||||
|
||||
#: mediagoblin/auth/forms.py:35
|
||||
msgid "Passwords must match."
|
||||
msgstr "Le password devono coincidere"
|
||||
|
||||
#: mediagoblin/auth/forms.py:37
|
||||
msgid "Confirm password"
|
||||
msgstr "Conferma password"
|
||||
|
||||
#: mediagoblin/auth/forms.py:39
|
||||
msgid "Type it again here to make sure there are no spelling mistakes."
|
||||
msgstr "Scrivilo ancora qui per assicurarti che non ci siano errori"
|
||||
|
||||
#: mediagoblin/auth/forms.py:42
|
||||
#: mediagoblin/auth/forms.py:34
|
||||
msgid "Email address"
|
||||
msgstr "Indirizzo email"
|
||||
|
||||
@@ -52,10 +45,10 @@ msgid "Sorry, a user with that name already exists."
|
||||
msgstr "Spiacente, esiste già un utente con quel nome"
|
||||
|
||||
#: mediagoblin/auth/views.py:77
|
||||
msgid "Sorry, that email address has already been taken."
|
||||
msgstr "Spiacente, quell'indirizzo email è già stato preso."
|
||||
msgid "Sorry, a user with that email address already exists."
|
||||
msgstr "Siamo spiacenti, un utente con quell'indirizzo email esiste già."
|
||||
|
||||
#: mediagoblin/auth/views.py:179
|
||||
#: mediagoblin/auth/views.py:180
|
||||
msgid ""
|
||||
"Your email address has been verified. You may now login, edit your profile, "
|
||||
"and submit images!"
|
||||
@@ -63,88 +56,159 @@ msgstr ""
|
||||
"Il tuo indirizzo email è stato verificato. Puoi ora fare login, modificare "
|
||||
"il tuo profilo, e inserire immagini!"
|
||||
|
||||
#: mediagoblin/auth/views.py:185
|
||||
#: mediagoblin/auth/views.py:186
|
||||
msgid "The verification key or user id is incorrect"
|
||||
msgstr "La chiave di verifica o l'id utente è sbagliato"
|
||||
|
||||
#: mediagoblin/auth/views.py:207
|
||||
#: mediagoblin/auth/views.py:204
|
||||
msgid "You must be logged in so we know who to send the email to!"
|
||||
msgstr ""
|
||||
"Devi entrare col tuo profilo così possiamo sapere a chi inviare l'email!"
|
||||
|
||||
#: mediagoblin/auth/views.py:212
|
||||
msgid "You've already verified your email address!"
|
||||
msgstr "Hai già verificato il tuo indirizzo email!"
|
||||
|
||||
#: mediagoblin/auth/views.py:225
|
||||
msgid "Resent your verification email."
|
||||
msgstr "Rispedisci email di verifica"
|
||||
|
||||
#: mediagoblin/auth/views.py:248
|
||||
#: mediagoblin/auth/views.py:260
|
||||
msgid ""
|
||||
"An email has been sent with instructions on how to change your password."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:270
|
||||
msgid ""
|
||||
"Could not send password recovery email as your username is inactive or your "
|
||||
"account's email address has not been verified."
|
||||
msgstr ""
|
||||
"Impossibile inviare l'email di recupero password perchè il tuo nome utente è"
|
||||
" inattivo o il tuo account email non è stato verificato."
|
||||
|
||||
#: mediagoblin/auth/views.py:282
|
||||
msgid "Couldn't find someone with that username or email."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:330
|
||||
msgid "You can now log in using your new password."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:24 mediagoblin/submit/forms.py:27
|
||||
msgid "Title"
|
||||
msgstr "Titolo"
|
||||
|
||||
#: mediagoblin/edit/forms.py:28 mediagoblin/submit/forms.py:32
|
||||
#: mediagoblin/edit/forms.py:27 mediagoblin/submit/forms.py:30
|
||||
msgid "Description of this work"
|
||||
msgstr "Descrizione di questo lavoro"
|
||||
|
||||
#: mediagoblin/edit/forms.py:28 mediagoblin/submit/forms.py:31
|
||||
msgid ""
|
||||
"You can use\n"
|
||||
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
|
||||
" Markdown</a> for formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:32 mediagoblin/submit/forms.py:35
|
||||
msgid "Tags"
|
||||
msgstr "Tags"
|
||||
|
||||
#: mediagoblin/edit/forms.py:31
|
||||
#: mediagoblin/edit/forms.py:34 mediagoblin/submit/forms.py:37
|
||||
msgid "Separate tags by commas."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:37
|
||||
msgid "Slug"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:32
|
||||
#: mediagoblin/edit/forms.py:38
|
||||
msgid "The slug can't be empty"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:33
|
||||
#: mediagoblin/edit/forms.py:39
|
||||
msgid ""
|
||||
"The title part of this media's URL. You usually don't need to change this."
|
||||
"The title part of this media's address. You usually don't need to change "
|
||||
"this."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:40
|
||||
#: mediagoblin/edit/forms.py:46
|
||||
msgid "Bio"
|
||||
msgstr "Bio"
|
||||
|
||||
#: mediagoblin/edit/forms.py:43
|
||||
#: mediagoblin/edit/forms.py:48
|
||||
msgid ""
|
||||
"You can use\n"
|
||||
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
|
||||
" Markdown</a> for formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:53
|
||||
msgid "Website"
|
||||
msgstr "Sito web"
|
||||
|
||||
#: mediagoblin/edit/views.py:64
|
||||
#: mediagoblin/edit/forms.py:60
|
||||
msgid "Old password"
|
||||
msgstr "Password vecchia"
|
||||
|
||||
#: mediagoblin/edit/forms.py:62
|
||||
msgid "Enter your old password to prove you own this account."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:65
|
||||
msgid "New password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:65
|
||||
msgid "An entry with that slug already exists for this user."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:85
|
||||
#: mediagoblin/edit/views.py:86
|
||||
msgid "You are editing another user's media. Proceed with caution."
|
||||
msgstr ""
|
||||
"Stai modificando documenti multimediale di un altro utente. Procedi con "
|
||||
"attenzione."
|
||||
|
||||
#: mediagoblin/edit/views.py:155
|
||||
#: mediagoblin/edit/views.py:156
|
||||
msgid "You are editing a user's profile. Proceed with caution."
|
||||
msgstr "Stai modificando il profilo di un utente. Procedi con attenzione."
|
||||
|
||||
#: mediagoblin/process_media/errors.py:44
|
||||
msgid "Invalid file given for media type."
|
||||
msgstr "documento non valido come tipo multimediale."
|
||||
#: mediagoblin/edit/views.py:174
|
||||
msgid "Profile changes saved"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:200
|
||||
msgid "Wrong password"
|
||||
msgstr "Password errata"
|
||||
|
||||
#: mediagoblin/edit/views.py:216
|
||||
msgid "Account settings saved"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/media_types/__init__.py:77
|
||||
msgid "Could not extract any file extension from \"{filename}\""
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/media_types/__init__.py:88
|
||||
msgid "Sorry, I don't support that file type :("
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/submit/forms.py:25
|
||||
msgid "File"
|
||||
msgstr "Documento"
|
||||
|
||||
#: mediagoblin/submit/forms.py:30
|
||||
msgid "Description of this work"
|
||||
msgstr "Descrizione di questo lavoro"
|
||||
|
||||
#: mediagoblin/submit/views.py:46
|
||||
#: mediagoblin/submit/views.py:50
|
||||
msgid "You must provide a file."
|
||||
msgstr "Devi specificare un documento."
|
||||
|
||||
#: mediagoblin/submit/views.py:49
|
||||
msgid "The file doesn't seem to be an image!"
|
||||
msgstr "Il documento non sembra essere un'immagine!"
|
||||
|
||||
#: mediagoblin/submit/views.py:121
|
||||
#: mediagoblin/submit/views.py:128
|
||||
msgid "Woohoo! Submitted!"
|
||||
msgstr "Evviva! "
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:21
|
||||
#: mediagoblin/templates/mediagoblin/404.html:22
|
||||
msgid "Image of 404 goblin stressing out"
|
||||
msgstr "Immagine di 404 folletti che stressano"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:23
|
||||
msgid "Oops!"
|
||||
msgstr "Oops!"
|
||||
|
||||
@@ -160,33 +224,30 @@ msgstr ""
|
||||
"Se sei sicuro che l'indirizzo è corretto, forse la pagina che stai cercando "
|
||||
"è stata spostata o cancellata."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:32
|
||||
msgid "Image of 404 goblin stressing out"
|
||||
msgstr "Immagine di 404 folletti che stressano"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:22
|
||||
msgid "GNU MediaGoblin"
|
||||
msgstr "GNU MediaGoblin"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:47
|
||||
#: mediagoblin/templates/mediagoblin/base.html:48
|
||||
msgid "MediaGoblin logo"
|
||||
msgstr "MediaGoblin logo"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:52
|
||||
msgid "Submit media"
|
||||
msgstr "Inoltra file multimediale"
|
||||
#: mediagoblin/templates/mediagoblin/base.html:53
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:157
|
||||
msgid "Add media"
|
||||
msgstr "Aggiungi documenti multimediali"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:63
|
||||
msgid "verify your email!"
|
||||
msgstr "verifica il tuo indirizzo email!"
|
||||
#: mediagoblin/templates/mediagoblin/base.html:64
|
||||
msgid "Verify your email!"
|
||||
msgstr "Verifica la tua email!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:73
|
||||
#: mediagoblin/templates/mediagoblin/base.html:71
|
||||
msgid "log out"
|
||||
msgstr "disconnettiti"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:74
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:27
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:35
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:45
|
||||
msgid "Log in"
|
||||
msgstr "Accedi"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:89
|
||||
#: mediagoblin/templates/mediagoblin/base.html:86
|
||||
msgid ""
|
||||
"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
|
||||
"href=\"http://gnu.org/\">GNU</a> project"
|
||||
@@ -198,86 +259,59 @@ msgstr ""
|
||||
msgid "Explore"
|
||||
msgstr "Esplora"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:27
|
||||
msgid "Hi there, media lover! MediaGoblin is..."
|
||||
msgstr "Ciao, amante del multimedia! MediaGoblin è..."
|
||||
#: mediagoblin/templates/mediagoblin/root.html:26
|
||||
msgid "Hi there, welcome to this MediaGoblin site!"
|
||||
msgstr "Ciao, benvenuto a questo sito MediaGoblin!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:28
|
||||
msgid ""
|
||||
"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
|
||||
"extraordinarily great piece of media hosting software."
|
||||
msgstr ""
|
||||
"questo sito sta utilizzando <a "
|
||||
"href=\"http://mediagoblin.org\">Mediagoblin</a>, un ottimo programma di "
|
||||
"media hosting."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:29
|
||||
msgid "The perfect place for your media!"
|
||||
msgstr "Il posto perfetto per i tuoi documenti multimediali!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:30
|
||||
msgid ""
|
||||
"A place for people to collaborate and show off original and derived "
|
||||
"creations!"
|
||||
"To add your own media, place comments, save your favourites and more, you "
|
||||
"can log in with your MediaGoblin account."
|
||||
msgstr ""
|
||||
"Un posto per collaborare con altri e mostrare le proprie creazioni originali"
|
||||
" e derivate!"
|
||||
"Per aggiungere i tuoi file, scrivere commenti, salvare i tuoi preferiti e "
|
||||
"altro, devi entrare col tuo profilo MediaGoblin."
|
||||
|
||||
#: 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 ""
|
||||
"Libero, come in libertà. (Siamo un progetto <a "
|
||||
"href=\"http://gnu.org\">GNU</a>, dopotutto.)"
|
||||
msgid "Don't have one yet? It's easy!"
|
||||
msgstr "Non ne hai già uno? E' semplice!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:32
|
||||
msgid ""
|
||||
"Aiming to make the world a better place through decentralization and "
|
||||
"(eventually, coming soon!) federation!"
|
||||
msgstr ""
|
||||
"Con l'obbiettivo di rendere il mondo un posto migliore attraverso la "
|
||||
"decentrelizzazione e (finalmente, presto!) federazione!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:33
|
||||
msgid ""
|
||||
"Built for extensibility. (Multiple media types coming soon to the software,"
|
||||
" including video support!)"
|
||||
msgstr ""
|
||||
"Fatto per estensibilità. (Numerosi tipi multimediali saranno presto aggiunti"
|
||||
" al programma, incluso il supporto video!)"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:34
|
||||
msgid ""
|
||||
"Powered by people like you. (<a "
|
||||
"href=\"http://mediagoblin.org/pages/join.html\">You can help us improve this"
|
||||
" software!</a>)"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:38
|
||||
msgid "Excited to join us?"
|
||||
msgstr "Eccitato di unirti a noi?"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:39
|
||||
#, python-format
|
||||
msgid ""
|
||||
"<a class=\"header_submit_highlight\" href=\"%(register_url)s\">Create a free account</a>\n"
|
||||
" or\n"
|
||||
" <a class=\"header_submit\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
|
||||
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Create an account at this site</a>\n"
|
||||
" or\n"
|
||||
" <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:53
|
||||
#: mediagoblin/templates/mediagoblin/root.html:40
|
||||
msgid "Most recent media"
|
||||
msgstr "Documenti multimediali più recenti"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:29
|
||||
msgid "Enter your new password"
|
||||
msgstr "Inserisci la tua nuova password"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:29
|
||||
msgid "Enter your username or email"
|
||||
msgstr "Inserisci il tuo nome utente o email"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_changed_success.html:22
|
||||
msgid "Your password has been changed. Try to log in now."
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:32
|
||||
msgid "Set your new password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_email_sent.html:22
|
||||
msgid ""
|
||||
"Check your inbox. We sent an email with a URL for changing your password."
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:35
|
||||
msgid "Set password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:27
|
||||
msgid "Recover password"
|
||||
msgstr "Recupera Password"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:30
|
||||
msgid "Send instructions"
|
||||
msgstr "Invia istruzioni"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_verification_email.txt:19
|
||||
#, python-format
|
||||
msgid ""
|
||||
@@ -291,32 +325,36 @@ msgid ""
|
||||
"If you think this is an error, just ignore this email and continue being\n"
|
||||
"a happy goblin!"
|
||||
msgstr ""
|
||||
"Ciao %(username)s,\n"
|
||||
"per cambiare la tua password MediaGoblin apri il seguente URL\n"
|
||||
"nel tuo web browser:\n"
|
||||
"\n"
|
||||
"%(verification_url)s\n"
|
||||
"\n"
|
||||
"Se pensi che sia un errore, ignora semplicemente questa email e continua ad essere \n"
|
||||
"un goblin felice!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:30
|
||||
msgid "Logging in failed!"
|
||||
msgstr "Accesso fallito!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:43
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:35
|
||||
msgid "Don't have an account yet?"
|
||||
msgstr "Non hai ancora un account?"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:46
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:36
|
||||
msgid "Create one here!"
|
||||
msgstr "Creane uno qui!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:49
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:42
|
||||
msgid "Forgot your password?"
|
||||
msgstr "Hai dimenticato la password?"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:52
|
||||
msgid "Change it!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:27
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:32
|
||||
msgid "Create an account!"
|
||||
msgstr "Crea un account!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:31
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:36
|
||||
msgid "Create"
|
||||
msgstr "Crea"
|
||||
|
||||
@@ -347,36 +385,114 @@ msgid "Cancel"
|
||||
msgstr "Annulla"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit.html:37
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
|
||||
msgid "Save changes"
|
||||
msgstr "Salva i cambiamenti"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:34
|
||||
#, python-format
|
||||
msgid "Changing %(username)s's account settings"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:29
|
||||
#, python-format
|
||||
msgid "Editing %(username)s's profile"
|
||||
msgstr "Stai modificando il profilo di %(username)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:31
|
||||
msgid "Media tagged with:"
|
||||
msgstr "Media taggata con:"
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:30
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:35
|
||||
#, python-format
|
||||
msgid "Media tagged with: %(tag_name)s"
|
||||
msgstr "file taggato con:%(tag_name)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:46
|
||||
msgid "Original"
|
||||
msgstr "Originale"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:33
|
||||
msgid ""
|
||||
"Sorry, this video will not work because \n"
|
||||
"\t your web browser does not support HTML5 \n"
|
||||
"\t video."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:36
|
||||
msgid ""
|
||||
"You can get a modern web browser that \n"
|
||||
"\t can play this video at <a href=\"http://getfirefox.com\">\n"
|
||||
"\t http://getfirefox.com</a>!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/submit/start.html:26
|
||||
msgid "Submit yer media"
|
||||
msgstr "Inoltra documento multimediale"
|
||||
msgid "Add your media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/submit/start.html:30
|
||||
msgid "Submit"
|
||||
msgstr "Conferma"
|
||||
msgid "Add"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:32
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
|
||||
#, python-format
|
||||
msgid "%(username)s's media"
|
||||
msgstr "file di %(username)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:37
|
||||
#, python-format
|
||||
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
|
||||
msgstr "Documenti multimediali di <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 "Mi dispiace, utente non trovato"
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:60
|
||||
#, python-format
|
||||
msgid "Added on %(date)s."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
|
||||
msgid "Edit"
|
||||
msgstr "Modifica"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
|
||||
msgid "Delete"
|
||||
msgstr "Elimina"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
|
||||
#, python-format
|
||||
msgid "%(comment_count)s comment"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:81
|
||||
#, python-format
|
||||
msgid "%(comment_count)s comments"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
|
||||
msgid "No comments yet."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:91
|
||||
msgid "Add one"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:100
|
||||
msgid ""
|
||||
"Type your comment here. You can use <a "
|
||||
"href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> for"
|
||||
" formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:104
|
||||
msgid "Add this comment"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:126
|
||||
msgid "at"
|
||||
msgstr "a"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:141
|
||||
#, python-format
|
||||
msgid "<p>❖ Browsing media by <a href=\"%(user_url)s\">%(username)s</a></p>"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
|
||||
#, python-format
|
||||
@@ -408,30 +524,40 @@ msgstr "Nessun documento multimediale in elaborazione"
|
||||
msgid "These uploads failed to process:"
|
||||
msgstr "L'elaborazione di questi upload è fallita:"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:39
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:59
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:31
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:89
|
||||
#, python-format
|
||||
msgid "%(username)s's profile"
|
||||
msgstr "profilo di %(username)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:43
|
||||
msgid "Sorry, no such user found."
|
||||
msgstr "Mi dispiace, utente non trovato"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:50
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:70
|
||||
msgid "Email verification needed"
|
||||
msgstr "è necessario verificare email"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:42
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
|
||||
msgid "Almost done! Your account still needs to be activated."
|
||||
msgstr "Quasi finito! Il tuo account deve ancora essere attivato."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:47
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:58
|
||||
msgid ""
|
||||
"An email should arrive in a few moments with instructions on how to do so."
|
||||
msgstr ""
|
||||
"In breve dovresti ricevere un email contenente istruzioni su come fare."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:51
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
|
||||
msgid "In case it doesn't:"
|
||||
msgstr "Nel caso non fosse:"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:54
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:65
|
||||
msgid "Resend verification email"
|
||||
msgstr "Rispedisci email di verifica"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:73
|
||||
msgid ""
|
||||
"Someone has registered an account with this username, but it still has to be"
|
||||
" activated."
|
||||
@@ -439,7 +565,7 @@ msgstr ""
|
||||
"Qualcuno ha registrato un account con questo nome utente, ma deve ancora "
|
||||
"essere attivato."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:68
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:79
|
||||
#, python-format
|
||||
msgid ""
|
||||
"If you are that person but you've lost your verification email, you can <a "
|
||||
@@ -448,30 +574,29 @@ msgstr ""
|
||||
"Se sei quella persona ma hai perso l'email di verifica, puoi <a "
|
||||
"href=\"%(login_url)s\">accedere</a> e rispedirlo."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:78
|
||||
#, python-format
|
||||
msgid "%(username)s's profile"
|
||||
msgstr "profilo di %(username)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:85
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
|
||||
msgid "Here's a spot to tell others about yourself."
|
||||
msgstr "Ecco un posto dove raccontare agli altri di te."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:90
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:108
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:101
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
|
||||
msgid "Edit profile"
|
||||
msgstr "Modifica profilo"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
|
||||
msgid "This user hasn't filled in their profile (yet)."
|
||||
msgstr "Questo utente non ha (ancora) compilato il proprio profilo."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:122
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:125
|
||||
msgid "Change account settings"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:138
|
||||
#, python-format
|
||||
msgid "View all of %(username)s's media"
|
||||
msgstr "Visualizza tutti i file multimediali di %(username)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:135
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:151
|
||||
msgid ""
|
||||
"This is where your media will appear, but you don't seem to have added "
|
||||
"anything yet."
|
||||
@@ -479,11 +604,8 @@ msgstr ""
|
||||
"Questo è dove i tuoi documenti multimediali appariranno, ma sembra che tu "
|
||||
"non abbia ancora aggiunto niente."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:141
|
||||
msgid "Add media"
|
||||
msgstr "Aggiungi documenti multimediali"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:147
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:163
|
||||
#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:72
|
||||
msgid "There doesn't seem to be any media here yet..."
|
||||
msgstr "Non sembra ci sia ancora nessun documento multimediali qui.."
|
||||
|
||||
@@ -495,31 +617,58 @@ msgstr "feed icon"
|
||||
msgid "Atom feed"
|
||||
msgstr "Atom feed"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:40
|
||||
msgid "Newer"
|
||||
msgstr "Più nuovo"
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
|
||||
msgid "← Newer"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:46
|
||||
msgid "Older"
|
||||
msgstr "Più vecchio"
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
|
||||
msgid "Older →"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/forms.py:24
|
||||
msgid "Comment"
|
||||
msgstr "Commento"
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
|
||||
msgid "Go to page:"
|
||||
msgstr "Vai alla pagina:"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:27
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:32
|
||||
msgid "newer"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:38
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:43
|
||||
msgid "older"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/tags.html:20
|
||||
msgid "View more media tagged with"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/tags.html:25
|
||||
msgid "or"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/forms.py:30
|
||||
msgid "I am sure I want to delete this"
|
||||
msgstr "Sono sicuro di volerlo cancellare"
|
||||
|
||||
#: mediagoblin/user_pages/views.py:142
|
||||
msgid "Empty comments are not allowed."
|
||||
msgstr ""
|
||||
#: mediagoblin/user_pages/views.py:155
|
||||
msgid "Oops, your comment was empty."
|
||||
msgstr "Oops, il tuo commento era vuoto."
|
||||
|
||||
#: mediagoblin/user_pages/views.py:148
|
||||
msgid "Comment posted!"
|
||||
msgstr ""
|
||||
#: mediagoblin/user_pages/views.py:161
|
||||
msgid "Your comment has been posted!"
|
||||
msgstr "Il tuo commento è stato aggiunto!"
|
||||
|
||||
#: mediagoblin/user_pages/views.py:181
|
||||
#: mediagoblin/user_pages/views.py:183
|
||||
msgid "You deleted the media."
|
||||
msgstr "Hai cancellato il file"
|
||||
|
||||
#: mediagoblin/user_pages/views.py:190
|
||||
msgid "The media was not deleted because you didn't check that you were sure."
|
||||
msgstr ""
|
||||
"Il file non è stato eliminato perchè non hai confermato di essere sicuro."
|
||||
|
||||
#: mediagoblin/user_pages/views.py:198
|
||||
msgid "You are about to delete another user's media. Proceed with caution."
|
||||
msgstr ""
|
||||
"Stai cancellando un documento multimediale di un altro utente. Procedi con "
|
||||
|
||||
Binary file not shown.
@@ -1,5 +1,5 @@
|
||||
# Translations template for PROJECT.
|
||||
# Copyright (C) 2011 ORGANIZATION
|
||||
# Copyright (C) 2012 ORGANIZATION
|
||||
# This file is distributed under the same license as the PROJECT project.
|
||||
#
|
||||
# Translators:
|
||||
@@ -8,8 +8,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: GNU MediaGoblin\n"
|
||||
"Report-Msgid-Bugs-To: http://bugs.foocorp.net/projects/mediagoblin/issues\n"
|
||||
"POT-Creation-Date: 2011-11-01 23:14-0500\n"
|
||||
"PO-Revision-Date: 2011-11-02 04:13+0000\n"
|
||||
"POT-Creation-Date: 2012-01-07 13:47-0600\n"
|
||||
"PO-Revision-Date: 2012-01-07 19:44+0000\n"
|
||||
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -19,27 +19,19 @@ msgstr ""
|
||||
"Language: ja\n"
|
||||
"Plural-Forms: nplurals=1; plural=0\n"
|
||||
|
||||
#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:49
|
||||
#: mediagoblin/processing.py:143
|
||||
msgid "Invalid file given for media type."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:41
|
||||
msgid "Username"
|
||||
msgstr "ユーザネーム"
|
||||
|
||||
#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:53
|
||||
#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:45
|
||||
msgid "Password"
|
||||
msgstr "パスワード"
|
||||
|
||||
#: mediagoblin/auth/forms.py:35
|
||||
msgid "Passwords must match."
|
||||
msgstr "パスワードが一致している必要があります。"
|
||||
|
||||
#: mediagoblin/auth/forms.py:37
|
||||
msgid "Confirm password"
|
||||
msgstr "パスワードを確認"
|
||||
|
||||
#: mediagoblin/auth/forms.py:39
|
||||
msgid "Type it again here to make sure there are no spelling mistakes."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/forms.py:42
|
||||
#: mediagoblin/auth/forms.py:34
|
||||
msgid "Email address"
|
||||
msgstr "メールアドレス"
|
||||
|
||||
@@ -52,95 +44,163 @@ msgid "Sorry, a user with that name already exists."
|
||||
msgstr "申し訳ありませんが、その名前を持つユーザーがすでに存在しています。"
|
||||
|
||||
#: mediagoblin/auth/views.py:77
|
||||
msgid "Sorry, that email address has already been taken."
|
||||
msgid "Sorry, a user with that email address already exists."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:179
|
||||
#: mediagoblin/auth/views.py:180
|
||||
msgid ""
|
||||
"Your email address has been verified. You may now login, edit your profile, "
|
||||
"and submit images!"
|
||||
msgstr "メアドが確認されています。これで、ログインしてプロファイルを編集し、画像を提出することができます!"
|
||||
|
||||
#: mediagoblin/auth/views.py:185
|
||||
#: mediagoblin/auth/views.py:186
|
||||
msgid "The verification key or user id is incorrect"
|
||||
msgstr "検証キーまたはユーザーIDが間違っています"
|
||||
|
||||
#: mediagoblin/auth/views.py:207
|
||||
#: mediagoblin/auth/views.py:204
|
||||
msgid "You must be logged in so we know who to send the email to!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:212
|
||||
msgid "You've already verified your email address!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:225
|
||||
msgid "Resent your verification email."
|
||||
msgstr "検証メールを再送しました。"
|
||||
|
||||
#: mediagoblin/auth/views.py:248
|
||||
#: mediagoblin/auth/views.py:260
|
||||
msgid ""
|
||||
"An email has been sent with instructions on how to change your password."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:270
|
||||
msgid ""
|
||||
"Could not send password recovery email as your username is inactive or your "
|
||||
"account's email address has not been verified."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:282
|
||||
msgid "Couldn't find someone with that username or email."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:330
|
||||
msgid "You can now log in using your new password."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:24 mediagoblin/submit/forms.py:27
|
||||
msgid "Title"
|
||||
msgstr "タイトル"
|
||||
|
||||
#: mediagoblin/edit/forms.py:28 mediagoblin/submit/forms.py:32
|
||||
#: mediagoblin/edit/forms.py:27 mediagoblin/submit/forms.py:30
|
||||
msgid "Description of this work"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:28 mediagoblin/submit/forms.py:31
|
||||
msgid ""
|
||||
"You can use\n"
|
||||
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
|
||||
" Markdown</a> for formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:32 mediagoblin/submit/forms.py:35
|
||||
msgid "Tags"
|
||||
msgstr "タグ"
|
||||
|
||||
#: mediagoblin/edit/forms.py:31
|
||||
#: mediagoblin/edit/forms.py:34 mediagoblin/submit/forms.py:37
|
||||
msgid "Separate tags by commas."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:37
|
||||
msgid "Slug"
|
||||
msgstr "スラグ"
|
||||
|
||||
#: mediagoblin/edit/forms.py:32
|
||||
#: mediagoblin/edit/forms.py:38
|
||||
msgid "The slug can't be empty"
|
||||
msgstr "スラグは必要です。"
|
||||
|
||||
#: mediagoblin/edit/forms.py:33
|
||||
#: mediagoblin/edit/forms.py:39
|
||||
msgid ""
|
||||
"The title part of this media's URL. You usually don't need to change this."
|
||||
"The title part of this media's address. You usually don't need to change "
|
||||
"this."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:40
|
||||
#: mediagoblin/edit/forms.py:46
|
||||
msgid "Bio"
|
||||
msgstr "自己紹介"
|
||||
|
||||
#: mediagoblin/edit/forms.py:43
|
||||
#: mediagoblin/edit/forms.py:48
|
||||
msgid ""
|
||||
"You can use\n"
|
||||
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
|
||||
" Markdown</a> for formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:53
|
||||
msgid "Website"
|
||||
msgstr "URL"
|
||||
|
||||
#: mediagoblin/edit/views.py:64
|
||||
#: mediagoblin/edit/forms.py:60
|
||||
msgid "Old password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:62
|
||||
msgid "Enter your old password to prove you own this account."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:65
|
||||
msgid "New password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:65
|
||||
msgid "An entry with that slug already exists for this user."
|
||||
msgstr "そのスラグを持つエントリは、このユーザーは既に存在します。"
|
||||
|
||||
#: mediagoblin/edit/views.py:85
|
||||
#: mediagoblin/edit/views.py:86
|
||||
msgid "You are editing another user's media. Proceed with caution."
|
||||
msgstr "あなたは、他のユーザーのメディアを編集しています。ご注意ください。"
|
||||
|
||||
#: mediagoblin/edit/views.py:155
|
||||
#: mediagoblin/edit/views.py:156
|
||||
msgid "You are editing a user's profile. Proceed with caution."
|
||||
msgstr "あなたは、他のユーザーのプロファイルを編集しています。ご注意ください。"
|
||||
|
||||
#: mediagoblin/process_media/errors.py:44
|
||||
msgid "Invalid file given for media type."
|
||||
#: mediagoblin/edit/views.py:174
|
||||
msgid "Profile changes saved"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:200
|
||||
msgid "Wrong password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:216
|
||||
msgid "Account settings saved"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/media_types/__init__.py:77
|
||||
msgid "Could not extract any file extension from \"{filename}\""
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/media_types/__init__.py:88
|
||||
msgid "Sorry, I don't support that file type :("
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/submit/forms.py:25
|
||||
msgid "File"
|
||||
msgstr "ファイル"
|
||||
|
||||
#: mediagoblin/submit/forms.py:30
|
||||
msgid "Description of this work"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/submit/views.py:46
|
||||
#: mediagoblin/submit/views.py:50
|
||||
msgid "You must provide a file."
|
||||
msgstr "ファイルを提供する必要があります。"
|
||||
|
||||
#: mediagoblin/submit/views.py:49
|
||||
msgid "The file doesn't seem to be an image!"
|
||||
msgstr "ファイルが画像ではないようです!"
|
||||
|
||||
#: mediagoblin/submit/views.py:121
|
||||
#: mediagoblin/submit/views.py:128
|
||||
msgid "Woohoo! Submitted!"
|
||||
msgstr "投稿終了!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:21
|
||||
#: mediagoblin/templates/mediagoblin/404.html:22
|
||||
msgid "Image of 404 goblin stressing out"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:23
|
||||
msgid "Oops!"
|
||||
msgstr ""
|
||||
|
||||
@@ -154,33 +214,30 @@ msgid ""
|
||||
" been moved or deleted."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:32
|
||||
msgid "Image of 404 goblin stressing out"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:22
|
||||
msgid "GNU MediaGoblin"
|
||||
msgstr "GNU MediaGoblin"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:47
|
||||
#: mediagoblin/templates/mediagoblin/base.html:48
|
||||
msgid "MediaGoblin logo"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:52
|
||||
msgid "Submit media"
|
||||
msgstr "コンテンツを投稿"
|
||||
#: mediagoblin/templates/mediagoblin/base.html:53
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:157
|
||||
msgid "Add media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:63
|
||||
msgid "verify your email!"
|
||||
msgstr "メアドを確認してください!"
|
||||
#: mediagoblin/templates/mediagoblin/base.html:64
|
||||
msgid "Verify your email!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:73
|
||||
#: mediagoblin/templates/mediagoblin/base.html:71
|
||||
msgid "log out"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:74
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:27
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:35
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:45
|
||||
msgid "Log in"
|
||||
msgstr "ログイン"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:89
|
||||
#: mediagoblin/templates/mediagoblin/base.html:86
|
||||
msgid ""
|
||||
"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
|
||||
"href=\"http://gnu.org/\">GNU</a> project"
|
||||
@@ -190,76 +247,52 @@ msgstr ""
|
||||
msgid "Explore"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:27
|
||||
msgid "Hi there, media lover! MediaGoblin is..."
|
||||
#: mediagoblin/templates/mediagoblin/root.html:26
|
||||
msgid "Hi there, welcome to this MediaGoblin site!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:28
|
||||
msgid ""
|
||||
"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
|
||||
"extraordinarily great piece of media hosting software."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:29
|
||||
msgid "The perfect place for your media!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:30
|
||||
msgid ""
|
||||
"A place for people to collaborate and show off original and derived "
|
||||
"creations!"
|
||||
"To add your own media, place comments, save your favourites and more, you "
|
||||
"can log in with your MediaGoblin account."
|
||||
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.)"
|
||||
msgid "Don't have one yet? It's easy!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:32
|
||||
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 ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:34
|
||||
msgid ""
|
||||
"Powered by people like you. (<a "
|
||||
"href=\"http://mediagoblin.org/pages/join.html\">You can help us improve this"
|
||||
" software!</a>)"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:38
|
||||
msgid "Excited to join us?"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:39
|
||||
#, python-format
|
||||
msgid ""
|
||||
"<a class=\"header_submit_highlight\" href=\"%(register_url)s\">Create a free account</a>\n"
|
||||
" or\n"
|
||||
" <a class=\"header_submit\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
|
||||
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Create an account at this site</a>\n"
|
||||
" or\n"
|
||||
" <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:53
|
||||
#: mediagoblin/templates/mediagoblin/root.html:40
|
||||
msgid "Most recent media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:29
|
||||
msgid "Enter your new password"
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:32
|
||||
msgid "Set your new password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:29
|
||||
msgid "Enter your username or email"
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:35
|
||||
msgid "Set password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_changed_success.html:22
|
||||
msgid "Your password has been changed. Try to log in now."
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:27
|
||||
msgid "Recover password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_email_sent.html:22
|
||||
msgid ""
|
||||
"Check your inbox. We sent an email with a URL for changing your password."
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:30
|
||||
msgid "Send instructions"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_verification_email.txt:19
|
||||
@@ -280,27 +313,23 @@ msgstr ""
|
||||
msgid "Logging in failed!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:43
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:35
|
||||
msgid "Don't have an account yet?"
|
||||
msgstr "まだアカウントを持っていませんか?"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:46
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:36
|
||||
msgid "Create one here!"
|
||||
msgstr "ここで作成!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:49
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:42
|
||||
msgid "Forgot your password?"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:52
|
||||
msgid "Change it!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:27
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:32
|
||||
msgid "Create an account!"
|
||||
msgstr "アカウントを作成!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:31
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:36
|
||||
msgid "Create"
|
||||
msgstr ""
|
||||
|
||||
@@ -331,36 +360,114 @@ msgid "Cancel"
|
||||
msgstr "キャンセル"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit.html:37
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
|
||||
msgid "Save changes"
|
||||
msgstr "投稿する"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:34
|
||||
#, python-format
|
||||
msgid "Changing %(username)s's account settings"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:29
|
||||
#, python-format
|
||||
msgid "Editing %(username)s's profile"
|
||||
msgstr "%(username)sさんのプロフィールを編集中"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:31
|
||||
msgid "Media tagged with:"
|
||||
msgstr "タグ付けされたコンテンツ:"
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:30
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:35
|
||||
#, python-format
|
||||
msgid "Media tagged with: %(tag_name)s"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:46
|
||||
msgid "Original"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:33
|
||||
msgid ""
|
||||
"Sorry, this video will not work because \n"
|
||||
"\t your web browser does not support HTML5 \n"
|
||||
"\t video."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:36
|
||||
msgid ""
|
||||
"You can get a modern web browser that \n"
|
||||
"\t can play this video at <a href=\"http://getfirefox.com\">\n"
|
||||
"\t http://getfirefox.com</a>!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/submit/start.html:26
|
||||
msgid "Submit yer media"
|
||||
msgstr "コンテンツを投稿"
|
||||
msgid "Add your media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/submit/start.html:30
|
||||
msgid "Submit"
|
||||
msgstr "送信"
|
||||
msgid "Add"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:32
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
|
||||
#, python-format
|
||||
msgid "%(username)s's media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:37
|
||||
#, python-format
|
||||
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
|
||||
msgstr "<a href=\"%(user_url)s\">%(username)s</a>さんのコンテンツ"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:52
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:32
|
||||
msgid "Sorry, no such user found."
|
||||
msgstr "申し訳ありませんが、そのユーザーは見つかりませんでした。"
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:60
|
||||
#, python-format
|
||||
msgid "Added on %(date)s."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
|
||||
msgid "Edit"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
|
||||
#, python-format
|
||||
msgid "%(comment_count)s comment"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:81
|
||||
#, python-format
|
||||
msgid "%(comment_count)s comments"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
|
||||
msgid "No comments yet."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:91
|
||||
msgid "Add one"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:100
|
||||
msgid ""
|
||||
"Type your comment here. You can use <a "
|
||||
"href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> for"
|
||||
" formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:104
|
||||
msgid "Add this comment"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:126
|
||||
msgid "at"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:141
|
||||
#, python-format
|
||||
msgid "<p>❖ Browsing media by <a href=\"%(user_url)s\">%(username)s</a></p>"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
|
||||
#, python-format
|
||||
@@ -392,75 +499,81 @@ msgstr ""
|
||||
msgid "These uploads failed to process:"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:39
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:59
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:31
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:89
|
||||
#, python-format
|
||||
msgid "%(username)s's profile"
|
||||
msgstr "%(username)sさんのプロフィール"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:43
|
||||
msgid "Sorry, no such user found."
|
||||
msgstr "申し訳ありませんが、そのユーザーは見つかりませんでした。"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:50
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:70
|
||||
msgid "Email verification needed"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:42
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
|
||||
msgid "Almost done! Your account still needs to be activated."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:47
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:58
|
||||
msgid ""
|
||||
"An email should arrive in a few moments with instructions on how to do so."
|
||||
msgstr "メールは、その方法の指示でいくつかの瞬間に到着します。"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:51
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
|
||||
msgid "In case it doesn't:"
|
||||
msgstr "到着しない場合は、"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:54
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:65
|
||||
msgid "Resend verification email"
|
||||
msgstr "確認メールを再送信"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:73
|
||||
msgid ""
|
||||
"Someone has registered an account with this username, but it still has to be"
|
||||
" activated."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:68
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:79
|
||||
#, python-format
|
||||
msgid ""
|
||||
"If you are that person but you've lost your verification email, you can <a "
|
||||
"href=\"%(login_url)s\">log in</a> and resend it."
|
||||
msgstr "あなたの確認メールを紛失した場合、<a href=\"%(login_url)s\">ログイン</a>して再送できます。"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:78
|
||||
#, python-format
|
||||
msgid "%(username)s's profile"
|
||||
msgstr "%(username)sさんのプロフィール"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:85
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
|
||||
msgid "Here's a spot to tell others about yourself."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:90
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:108
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:101
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
|
||||
msgid "Edit profile"
|
||||
msgstr "プロフィールを編集"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
|
||||
msgid "This user hasn't filled in their profile (yet)."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:122
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:125
|
||||
msgid "Change account settings"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:138
|
||||
#, python-format
|
||||
msgid "View all of %(username)s's media"
|
||||
msgstr "%(username)sさんのコンテンツをすべて見る"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:135
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:151
|
||||
msgid ""
|
||||
"This is where your media will appear, but you don't seem to have added "
|
||||
"anything yet."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:141
|
||||
msgid "Add media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:147
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:163
|
||||
#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:72
|
||||
msgid "There doesn't seem to be any media here yet..."
|
||||
msgstr ""
|
||||
|
||||
@@ -472,31 +585,57 @@ msgstr ""
|
||||
msgid "Atom feed"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:40
|
||||
msgid "Newer"
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
|
||||
msgid "← Newer"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:46
|
||||
msgid "Older"
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
|
||||
msgid "Older →"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/forms.py:24
|
||||
msgid "Comment"
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
|
||||
msgid "Go to page:"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:27
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:32
|
||||
msgid "newer"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:38
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:43
|
||||
msgid "older"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/tags.html:20
|
||||
msgid "View more media tagged with"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/tags.html:25
|
||||
msgid "or"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/forms.py:30
|
||||
msgid "I am sure I want to delete this"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/views.py:142
|
||||
msgid "Empty comments are not allowed."
|
||||
#: mediagoblin/user_pages/views.py:155
|
||||
msgid "Oops, your comment was empty."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/views.py:148
|
||||
msgid "Comment posted!"
|
||||
#: mediagoblin/user_pages/views.py:161
|
||||
msgid "Your comment has been posted!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/views.py:181
|
||||
#: mediagoblin/user_pages/views.py:183
|
||||
msgid "You deleted the media."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/views.py:190
|
||||
msgid "The media was not deleted because you didn't check that you were sure."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/views.py:198
|
||||
msgid "You are about to delete another user's media. Proceed with caution."
|
||||
msgstr ""
|
||||
|
||||
|
||||
Binary file not shown.
@@ -3,14 +3,14 @@
|
||||
# This file is distributed under the same license as the PROJECT project.
|
||||
#
|
||||
# Translators:
|
||||
# <mail@jefvanschendel.nl>, 2011.
|
||||
# <mail@jefvanschendel.nl>, 2011, 2012.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: GNU MediaGoblin\n"
|
||||
"Report-Msgid-Bugs-To: http://bugs.foocorp.net/projects/mediagoblin/issues\n"
|
||||
"POT-Creation-Date: 2011-11-01 23:14-0500\n"
|
||||
"PO-Revision-Date: 2011-11-02 04:13+0000\n"
|
||||
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
|
||||
"POT-Creation-Date: 2011-12-04 10:24-0600\n"
|
||||
"PO-Revision-Date: 2012-01-04 18:42+0000\n"
|
||||
"Last-Translator: schendje <mail@jefvanschendel.nl>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -19,6 +19,10 @@ msgstr ""
|
||||
"Language: nl\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
|
||||
#: mediagoblin/processing.py:143
|
||||
msgid "Invalid file given for media type."
|
||||
msgstr "Verkeerd bestandsformaat voor mediatype opgegeven."
|
||||
|
||||
#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:49
|
||||
msgid "Username"
|
||||
msgstr "Gebruikersnaam"
|
||||
@@ -37,7 +41,7 @@ msgstr "Bevestig wachtwoord"
|
||||
|
||||
#: mediagoblin/auth/forms.py:39
|
||||
msgid "Type it again here to make sure there are no spelling mistakes."
|
||||
msgstr ""
|
||||
msgstr "Typ het hier nog een keer om spelfouten te voorkomen."
|
||||
|
||||
#: mediagoblin/auth/forms.py:42
|
||||
msgid "Email address"
|
||||
@@ -52,8 +56,8 @@ msgid "Sorry, a user with that name already exists."
|
||||
msgstr "Sorry, er bestaat al een gebruiker met die naam."
|
||||
|
||||
#: mediagoblin/auth/views.py:77
|
||||
msgid "Sorry, that email address has already been taken."
|
||||
msgstr "Sorry, dat e-mailadres is al ingenomen."
|
||||
msgid "Sorry, a user with that email address already exists."
|
||||
msgstr "Sorry, een gebruiker met dat e-mailadres bestaat al."
|
||||
|
||||
#: mediagoblin/auth/views.py:179
|
||||
msgid ""
|
||||
@@ -67,15 +71,27 @@ msgstr ""
|
||||
msgid "The verification key or user id is incorrect"
|
||||
msgstr "De verificatie sleutel of gebruikers-ID is onjuist"
|
||||
|
||||
#: mediagoblin/auth/views.py:207
|
||||
#: mediagoblin/auth/views.py:203
|
||||
msgid "You must be logged in so we know who to send the email to!"
|
||||
msgstr ""
|
||||
"Je moet ingelogd zijn, anders weten we niet waar we de e-mail naartoe moeten"
|
||||
" sturen!"
|
||||
|
||||
#: mediagoblin/auth/views.py:211
|
||||
msgid "You've already verified your email address!"
|
||||
msgstr "Je hebt je e-mailadres al geverifieerd!"
|
||||
|
||||
#: mediagoblin/auth/views.py:224
|
||||
msgid "Resent your verification email."
|
||||
msgstr "Verificatie e-mail opnieuw opgestuurd."
|
||||
|
||||
#: mediagoblin/auth/views.py:248
|
||||
#: mediagoblin/auth/views.py:265
|
||||
msgid ""
|
||||
"Could not send password recovery email as your username is inactive or your "
|
||||
"account's email address has not been verified."
|
||||
msgstr ""
|
||||
"Email kon niet verstuurd worden omdat je gebruikersnaam inactief is of omdat"
|
||||
" je e-mailadres nog niet geverifieerd is."
|
||||
|
||||
#: mediagoblin/edit/forms.py:24 mediagoblin/submit/forms.py:27
|
||||
msgid "Title"
|
||||
@@ -85,45 +101,67 @@ msgstr "Titel"
|
||||
msgid "Tags"
|
||||
msgstr "Etiket"
|
||||
|
||||
#: mediagoblin/edit/forms.py:31
|
||||
msgid "Slug"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:32
|
||||
msgid "The slug can't be empty"
|
||||
msgstr ""
|
||||
#: mediagoblin/edit/forms.py:30 mediagoblin/submit/forms.py:34
|
||||
msgid "Seperate tags by commas."
|
||||
msgstr "Scheidt labels met komma's."
|
||||
|
||||
#: mediagoblin/edit/forms.py:33
|
||||
msgid "Slug"
|
||||
msgstr "Slug"
|
||||
|
||||
#: mediagoblin/edit/forms.py:34
|
||||
msgid "The slug can't be empty"
|
||||
msgstr "De slug kan niet leeg zijn"
|
||||
|
||||
#: mediagoblin/edit/forms.py:35
|
||||
msgid ""
|
||||
"The title part of this media's URL. You usually don't need to change this."
|
||||
msgstr ""
|
||||
"Het titeldeel van het adres van deze media. Meestal hoef je dit niet aan te "
|
||||
"passen."
|
||||
|
||||
#: mediagoblin/edit/forms.py:40
|
||||
#: mediagoblin/edit/forms.py:42
|
||||
msgid "Bio"
|
||||
msgstr "Bio"
|
||||
|
||||
#: mediagoblin/edit/forms.py:43
|
||||
#: mediagoblin/edit/forms.py:45
|
||||
msgid "Website"
|
||||
msgstr "Website"
|
||||
|
||||
#: mediagoblin/edit/views.py:64
|
||||
msgid "An entry with that slug already exists for this user."
|
||||
msgstr ""
|
||||
#: mediagoblin/edit/forms.py:49
|
||||
msgid "Old password"
|
||||
msgstr "Oud wachtwoord"
|
||||
|
||||
#: mediagoblin/edit/views.py:85
|
||||
#: mediagoblin/edit/forms.py:52
|
||||
msgid "New Password"
|
||||
msgstr "Nieuw wachtwoord"
|
||||
|
||||
#: mediagoblin/edit/views.py:65
|
||||
msgid "An entry with that slug already exists for this user."
|
||||
msgstr "Er bestaat al een met die slug voor deze gebruiker."
|
||||
|
||||
#: mediagoblin/edit/views.py:86
|
||||
msgid "You are editing another user's media. Proceed with caution."
|
||||
msgstr ""
|
||||
"U bent de media van een andere gebruiker aan het aanpassen. Ga voorzichtig "
|
||||
"te werk."
|
||||
|
||||
#: mediagoblin/edit/views.py:155
|
||||
#: mediagoblin/edit/views.py:156
|
||||
msgid "You are editing a user's profile. Proceed with caution."
|
||||
msgstr ""
|
||||
"U bent een gebruikersprofiel aan het aanpassen. Ga voorzichtig te werk."
|
||||
|
||||
#: mediagoblin/process_media/errors.py:44
|
||||
msgid "Invalid file given for media type."
|
||||
msgstr ""
|
||||
#: mediagoblin/edit/views.py:171
|
||||
msgid "Wrong password"
|
||||
msgstr "Verkeerd wachtwoord"
|
||||
|
||||
#: mediagoblin/edit/views.py:192
|
||||
msgid "Profile edited!"
|
||||
msgstr "Profiel aangepast!"
|
||||
|
||||
#: mediagoblin/media_types/__init__.py:65
|
||||
msgid "Could not find any file extension in \"{filename}\""
|
||||
msgstr "Kon geen bestandsformaat voor \"{filename}\" vinden"
|
||||
|
||||
#: mediagoblin/submit/forms.py:25
|
||||
msgid "File"
|
||||
@@ -131,141 +169,141 @@ msgstr "Bestand"
|
||||
|
||||
#: mediagoblin/submit/forms.py:30
|
||||
msgid "Description of this work"
|
||||
msgstr ""
|
||||
msgstr "Beschrijving van dit werk"
|
||||
|
||||
#: mediagoblin/submit/views.py:46
|
||||
#: mediagoblin/submit/views.py:49
|
||||
msgid "You must provide a file."
|
||||
msgstr "U moet een bestand aangeven."
|
||||
|
||||
#: mediagoblin/submit/views.py:49
|
||||
msgid "The file doesn't seem to be an image!"
|
||||
msgstr "Het lijkt erop dat dit bestand geen afbeelding is!"
|
||||
|
||||
#: mediagoblin/submit/views.py:121
|
||||
#: mediagoblin/submit/views.py:127
|
||||
msgid "Woohoo! Submitted!"
|
||||
msgstr "Mooizo! Toegevoegd!"
|
||||
|
||||
#: mediagoblin/submit/views.py:133
|
||||
msgid "Invalid file type."
|
||||
msgstr "Ongeldig bestandstype"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:21
|
||||
msgid "Oops!"
|
||||
msgstr ""
|
||||
msgstr "Oeps!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:24
|
||||
msgid "There doesn't seem to be a page at this address. Sorry!"
|
||||
msgstr ""
|
||||
msgstr "Het lijkt erop dat er geen pagina bestaat op dit adres. Sorry!"
|
||||
|
||||
#: 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 ""
|
||||
"Als je zeker weet dat het adres klopt is de pagina misschien verplaatst of "
|
||||
"verwijderd."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:32
|
||||
msgid "Image of 404 goblin stressing out"
|
||||
msgstr ""
|
||||
msgstr "Afbeelding van de 404 goblin onder stress"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:22
|
||||
msgid "GNU MediaGoblin"
|
||||
msgstr "GNU MediaGoblin"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:47
|
||||
#: mediagoblin/templates/mediagoblin/base.html:49
|
||||
msgid "MediaGoblin logo"
|
||||
msgstr ""
|
||||
msgstr "MediaGoblin logo"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:52
|
||||
#: mediagoblin/templates/mediagoblin/base.html:54
|
||||
msgid "Submit media"
|
||||
msgstr "Voeg media toe"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:63
|
||||
msgid "verify your email!"
|
||||
msgstr "Controleer uw e-mail!"
|
||||
#: mediagoblin/templates/mediagoblin/base.html:65
|
||||
msgid "Verify your email!"
|
||||
msgstr "Verifieer je e-mailadres!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:73
|
||||
#: mediagoblin/templates/mediagoblin/base.html:72
|
||||
msgid "log out"
|
||||
msgstr "uitloggen"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:75
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:27
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:35
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:45
|
||||
msgid "Log in"
|
||||
msgstr "Inloggen"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:89
|
||||
#: mediagoblin/templates/mediagoblin/base.html:91
|
||||
msgid ""
|
||||
"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <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:24
|
||||
msgid "Explore"
|
||||
msgstr ""
|
||||
msgstr "Verkennen"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:27
|
||||
msgid "Hi there, media lover! MediaGoblin is..."
|
||||
msgid "Hi there, welcome to this MediaGoblin site!"
|
||||
msgstr "Hoi, welkom op deze MediaGoblin website!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:28
|
||||
msgid ""
|
||||
"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
|
||||
"extraordinarily great piece of media hosting software."
|
||||
msgstr ""
|
||||
"Deze website draait <a href=\"http://mediagoblin.org\">MediaGoblin</a>, een "
|
||||
"buitengewoon goed stuk software voor mediahosting."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:29
|
||||
msgid "The perfect place for your media!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:30
|
||||
msgid ""
|
||||
"A place for people to collaborate and show off original and derived "
|
||||
"creations!"
|
||||
"To add your own media, place comments, save your favourites and more, you "
|
||||
"can log in with your MediaGoblin account."
|
||||
msgstr ""
|
||||
"Om je eigen media toe te voegen, berichten te plaatsen, favorieten op te "
|
||||
"slaan en meer, kun je inloggen met je MediaGoblin account."
|
||||
|
||||
#: 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 ""
|
||||
msgid "Don't have one yet? It's easy!"
|
||||
msgstr "Heb je er nog geen? Het is heel eenvoudig!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:32
|
||||
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 ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:34
|
||||
msgid ""
|
||||
"Powered by people like you. (<a "
|
||||
"href=\"http://mediagoblin.org/pages/join.html\">You can help us improve this"
|
||||
" software!</a>)"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:38
|
||||
msgid "Excited to join us?"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:39
|
||||
#, python-format
|
||||
msgid ""
|
||||
"<a class=\"header_submit_highlight\" href=\"%(register_url)s\">Create a free account</a>\n"
|
||||
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Create an account at this site</a>\n"
|
||||
" or\n"
|
||||
" <a class=\"header_submit\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
|
||||
" <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
|
||||
msgstr ""
|
||||
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Creëer een account op deze website</a>\n"
|
||||
" of\n"
|
||||
" <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Gebruik MediaGoblin op je eigen server</a>"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:53
|
||||
#: mediagoblin/templates/mediagoblin/root.html:44
|
||||
msgid "Most recent media"
|
||||
msgstr ""
|
||||
msgstr "Nieuwste media"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:29
|
||||
msgid "Enter your new password"
|
||||
msgstr ""
|
||||
msgstr "Voer je nieuwe wachtwoord in"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:29
|
||||
msgid "Enter your username or email"
|
||||
msgstr ""
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:33
|
||||
#: mediagoblin/templates/mediagoblin/submit/start.html:30
|
||||
msgid "Submit"
|
||||
msgstr "Voeg toe"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:27
|
||||
msgid "Recover password"
|
||||
msgstr "Wachtwoord herstellen"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:30
|
||||
msgid "Send instructions"
|
||||
msgstr "Stuur instructies"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_changed_success.html:22
|
||||
msgid "Your password has been changed. Try to log in now."
|
||||
msgstr ""
|
||||
msgstr "Je wachtwoord is veranderd. Probeer om opnieuw in te loggen."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_email_sent.html:22
|
||||
msgid ""
|
||||
"Check your inbox. We sent an email with a URL for changing your password."
|
||||
msgstr ""
|
||||
"Check je inbox. Er is een e-mail verstuurd waarmee je je wachtwoord kunt "
|
||||
"veranderen."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_verification_email.txt:19
|
||||
#, python-format
|
||||
@@ -280,26 +318,29 @@ msgid ""
|
||||
"If you think this is an error, just ignore this email and continue being\n"
|
||||
"a happy goblin!"
|
||||
msgstr ""
|
||||
"Hoi %(username)s,\n"
|
||||
"\n"
|
||||
"Om je wachtwoord voor GNU MediaGoblin te veranderen, moet je dit adres in je webbrowser openen:\n"
|
||||
"\n"
|
||||
"%(verification_url)s\n"
|
||||
"\n"
|
||||
"Als je denkt dat dit niet klopt, kun je deze e-mail gewoon negeren."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:30
|
||||
msgid "Logging in failed!"
|
||||
msgstr ""
|
||||
msgstr "Inloggen is mislukt!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:43
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:35
|
||||
msgid "Don't have an account yet?"
|
||||
msgstr "Heeft u nog geen account?"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:46
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:36
|
||||
msgid "Create one here!"
|
||||
msgstr "Maak er hier een!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:49
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:42
|
||||
msgid "Forgot your password?"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:52
|
||||
msgid "Change it!"
|
||||
msgstr ""
|
||||
msgstr "Wachtwoord vergeten?"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:27
|
||||
msgid "Create an account!"
|
||||
@@ -307,7 +348,7 @@ msgstr "Maak een account aan!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:31
|
||||
msgid "Create"
|
||||
msgstr ""
|
||||
msgstr "Creëer"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
|
||||
#, python-format
|
||||
@@ -342,89 +383,128 @@ msgstr "Wijzigingen opslaan"
|
||||
msgid "Editing %(username)s's profile"
|
||||
msgstr "Het profiel aanpassen van %(username)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:31
|
||||
msgid "Media tagged with:"
|
||||
msgstr "Media met het etiket:"
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:30
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:35
|
||||
#, python-format
|
||||
msgid "Media tagged with: %(tag_name)s"
|
||||
msgstr "Media met het label: %(tag_name)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:19
|
||||
msgid "Original"
|
||||
msgstr "Origineel"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/submit/start.html:26
|
||||
msgid "Submit yer media"
|
||||
msgstr "Voeg media toe"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/submit/start.html:30
|
||||
msgid "Submit"
|
||||
msgstr "Voeg toe"
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
|
||||
#, python-format
|
||||
msgid "%(username)s's media"
|
||||
msgstr "Media van %(username)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:32
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:37
|
||||
#, python-format
|
||||
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
|
||||
msgstr "Media van <a href=\"%(user_url)s\"> %(username)s </a>"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:52
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:32
|
||||
msgid "Sorry, no such user found."
|
||||
msgstr "Sorry, die gebruiker kon niet worden gevonden."
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:57
|
||||
#, python-format
|
||||
msgid "By <a href=\"%(user_url)s\">%(username)s</a> on %(date)s"
|
||||
msgstr "Door <a href=\"%(user_url)s\">%(username)s</a> op %(date)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:67
|
||||
msgid "Post a comment"
|
||||
msgstr "Plaats een bericht"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:85
|
||||
msgid "at"
|
||||
msgstr "op"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:102
|
||||
msgid "Post comment!"
|
||||
msgstr "Plaats bericht!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:124
|
||||
msgid "Edit"
|
||||
msgstr "Pas aan"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:130
|
||||
msgid "Delete"
|
||||
msgstr "Verwijderen"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
|
||||
#, python-format
|
||||
msgid "Really delete %(title)s?"
|
||||
msgstr ""
|
||||
msgstr "Zeker weten dat je %(title)s wil verwijderen?"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:50
|
||||
msgid "Delete Permanently"
|
||||
msgstr ""
|
||||
msgstr "Permanent verwijderen"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:22
|
||||
msgid "Media processing panel"
|
||||
msgstr ""
|
||||
msgstr "Mediaverwerkingspaneel"
|
||||
|
||||
#: 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 "Hier kun je de status zien van de media die verwerkt worden."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:28
|
||||
msgid "Media in-processing"
|
||||
msgstr ""
|
||||
msgstr "Media te verwerken"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:46
|
||||
msgid "No media in-processing"
|
||||
msgstr ""
|
||||
msgstr "Geen media om te verwerken"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:50
|
||||
msgid "These uploads failed to process:"
|
||||
msgstr ""
|
||||
msgstr "Deze toevoegingen konden niet verwerkt worden:"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:39
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:59
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:31
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:89
|
||||
#, python-format
|
||||
msgid "%(username)s's profile"
|
||||
msgstr "Profiel van %(username)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:43
|
||||
msgid "Sorry, no such user found."
|
||||
msgstr "Sorry, die gebruiker kon niet worden gevonden."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:50
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:70
|
||||
msgid "Email verification needed"
|
||||
msgstr ""
|
||||
msgstr "Emailverificatie is nodig"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:42
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
|
||||
msgid "Almost done! Your account still needs to be activated."
|
||||
msgstr ""
|
||||
msgstr "Bijna klaar! Je account moet nog geactiveerd worden."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:47
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:58
|
||||
msgid ""
|
||||
"An email should arrive in a few moments with instructions on how to do so."
|
||||
msgstr ""
|
||||
"Een e-mail zou in een paar ogenblikken aan moeten komen met instructies "
|
||||
"hiertoe."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:51
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
|
||||
msgid "In case it doesn't:"
|
||||
msgstr "Zoniet:"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:54
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:65
|
||||
msgid "Resend verification email"
|
||||
msgstr "Stuur de verificatie e-mail opnieuw op."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:73
|
||||
msgid ""
|
||||
"Someone has registered an account with this username, but it still has to be"
|
||||
" activated."
|
||||
msgstr ""
|
||||
"Iemand heeft een account met deze gebruikersnaam gemaakt, maar hij moet nog "
|
||||
"geactiveerd worden."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:68
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:79
|
||||
#, python-format
|
||||
msgid ""
|
||||
"If you are that person but you've lost your verification email, you can <a "
|
||||
@@ -433,58 +513,67 @@ msgstr ""
|
||||
"Als u die persoon bent, maar de verificatie e-mail verloren hebt, kunt u <a "
|
||||
"href=\"%(login_url)s\">inloggen</a> en hem nogmaals verzenden."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:78
|
||||
#, python-format
|
||||
msgid "%(username)s's profile"
|
||||
msgstr "Profiel van %(username)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:85
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
|
||||
msgid "Here's a spot to tell others about yourself."
|
||||
msgstr ""
|
||||
msgstr "Hier is een plekje om anderen over jezelf te vertellen."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:90
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:108
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:101
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:119
|
||||
msgid "Edit profile"
|
||||
msgstr "Profiel aanpassen."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:107
|
||||
msgid "This user hasn't filled in their profile (yet)."
|
||||
msgstr ""
|
||||
msgstr "Deze gebruiker heeft zijn of haar profiel (nog) niet ingevuld."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:122
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:133
|
||||
#, python-format
|
||||
msgid "View all of %(username)s's media"
|
||||
msgstr "Bekijk alle media van %(username)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:135
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:146
|
||||
msgid ""
|
||||
"This is where your media will appear, but you don't seem to have added "
|
||||
"anything yet."
|
||||
msgstr ""
|
||||
"Dit is waar je nieuwe media zal verschijnen, maar het lijkt erop dat je nog "
|
||||
"niets heb toegevoegd."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:141
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:152
|
||||
msgid "Add media"
|
||||
msgstr ""
|
||||
msgstr "Voeg media toe"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:147
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:158
|
||||
msgid "There doesn't seem to be any media here yet..."
|
||||
msgstr ""
|
||||
msgstr "Het lijkt erop dat er nog geen media is."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
|
||||
msgid "feed icon"
|
||||
msgstr ""
|
||||
msgstr "feed icoon"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
|
||||
msgid "Atom feed"
|
||||
msgstr ""
|
||||
msgstr "Atom feed"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:40
|
||||
msgid "Newer"
|
||||
msgstr ""
|
||||
msgstr "Nieuwer"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:46
|
||||
msgid "Older"
|
||||
msgstr ""
|
||||
msgstr "Ouder"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:50
|
||||
msgid "Go to page:"
|
||||
msgstr "Ga naar pagina:"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/tags.html:20
|
||||
msgid "Tagged with"
|
||||
msgstr "Gelabeld met"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/tags.html:25
|
||||
msgid "and"
|
||||
msgstr "en"
|
||||
|
||||
#: mediagoblin/user_pages/forms.py:24
|
||||
msgid "Comment"
|
||||
@@ -492,18 +581,29 @@ msgstr "Commentaar"
|
||||
|
||||
#: mediagoblin/user_pages/forms.py:30
|
||||
msgid "I am sure I want to delete this"
|
||||
msgstr ""
|
||||
msgstr "Ik weet zeker dat ik dit wil verwijderen."
|
||||
|
||||
#: mediagoblin/user_pages/views.py:142
|
||||
msgid "Empty comments are not allowed."
|
||||
msgstr ""
|
||||
#: mediagoblin/user_pages/views.py:155
|
||||
msgid "Oops, your comment was empty."
|
||||
msgstr "Oeps, je bericht was leeg."
|
||||
|
||||
#: mediagoblin/user_pages/views.py:148
|
||||
msgid "Comment posted!"
|
||||
msgstr ""
|
||||
#: mediagoblin/user_pages/views.py:161
|
||||
msgid "Your comment has been posted!"
|
||||
msgstr "Je bericht is geplaatst!"
|
||||
|
||||
#: mediagoblin/user_pages/views.py:181
|
||||
#: mediagoblin/user_pages/views.py:183
|
||||
msgid "You deleted the media."
|
||||
msgstr "Je hebt deze media verwijderd."
|
||||
|
||||
#: mediagoblin/user_pages/views.py:190
|
||||
msgid "The media was not deleted because you didn't check that you were sure."
|
||||
msgstr ""
|
||||
"Deze media was niet verwijderd omdat je niet hebt aangegeven dat je het "
|
||||
"zeker weet."
|
||||
|
||||
#: mediagoblin/user_pages/views.py:198
|
||||
msgid "You are about to delete another user's media. Proceed with caution."
|
||||
msgstr ""
|
||||
"Je staat op het punt de media van iemand anders te verwijderen. Pas op."
|
||||
|
||||
|
||||
|
||||
Binary file not shown.
@@ -1,5 +1,5 @@
|
||||
# Translations template for PROJECT.
|
||||
# Copyright (C) 2011 ORGANIZATION
|
||||
# Copyright (C) 2012 ORGANIZATION
|
||||
# This file is distributed under the same license as the PROJECT project.
|
||||
#
|
||||
# Translators:
|
||||
@@ -8,8 +8,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: GNU MediaGoblin\n"
|
||||
"Report-Msgid-Bugs-To: http://bugs.foocorp.net/projects/mediagoblin/issues\n"
|
||||
"POT-Creation-Date: 2011-11-01 23:14-0500\n"
|
||||
"PO-Revision-Date: 2011-11-02 04:13+0000\n"
|
||||
"POT-Creation-Date: 2012-01-07 13:47-0600\n"
|
||||
"PO-Revision-Date: 2012-01-07 19:44+0000\n"
|
||||
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -19,27 +19,19 @@ msgstr ""
|
||||
"Language: nn_NO\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
|
||||
#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:49
|
||||
#: mediagoblin/processing.py:143
|
||||
msgid "Invalid file given for media type."
|
||||
msgstr "Ugyldig fil for mediatypen."
|
||||
|
||||
#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:41
|
||||
msgid "Username"
|
||||
msgstr "Brukarnamn"
|
||||
|
||||
#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:53
|
||||
#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:45
|
||||
msgid "Password"
|
||||
msgstr "Passord"
|
||||
|
||||
#: mediagoblin/auth/forms.py:35
|
||||
msgid "Passwords must match."
|
||||
msgstr "Passorda må vera like."
|
||||
|
||||
#: mediagoblin/auth/forms.py:37
|
||||
msgid "Confirm password"
|
||||
msgstr "Gjenta passord"
|
||||
|
||||
#: mediagoblin/auth/forms.py:39
|
||||
msgid "Type it again here to make sure there are no spelling mistakes."
|
||||
msgstr "Skriv passordet omatt for å unngå stavefeil."
|
||||
|
||||
#: mediagoblin/auth/forms.py:42
|
||||
#: mediagoblin/auth/forms.py:34
|
||||
msgid "Email address"
|
||||
msgstr "Epost"
|
||||
|
||||
@@ -52,10 +44,10 @@ msgid "Sorry, a user with that name already exists."
|
||||
msgstr "Ein konto med dette brukarnamnet finst allereide."
|
||||
|
||||
#: mediagoblin/auth/views.py:77
|
||||
msgid "Sorry, that email address has already been taken."
|
||||
msgstr "Den epostadressa er allereide teken."
|
||||
msgid "Sorry, a user with that email address already exists."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:179
|
||||
#: mediagoblin/auth/views.py:180
|
||||
msgid ""
|
||||
"Your email address has been verified. You may now login, edit your profile, "
|
||||
"and submit images!"
|
||||
@@ -63,87 +55,155 @@ msgstr ""
|
||||
"Kontoen din er stadfesta. Du kan no logga inn, endra profilen din og lasta "
|
||||
"opp filer."
|
||||
|
||||
#: mediagoblin/auth/views.py:185
|
||||
#: mediagoblin/auth/views.py:186
|
||||
msgid "The verification key or user id is incorrect"
|
||||
msgstr "Stadfestingsnykelen eller brukar-ID-en din er feil."
|
||||
|
||||
#: mediagoblin/auth/views.py:207
|
||||
#: mediagoblin/auth/views.py:204
|
||||
msgid "You must be logged in so we know who to send the email to!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:212
|
||||
msgid "You've already verified your email address!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:225
|
||||
msgid "Resent your verification email."
|
||||
msgstr "Send ein ny stadfestingsepost."
|
||||
|
||||
#: mediagoblin/auth/views.py:248
|
||||
#: mediagoblin/auth/views.py:260
|
||||
msgid ""
|
||||
"An email has been sent with instructions on how to change your password."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:270
|
||||
msgid ""
|
||||
"Could not send password recovery email as your username is inactive or your "
|
||||
"account's email address has not been verified."
|
||||
msgstr ""
|
||||
"Kunne ikkje senda epost. Brukarnamnet ditt er inaktivt eller uverifisert."
|
||||
|
||||
#: mediagoblin/auth/views.py:282
|
||||
msgid "Couldn't find someone with that username or email."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:330
|
||||
msgid "You can now log in using your new password."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:24 mediagoblin/submit/forms.py:27
|
||||
msgid "Title"
|
||||
msgstr "Tittel"
|
||||
|
||||
#: mediagoblin/edit/forms.py:28 mediagoblin/submit/forms.py:32
|
||||
#: mediagoblin/edit/forms.py:27 mediagoblin/submit/forms.py:30
|
||||
msgid "Description of this work"
|
||||
msgstr "Skildring av mediefila"
|
||||
|
||||
#: mediagoblin/edit/forms.py:28 mediagoblin/submit/forms.py:31
|
||||
msgid ""
|
||||
"You can use\n"
|
||||
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
|
||||
" Markdown</a> for formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:32 mediagoblin/submit/forms.py:35
|
||||
msgid "Tags"
|
||||
msgstr "Merkelappar"
|
||||
|
||||
#: mediagoblin/edit/forms.py:31
|
||||
#: mediagoblin/edit/forms.py:34 mediagoblin/submit/forms.py:37
|
||||
msgid "Separate tags by commas."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:37
|
||||
msgid "Slug"
|
||||
msgstr "Nettnamn"
|
||||
|
||||
#: mediagoblin/edit/forms.py:32
|
||||
#: mediagoblin/edit/forms.py:38
|
||||
msgid "The slug can't be empty"
|
||||
msgstr "Nettnamnet kan ikkje vera tomt"
|
||||
|
||||
#: mediagoblin/edit/forms.py:33
|
||||
#: mediagoblin/edit/forms.py:39
|
||||
msgid ""
|
||||
"The title part of this media's URL. You usually don't need to change this."
|
||||
msgstr "Nettnamnet (adressetittel) for mediefila di. Trengst ikkje endrast."
|
||||
"The title part of this media's address. You usually don't need to change "
|
||||
"this."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:40
|
||||
#: mediagoblin/edit/forms.py:46
|
||||
msgid "Bio"
|
||||
msgstr "Presentasjon"
|
||||
|
||||
#: mediagoblin/edit/forms.py:43
|
||||
#: mediagoblin/edit/forms.py:48
|
||||
msgid ""
|
||||
"You can use\n"
|
||||
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
|
||||
" Markdown</a> for formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:53
|
||||
msgid "Website"
|
||||
msgstr "Heimeside"
|
||||
|
||||
#: mediagoblin/edit/views.py:64
|
||||
#: mediagoblin/edit/forms.py:60
|
||||
msgid "Old password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:62
|
||||
msgid "Enter your old password to prove you own this account."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:65
|
||||
msgid "New password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:65
|
||||
msgid "An entry with that slug already exists for this user."
|
||||
msgstr "Eit innlegg med denne adressetittelen finst allereie."
|
||||
|
||||
#: mediagoblin/edit/views.py:85
|
||||
#: mediagoblin/edit/views.py:86
|
||||
msgid "You are editing another user's media. Proceed with caution."
|
||||
msgstr "Trå varsamt, du endrar nokon andre sine mediefiler."
|
||||
|
||||
#: mediagoblin/edit/views.py:155
|
||||
#: mediagoblin/edit/views.py:156
|
||||
msgid "You are editing a user's profile. Proceed with caution."
|
||||
msgstr "Trå varsamt, du endrar nokon andre sin profil."
|
||||
|
||||
#: mediagoblin/process_media/errors.py:44
|
||||
msgid "Invalid file given for media type."
|
||||
msgstr "Ugyldig fil for mediatypen."
|
||||
#: mediagoblin/edit/views.py:174
|
||||
msgid "Profile changes saved"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:200
|
||||
msgid "Wrong password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:216
|
||||
msgid "Account settings saved"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/media_types/__init__.py:77
|
||||
msgid "Could not extract any file extension from \"{filename}\""
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/media_types/__init__.py:88
|
||||
msgid "Sorry, I don't support that file type :("
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/submit/forms.py:25
|
||||
msgid "File"
|
||||
msgstr "Fil"
|
||||
|
||||
#: mediagoblin/submit/forms.py:30
|
||||
msgid "Description of this work"
|
||||
msgstr "Skildring av mediefila"
|
||||
|
||||
#: mediagoblin/submit/views.py:46
|
||||
#: mediagoblin/submit/views.py:50
|
||||
msgid "You must provide a file."
|
||||
msgstr "Du må velja ei fil."
|
||||
|
||||
#: mediagoblin/submit/views.py:49
|
||||
msgid "The file doesn't seem to be an image!"
|
||||
msgstr "Fila verkar ikkje å vera ei gyldig biletefil."
|
||||
|
||||
#: mediagoblin/submit/views.py:121
|
||||
#: mediagoblin/submit/views.py:128
|
||||
msgid "Woohoo! Submitted!"
|
||||
msgstr "Johoo! Opplasta!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:21
|
||||
#: mediagoblin/templates/mediagoblin/404.html:22
|
||||
msgid "Image of 404 goblin stressing out"
|
||||
msgstr "Bilete av stressa 404-tusse."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:23
|
||||
msgid "Oops!"
|
||||
msgstr "Oops."
|
||||
|
||||
@@ -159,33 +219,30 @@ msgstr ""
|
||||
"Er du sikker på at adressa er korrekt, so er sida truleg flytta eller "
|
||||
"sletta."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:32
|
||||
msgid "Image of 404 goblin stressing out"
|
||||
msgstr "Bilete av stressa 404-tusse."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:22
|
||||
msgid "GNU MediaGoblin"
|
||||
msgstr "GNU MediaGoblin"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:47
|
||||
#: mediagoblin/templates/mediagoblin/base.html:48
|
||||
msgid "MediaGoblin logo"
|
||||
msgstr "MediaGoblin"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:52
|
||||
msgid "Submit media"
|
||||
msgstr "Last opp"
|
||||
#: mediagoblin/templates/mediagoblin/base.html:53
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:157
|
||||
msgid "Add media"
|
||||
msgstr "Legg til mediefiler"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:63
|
||||
msgid "verify your email!"
|
||||
msgstr "Stadfest epostadressa di"
|
||||
#: mediagoblin/templates/mediagoblin/base.html:64
|
||||
msgid "Verify your email!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:73
|
||||
#: mediagoblin/templates/mediagoblin/base.html:71
|
||||
msgid "log out"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:74
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:27
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:35
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:45
|
||||
msgid "Log in"
|
||||
msgstr "Logg inn"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:89
|
||||
#: mediagoblin/templates/mediagoblin/base.html:86
|
||||
msgid ""
|
||||
"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
|
||||
"href=\"http://gnu.org/\">GNU</a> project"
|
||||
@@ -197,91 +254,53 @@ msgstr ""
|
||||
msgid "Explore"
|
||||
msgstr "Utforsk"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:27
|
||||
msgid "Hi there, media lover! MediaGoblin is..."
|
||||
msgstr "Hei der mediaentusiast, MediaGoblin..."
|
||||
#: mediagoblin/templates/mediagoblin/root.html:26
|
||||
msgid "Hi there, welcome to this MediaGoblin site!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:28
|
||||
msgid ""
|
||||
"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
|
||||
"extraordinarily great piece of media hosting software."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:29
|
||||
msgid "The perfect place for your media!"
|
||||
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!"
|
||||
"To add your own media, place comments, save your favourites and more, you "
|
||||
"can log in with your MediaGoblin account."
|
||||
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 "Fri som i fridom (me er eit <a href=\"http://gnu.org\">GNU</a>-prosjekt)."
|
||||
msgid "Don't have one yet? It's easy!"
|
||||
msgstr ""
|
||||
|
||||
#: 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 og (til "
|
||||
"slutt, kjem snart!) federering, enkelt forklart deling og sending av "
|
||||
"mediefiler og kommentarar over fleire nettstader."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:33
|
||||
msgid ""
|
||||
"Built for extensibility. (Multiple media types coming soon to the software,"
|
||||
" including video support!)"
|
||||
msgstr "Bygd for utviding (fleire medietypar kjem snart, m.a. video)."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:34
|
||||
msgid ""
|
||||
"Powered by people like you. (<a "
|
||||
"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/root.html:38
|
||||
msgid "Excited to join us?"
|
||||
msgstr "Lyst til å bli med oss?"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:39
|
||||
#, python-format
|
||||
msgid ""
|
||||
"<a class=\"header_submit_highlight\" href=\"%(register_url)s\">Create a free account</a>\n"
|
||||
" or\n"
|
||||
" <a class=\"header_submit\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
|
||||
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Create an account at this site</a>\n"
|
||||
" or\n"
|
||||
" <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
|
||||
msgstr ""
|
||||
"<a class=\"header_submit_highlight\" href=\"%(register_url)s\">Opprett ein "
|
||||
"gratis konto</a> eller <a class=\"header_submit\" "
|
||||
"href=\"http://wiki.mediagoblin.org/HackingHowto\">installer MediaGoblin på "
|
||||
"eigen tenar</a>"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:53
|
||||
#: mediagoblin/templates/mediagoblin/root.html:40
|
||||
msgid "Most recent media"
|
||||
msgstr "Nyaste mediefiler"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:29
|
||||
msgid "Enter your new password"
|
||||
msgstr "Fyll inn passord"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:29
|
||||
msgid "Enter your username or email"
|
||||
msgstr "Fyll inn brukarnamn eller epost"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_changed_success.html:22
|
||||
msgid "Your password has been changed. Try to log in now."
|
||||
msgstr "Passordet endra. Prøv å logga inn no."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_email_sent.html:22
|
||||
msgid ""
|
||||
"Check your inbox. We sent an email with a URL for changing your password."
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:32
|
||||
msgid "Set your new password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:35
|
||||
msgid "Set password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:27
|
||||
msgid "Recover password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:30
|
||||
msgid "Send instructions"
|
||||
msgstr ""
|
||||
"Sjekk innboksen din. Me har sendt deg ein epost med ei netadresse for "
|
||||
"passordendring."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_verification_email.txt:19
|
||||
#, python-format
|
||||
@@ -308,27 +327,23 @@ msgstr ""
|
||||
msgid "Logging in failed!"
|
||||
msgstr "Innlogging feila"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:43
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:35
|
||||
msgid "Don't have an account yet?"
|
||||
msgstr "Har du ingen konto?"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:46
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:36
|
||||
msgid "Create one here!"
|
||||
msgstr "Lag ein!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:49
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:42
|
||||
msgid "Forgot your password?"
|
||||
msgstr "Gløymd passordet?"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:52
|
||||
msgid "Change it!"
|
||||
msgstr "Endra"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:27
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:32
|
||||
msgid "Create an account!"
|
||||
msgstr "Lag ein konto."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:31
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:36
|
||||
msgid "Create"
|
||||
msgstr "Opprett"
|
||||
|
||||
@@ -359,36 +374,114 @@ msgid "Cancel"
|
||||
msgstr "Bryt av"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit.html:37
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
|
||||
msgid "Save changes"
|
||||
msgstr "Lagra"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:34
|
||||
#, python-format
|
||||
msgid "Changing %(username)s's account settings"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:29
|
||||
#, python-format
|
||||
msgid "Editing %(username)s's profile"
|
||||
msgstr "Endrar profilen til %(username)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:31
|
||||
msgid "Media tagged with:"
|
||||
msgstr "Merkelappar:"
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:30
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:35
|
||||
#, python-format
|
||||
msgid "Media tagged with: %(tag_name)s"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:46
|
||||
msgid "Original"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:33
|
||||
msgid ""
|
||||
"Sorry, this video will not work because \n"
|
||||
"\t your web browser does not support HTML5 \n"
|
||||
"\t video."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:36
|
||||
msgid ""
|
||||
"You can get a modern web browser that \n"
|
||||
"\t can play this video at <a href=\"http://getfirefox.com\">\n"
|
||||
"\t http://getfirefox.com</a>!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/submit/start.html:26
|
||||
msgid "Submit yer media"
|
||||
msgstr "Last opp"
|
||||
msgid "Add your media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/submit/start.html:30
|
||||
msgid "Submit"
|
||||
msgstr "Send"
|
||||
msgid "Add"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:32
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
|
||||
#, python-format
|
||||
msgid "%(username)s's media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:37
|
||||
#, python-format
|
||||
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
|
||||
msgstr "<a href=\"%(user_url)s\">%(username)s</a> sine mediefiler"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:52
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:32
|
||||
msgid "Sorry, no such user found."
|
||||
msgstr "Fann ingen slik brukar"
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:60
|
||||
#, python-format
|
||||
msgid "Added on %(date)s."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
|
||||
msgid "Edit"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
|
||||
#, python-format
|
||||
msgid "%(comment_count)s comment"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:81
|
||||
#, python-format
|
||||
msgid "%(comment_count)s comments"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
|
||||
msgid "No comments yet."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:91
|
||||
msgid "Add one"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:100
|
||||
msgid ""
|
||||
"Type your comment here. You can use <a "
|
||||
"href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> for"
|
||||
" formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:104
|
||||
msgid "Add this comment"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:126
|
||||
msgid "at"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:141
|
||||
#, python-format
|
||||
msgid "<p>❖ Browsing media by <a href=\"%(user_url)s\">%(username)s</a></p>"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
|
||||
#, python-format
|
||||
@@ -420,35 +513,45 @@ msgstr "Ingen media under handsaming"
|
||||
msgid "These uploads failed to process:"
|
||||
msgstr "Klarte ikkje handsama desse opplasta filene:"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:39
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:59
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:31
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:89
|
||||
#, python-format
|
||||
msgid "%(username)s's profile"
|
||||
msgstr "%(username)s sin profil"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:43
|
||||
msgid "Sorry, no such user found."
|
||||
msgstr "Fann ingen slik brukar"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:50
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:70
|
||||
msgid "Email verification needed"
|
||||
msgstr "Epostverifisering trengst."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:42
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
|
||||
msgid "Almost done! Your account still needs to be activated."
|
||||
msgstr "Nesten ferdig. Du treng berre aktivera kontoen."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:47
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:58
|
||||
msgid ""
|
||||
"An email should arrive in a few moments with instructions on how to do so."
|
||||
msgstr "Ein epost med instruksjonar kjem straks."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:51
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
|
||||
msgid "In case it doesn't:"
|
||||
msgstr "I tilfelle det ikkje skjer:"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:54
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:65
|
||||
msgid "Resend verification email"
|
||||
msgstr "Send ein ny epost"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:73
|
||||
msgid ""
|
||||
"Someone has registered an account with this username, but it still has to be"
|
||||
" activated."
|
||||
msgstr "Dette brukarnamnet finst allereie, men det er ikkje aktivert."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:68
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:79
|
||||
#, python-format
|
||||
msgid ""
|
||||
"If you are that person but you've lost your verification email, you can <a "
|
||||
@@ -457,40 +560,36 @@ msgstr ""
|
||||
"Viss dette er deg, kan du <a href=\"%(login_url)s\">logga inn</a> for å få "
|
||||
"tilsendt ny epost med stadfestingslenkje."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:78
|
||||
#, python-format
|
||||
msgid "%(username)s's profile"
|
||||
msgstr "%(username)s sin profil"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:85
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
|
||||
msgid "Here's a spot to tell others about yourself."
|
||||
msgstr "Her kan du fortelja om deg sjølv."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:90
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:108
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:101
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
|
||||
msgid "Edit profile"
|
||||
msgstr "Endra profil"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
|
||||
msgid "This user hasn't filled in their profile (yet)."
|
||||
msgstr "Brukaren har ikkje fylt ut profilen sin (enno)."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:122
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:125
|
||||
msgid "Change account settings"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:138
|
||||
#, python-format
|
||||
msgid "View all of %(username)s's media"
|
||||
msgstr "Sjå alle %(username)s sine mediefiler"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:135
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:151
|
||||
msgid ""
|
||||
"This is where your media will appear, but you don't seem to have added "
|
||||
"anything yet."
|
||||
msgstr "Her kjem mediefilene dine. Ser ikkje ut til at du har lagt til noko."
|
||||
msgstr "Her kjem mediefilene dine."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:141
|
||||
msgid "Add media"
|
||||
msgstr "Legg til mediefiler"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:147
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:163
|
||||
#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:72
|
||||
msgid "There doesn't seem to be any media here yet..."
|
||||
msgstr "Ser ikkje ut til at det finst nokon mediefiler her nett no."
|
||||
|
||||
@@ -502,31 +601,57 @@ msgstr " "
|
||||
msgid "Atom feed"
|
||||
msgstr "Atom-kjelde"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:40
|
||||
msgid "Newer"
|
||||
msgstr "Nyare"
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
|
||||
msgid "← Newer"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:46
|
||||
msgid "Older"
|
||||
msgstr "Eldre"
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
|
||||
msgid "Older →"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/forms.py:24
|
||||
msgid "Comment"
|
||||
msgstr "Innspel"
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
|
||||
msgid "Go to page:"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:27
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:32
|
||||
msgid "newer"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:38
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:43
|
||||
msgid "older"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/tags.html:20
|
||||
msgid "View more media tagged with"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/tags.html:25
|
||||
msgid "or"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/forms.py:30
|
||||
msgid "I am sure I want to delete this"
|
||||
msgstr "Eg er sikker eg vil sletta dette"
|
||||
|
||||
#: mediagoblin/user_pages/views.py:142
|
||||
msgid "Empty comments are not allowed."
|
||||
#: mediagoblin/user_pages/views.py:155
|
||||
msgid "Oops, your comment was empty."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/views.py:148
|
||||
msgid "Comment posted!"
|
||||
#: mediagoblin/user_pages/views.py:161
|
||||
msgid "Your comment has been posted!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/views.py:181
|
||||
#: mediagoblin/user_pages/views.py:183
|
||||
msgid "You deleted the media."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/views.py:190
|
||||
msgid "The media was not deleted because you didn't check that you were sure."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/views.py:198
|
||||
msgid "You are about to delete another user's media. Proceed with caution."
|
||||
msgstr ""
|
||||
"Du er i ferd med å sletta ein annan brukar sine mediefiler. Trå varsamt."
|
||||
|
||||
Binary file not shown.
@@ -1,5 +1,5 @@
|
||||
# Translations template for PROJECT.
|
||||
# Copyright (C) 2011 ORGANIZATION
|
||||
# Copyright (C) 2012 ORGANIZATION
|
||||
# This file is distributed under the same license as the PROJECT project.
|
||||
#
|
||||
# Translators:
|
||||
@@ -9,8 +9,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: GNU MediaGoblin\n"
|
||||
"Report-Msgid-Bugs-To: http://bugs.foocorp.net/projects/mediagoblin/issues\n"
|
||||
"POT-Creation-Date: 2011-11-01 23:14-0500\n"
|
||||
"PO-Revision-Date: 2011-11-02 04:13+0000\n"
|
||||
"POT-Creation-Date: 2012-01-07 13:47-0600\n"
|
||||
"PO-Revision-Date: 2012-01-07 19:44+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"
|
||||
@@ -20,28 +20,19 @@ msgstr ""
|
||||
"Language: pt_BR\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1)\n"
|
||||
|
||||
#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:49
|
||||
#: mediagoblin/processing.py:143
|
||||
msgid "Invalid file given for media type."
|
||||
msgstr "Arquivo inválido para esse tipo de mídia"
|
||||
|
||||
#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:41
|
||||
msgid "Username"
|
||||
msgstr "Nome de Usuário"
|
||||
|
||||
#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:53
|
||||
#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:45
|
||||
msgid "Password"
|
||||
msgstr "Senha"
|
||||
|
||||
#: mediagoblin/auth/forms.py:35
|
||||
msgid "Passwords must match."
|
||||
msgstr "Senhas devem ser iguais."
|
||||
|
||||
#: mediagoblin/auth/forms.py:37
|
||||
msgid "Confirm password"
|
||||
msgstr "Confirmar senha"
|
||||
|
||||
#: mediagoblin/auth/forms.py:39
|
||||
msgid "Type it again here to make sure there are no spelling mistakes."
|
||||
msgstr ""
|
||||
"Digite novamente aqui para ter certeza que não houve erros de digitação"
|
||||
|
||||
#: mediagoblin/auth/forms.py:42
|
||||
#: mediagoblin/auth/forms.py:34
|
||||
msgid "Email address"
|
||||
msgstr "Endereço de email"
|
||||
|
||||
@@ -54,10 +45,10 @@ msgid "Sorry, a user with that name already exists."
|
||||
msgstr "Desculpe, um usuário com este nome já existe."
|
||||
|
||||
#: mediagoblin/auth/views.py:77
|
||||
msgid "Sorry, that email address has already been taken."
|
||||
msgstr "Desculpe, esse endereço de email já está em uso."
|
||||
msgid "Sorry, a user with that email address already exists."
|
||||
msgstr "Desculpe, um usuário com esse email já esta cadastrado"
|
||||
|
||||
#: mediagoblin/auth/views.py:179
|
||||
#: mediagoblin/auth/views.py:180
|
||||
msgid ""
|
||||
"Your email address has been verified. You may now login, edit your profile, "
|
||||
"and submit images!"
|
||||
@@ -65,15 +56,28 @@ 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:185
|
||||
#: mediagoblin/auth/views.py:186
|
||||
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:207
|
||||
#: mediagoblin/auth/views.py:204
|
||||
msgid "You must be logged in so we know who to send the email to!"
|
||||
msgstr " "
|
||||
|
||||
#: mediagoblin/auth/views.py:212
|
||||
msgid "You've already verified your email address!"
|
||||
msgstr "Você já verifico seu email!"
|
||||
|
||||
#: mediagoblin/auth/views.py:225
|
||||
msgid "Resent your verification email."
|
||||
msgstr "O email de verificação foi reenviado."
|
||||
|
||||
#: mediagoblin/auth/views.py:248
|
||||
#: mediagoblin/auth/views.py:260
|
||||
msgid ""
|
||||
"An email has been sent with instructions on how to change your password."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:270
|
||||
msgid ""
|
||||
"Could not send password recovery email as your username is inactive or your "
|
||||
"account's email address has not been verified."
|
||||
@@ -81,73 +85,127 @@ msgstr ""
|
||||
"Não foi possível enviar o email de recuperação de senha, pois seu nome de "
|
||||
"usuário está inativo ou o email da sua conta não foi confirmado."
|
||||
|
||||
#: mediagoblin/auth/views.py:282
|
||||
msgid "Couldn't find someone with that username or email."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:330
|
||||
msgid "You can now log in using your new password."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:24 mediagoblin/submit/forms.py:27
|
||||
msgid "Title"
|
||||
msgstr "Título"
|
||||
|
||||
#: mediagoblin/edit/forms.py:28 mediagoblin/submit/forms.py:32
|
||||
#: mediagoblin/edit/forms.py:27 mediagoblin/submit/forms.py:30
|
||||
msgid "Description of this work"
|
||||
msgstr "Descrição desse trabalho"
|
||||
|
||||
#: mediagoblin/edit/forms.py:28 mediagoblin/submit/forms.py:31
|
||||
msgid ""
|
||||
"You can use\n"
|
||||
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
|
||||
" Markdown</a> for formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:32 mediagoblin/submit/forms.py:35
|
||||
msgid "Tags"
|
||||
msgstr "Etiquetas"
|
||||
|
||||
#: mediagoblin/edit/forms.py:31
|
||||
#: mediagoblin/edit/forms.py:34 mediagoblin/submit/forms.py:37
|
||||
msgid "Separate tags by commas."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:37
|
||||
msgid "Slug"
|
||||
msgstr "Arquivo"
|
||||
|
||||
#: mediagoblin/edit/forms.py:32
|
||||
#: mediagoblin/edit/forms.py:38
|
||||
msgid "The slug can't be empty"
|
||||
msgstr "O arquivo não pode estar vazio"
|
||||
|
||||
#: mediagoblin/edit/forms.py:33
|
||||
#: mediagoblin/edit/forms.py:39
|
||||
msgid ""
|
||||
"The title part of this media's URL. You usually don't need to change this."
|
||||
"The title part of this media's address. You usually don't need to change "
|
||||
"this."
|
||||
msgstr ""
|
||||
"A parte título da URL dessa mídia. Geralmente não é necessário alterar isso."
|
||||
|
||||
#: mediagoblin/edit/forms.py:40
|
||||
#: mediagoblin/edit/forms.py:46
|
||||
msgid "Bio"
|
||||
msgstr "Biografia"
|
||||
|
||||
#: mediagoblin/edit/forms.py:43
|
||||
#: mediagoblin/edit/forms.py:48
|
||||
msgid ""
|
||||
"You can use\n"
|
||||
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
|
||||
" Markdown</a> for formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:53
|
||||
msgid "Website"
|
||||
msgstr "Website"
|
||||
|
||||
#: mediagoblin/edit/views.py:64
|
||||
#: mediagoblin/edit/forms.py:60
|
||||
msgid "Old password"
|
||||
msgstr "Senha antiga"
|
||||
|
||||
#: mediagoblin/edit/forms.py:62
|
||||
msgid "Enter your old password to prove you own this account."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:65
|
||||
msgid "New password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:65
|
||||
msgid "An entry with that slug already exists for this user."
|
||||
msgstr "Uma entrada com esse arquivo já existe para esse usuário"
|
||||
|
||||
#: mediagoblin/edit/views.py:85
|
||||
#: mediagoblin/edit/views.py:86
|
||||
msgid "You are editing another user's media. Proceed with caution."
|
||||
msgstr "Você está editando a mídia de outro usuário. Tenha cuidado."
|
||||
|
||||
#: mediagoblin/edit/views.py:155
|
||||
#: mediagoblin/edit/views.py:156
|
||||
msgid "You are editing a user's profile. Proceed with caution."
|
||||
msgstr "Você está editando um perfil de usuário. Tenha cuidado."
|
||||
|
||||
#: mediagoblin/process_media/errors.py:44
|
||||
msgid "Invalid file given for media type."
|
||||
msgstr "Arquivo inválido para esse tipo de mídia"
|
||||
#: mediagoblin/edit/views.py:174
|
||||
msgid "Profile changes saved"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:200
|
||||
msgid "Wrong password"
|
||||
msgstr "Senha errada"
|
||||
|
||||
#: mediagoblin/edit/views.py:216
|
||||
msgid "Account settings saved"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/media_types/__init__.py:77
|
||||
msgid "Could not extract any file extension from \"{filename}\""
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/media_types/__init__.py:88
|
||||
msgid "Sorry, I don't support that file type :("
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/submit/forms.py:25
|
||||
msgid "File"
|
||||
msgstr "Arquivo"
|
||||
|
||||
#: mediagoblin/submit/forms.py:30
|
||||
msgid "Description of this work"
|
||||
msgstr "Descrição desse trabalho"
|
||||
|
||||
#: mediagoblin/submit/views.py:46
|
||||
#: mediagoblin/submit/views.py:50
|
||||
msgid "You must provide a file."
|
||||
msgstr "Você deve fornecer um arquivo."
|
||||
|
||||
#: mediagoblin/submit/views.py:49
|
||||
msgid "The file doesn't seem to be an image!"
|
||||
msgstr "O arquivo não parece ser uma imagem!"
|
||||
|
||||
#: mediagoblin/submit/views.py:121
|
||||
#: mediagoblin/submit/views.py:128
|
||||
msgid "Woohoo! Submitted!"
|
||||
msgstr "Eba! Enviado!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:21
|
||||
#: mediagoblin/templates/mediagoblin/404.html:22
|
||||
msgid "Image of 404 goblin stressing out"
|
||||
msgstr "Imagem do goblin 404 aparecendo"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:23
|
||||
msgid "Oops!"
|
||||
msgstr "Oops"
|
||||
|
||||
@@ -163,33 +221,30 @@ msgstr ""
|
||||
"Se você está certo de que o endereço está correto, talvez a página que "
|
||||
"esteja procurando tenha sido apagada ou mudou de endereço"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:32
|
||||
msgid "Image of 404 goblin stressing out"
|
||||
msgstr "Imagem do goblin 404 aparecendo"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:22
|
||||
msgid "GNU MediaGoblin"
|
||||
msgstr "GNU MediaGoblin"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:47
|
||||
#: mediagoblin/templates/mediagoblin/base.html:48
|
||||
msgid "MediaGoblin logo"
|
||||
msgstr "Logo MediaGoblin"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:52
|
||||
msgid "Submit media"
|
||||
msgstr "Enviar mídia"
|
||||
#: mediagoblin/templates/mediagoblin/base.html:53
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:157
|
||||
msgid "Add media"
|
||||
msgstr "Adicionar mídia"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:63
|
||||
msgid "verify your email!"
|
||||
#: mediagoblin/templates/mediagoblin/base.html:64
|
||||
msgid "Verify your email!"
|
||||
msgstr "Verifique seu email!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:73
|
||||
#: mediagoblin/templates/mediagoblin/base.html:71
|
||||
msgid "log out"
|
||||
msgstr "Sair"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:74
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:27
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:35
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:45
|
||||
msgid "Log in"
|
||||
msgstr "Entrar"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:89
|
||||
#: mediagoblin/templates/mediagoblin/base.html:86
|
||||
msgid ""
|
||||
"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
|
||||
"href=\"http://gnu.org/\">GNU</a> project"
|
||||
@@ -201,93 +256,53 @@ msgstr ""
|
||||
msgid "Explore"
|
||||
msgstr "Explorar"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:27
|
||||
msgid "Hi there, media lover! MediaGoblin is..."
|
||||
msgstr "Olá amante de mídias. MediaGoblin é..."
|
||||
#: mediagoblin/templates/mediagoblin/root.html:26
|
||||
msgid "Hi there, welcome to this MediaGoblin site!"
|
||||
msgstr "Olá, bemvindo ao site de MediaGoblin."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:28
|
||||
msgid ""
|
||||
"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
|
||||
"extraordinarily great piece of media hosting software."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:29
|
||||
msgid "The perfect place for your media!"
|
||||
msgstr "O lugar perfeito para sua mídia!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:30
|
||||
msgid ""
|
||||
"A place for people to collaborate and show off original and derived "
|
||||
"creations!"
|
||||
msgstr ""
|
||||
"Um lugar para as pessoas colaborarem e mostrarem suas criações originais e "
|
||||
"derivadas!"
|
||||
"To add your own media, place comments, save your favourites and more, you "
|
||||
"can log in with your MediaGoblin account."
|
||||
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 ""
|
||||
"Livre como a liberdade. (Afinal, somos um projeto <a "
|
||||
"href=\"http://gnu.org\">GNU</a>)"
|
||||
msgid "Don't have one yet? It's easy!"
|
||||
msgstr " "
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:32
|
||||
msgid ""
|
||||
"Aiming to make the world a better place through decentralization and "
|
||||
"(eventually, coming soon!) federation!"
|
||||
msgstr ""
|
||||
"Com o objetivo de fazer um mundo melhor através da descentralização e "
|
||||
"(eventualmente, em breve) federação!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:33
|
||||
msgid ""
|
||||
"Built for extensibility. (Multiple media types coming soon to the software,"
|
||||
" including video support!)"
|
||||
msgstr ""
|
||||
"Construído para extensibilidade. (Múltiplos tipos de mídia em breve, "
|
||||
"incluindo suporte a vídeo) "
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:34
|
||||
msgid ""
|
||||
"Powered by people like you. (<a "
|
||||
"href=\"http://mediagoblin.org/pages/join.html\">You can help us improve this"
|
||||
" software!</a>)"
|
||||
msgstr ""
|
||||
"Desenvolvido por pessoas como você. (<a "
|
||||
"href=\"http://mediagoblin.org/pages/join.html\">Você pode ajudar a melhorar "
|
||||
"esse software</a>)"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:38
|
||||
msgid "Excited to join us?"
|
||||
msgstr "Animado para juntar-se a nós?"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:39
|
||||
#, python-format
|
||||
msgid ""
|
||||
"<a class=\"header_submit_highlight\" href=\"%(register_url)s\">Create a free account</a>\n"
|
||||
" or\n"
|
||||
" <a class=\"header_submit\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
|
||||
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Create an account at this site</a>\n"
|
||||
" or\n"
|
||||
" <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
|
||||
msgstr ""
|
||||
"<a class=\"header_submit_highlight\" href=\"%(register_url)s\"> Crie uma conta grátis </a>\n"
|
||||
" ou <a class=\"header_submit\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Configure seu próprio servidor MediaGoblin</a>\n"
|
||||
" "
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:53
|
||||
#: mediagoblin/templates/mediagoblin/root.html:40
|
||||
msgid "Most recent media"
|
||||
msgstr "Mídia mais recente"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:29
|
||||
msgid "Enter your new password"
|
||||
msgstr "Digite sua nova senha"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:29
|
||||
msgid "Enter your username or email"
|
||||
msgstr "Digite seu nome de usuário ou email"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_changed_success.html:22
|
||||
msgid "Your password has been changed. Try to log in now."
|
||||
msgstr "Sua senha foi alterada. Tente entrar agora."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_email_sent.html:22
|
||||
msgid ""
|
||||
"Check your inbox. We sent an email with a URL for changing your password."
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:32
|
||||
msgid "Set your new password"
|
||||
msgstr ""
|
||||
"Verifique sua caixa de entrada. Mandamos um email com a URL para troca da "
|
||||
"senha"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:35
|
||||
msgid "Set password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:27
|
||||
msgid "Recover password"
|
||||
msgstr "Recuperar senha"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:30
|
||||
msgid "Send instructions"
|
||||
msgstr "Mandar instruções"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_verification_email.txt:19
|
||||
#, python-format
|
||||
@@ -315,27 +330,23 @@ msgstr ""
|
||||
msgid "Logging in failed!"
|
||||
msgstr "Autenticação falhou"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:43
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:35
|
||||
msgid "Don't have an account yet?"
|
||||
msgstr "Ainda não tem conta?"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:46
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:36
|
||||
msgid "Create one here!"
|
||||
msgstr "Crie uma aqui!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:49
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:42
|
||||
msgid "Forgot your password?"
|
||||
msgstr "Esqueceu sua senha?"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:52
|
||||
msgid "Change it!"
|
||||
msgstr "Altere-a"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:27
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:32
|
||||
msgid "Create an account!"
|
||||
msgstr "Criar uma conta!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:31
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:36
|
||||
msgid "Create"
|
||||
msgstr "Criar"
|
||||
|
||||
@@ -366,36 +377,114 @@ msgid "Cancel"
|
||||
msgstr "Cancelar"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit.html:37
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
|
||||
msgid "Save changes"
|
||||
msgstr "Salvar mudanças"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:34
|
||||
#, python-format
|
||||
msgid "Changing %(username)s's account settings"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:29
|
||||
#, python-format
|
||||
msgid "Editing %(username)s's profile"
|
||||
msgstr "Editando perfil de %(username)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:31
|
||||
msgid "Media tagged with:"
|
||||
msgstr "Mídia marcada como:"
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:30
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:35
|
||||
#, python-format
|
||||
msgid "Media tagged with: %(tag_name)s"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:46
|
||||
msgid "Original"
|
||||
msgstr "Original"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:33
|
||||
msgid ""
|
||||
"Sorry, this video will not work because \n"
|
||||
"\t your web browser does not support HTML5 \n"
|
||||
"\t video."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:36
|
||||
msgid ""
|
||||
"You can get a modern web browser that \n"
|
||||
"\t can play this video at <a href=\"http://getfirefox.com\">\n"
|
||||
"\t http://getfirefox.com</a>!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/submit/start.html:26
|
||||
msgid "Submit yer media"
|
||||
msgstr "Envie sua mídia"
|
||||
msgid "Add your media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/submit/start.html:30
|
||||
msgid "Submit"
|
||||
msgstr "Enviar"
|
||||
msgid "Add"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:32
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
|
||||
#, python-format
|
||||
msgid "%(username)s's media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:37
|
||||
#, python-format
|
||||
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
|
||||
msgstr "Mídia de <a href=\"%(user_url)s\"> %(username)s </a> "
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:52
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:32
|
||||
msgid "Sorry, no such user found."
|
||||
msgstr "Desculpe, esse usuário não foi encontrado."
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:60
|
||||
#, python-format
|
||||
msgid "Added on %(date)s."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
|
||||
msgid "Edit"
|
||||
msgstr "Editar"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
|
||||
msgid "Delete"
|
||||
msgstr "Apagar"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
|
||||
#, python-format
|
||||
msgid "%(comment_count)s comment"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:81
|
||||
#, python-format
|
||||
msgid "%(comment_count)s comments"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
|
||||
msgid "No comments yet."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:91
|
||||
msgid "Add one"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:100
|
||||
msgid ""
|
||||
"Type your comment here. You can use <a "
|
||||
"href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> for"
|
||||
" formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:104
|
||||
msgid "Add this comment"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:126
|
||||
msgid "at"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:141
|
||||
#, python-format
|
||||
msgid "<p>❖ Browsing media by <a href=\"%(user_url)s\">%(username)s</a></p>"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
|
||||
#, python-format
|
||||
@@ -428,29 +517,39 @@ msgstr "Nenhuma mídia em processo"
|
||||
msgid "These uploads failed to process:"
|
||||
msgstr "Esses envios não foram processados:"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:39
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:59
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:31
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:89
|
||||
#, python-format
|
||||
msgid "%(username)s's profile"
|
||||
msgstr "Perfil de %(username)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:43
|
||||
msgid "Sorry, no such user found."
|
||||
msgstr "Desculpe, esse usuário não foi encontrado."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:50
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:70
|
||||
msgid "Email verification needed"
|
||||
msgstr "Verificação de email necessária"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:42
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
|
||||
msgid "Almost done! Your account still needs to be activated."
|
||||
msgstr "Quase pronto! Sua conta ainda precisa ser ativada"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:47
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:58
|
||||
msgid ""
|
||||
"An email should arrive in a few moments with instructions on how to do so."
|
||||
msgstr "Um email deve chegar em instantes com instruções de como fazê-lo."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:51
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
|
||||
msgid "In case it doesn't:"
|
||||
msgstr "Caso contrário:"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:54
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:65
|
||||
msgid "Resend verification email"
|
||||
msgstr "Reenviar email de verificação"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:73
|
||||
msgid ""
|
||||
"Someone has registered an account with this username, but it still has to be"
|
||||
" activated."
|
||||
@@ -458,7 +557,7 @@ msgstr ""
|
||||
"Alguém registrou uma conta com esse nome de usuário, mas ainda precisa ser "
|
||||
"ativada."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:68
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:79
|
||||
#, python-format
|
||||
msgid ""
|
||||
"If you are that person but you've lost your verification email, you can <a "
|
||||
@@ -467,30 +566,29 @@ msgstr ""
|
||||
"Se você é essa pessoa, mas você perdeu seu e-mail de verificação, você pode "
|
||||
"<a href=\"%(login_url)s\">efetuar login</a> e reenviá-la."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:78
|
||||
#, python-format
|
||||
msgid "%(username)s's profile"
|
||||
msgstr "Perfil de %(username)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:85
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
|
||||
msgid "Here's a spot to tell others about yourself."
|
||||
msgstr "Aqui é o lugar onde você fala de si para os outros."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:90
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:108
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:101
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
|
||||
msgid "Edit profile"
|
||||
msgstr "Editar perfil"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
|
||||
msgid "This user hasn't filled in their profile (yet)."
|
||||
msgstr "Esse usuário não preencheu seu perfil (ainda)."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:122
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:125
|
||||
msgid "Change account settings"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:138
|
||||
#, python-format
|
||||
msgid "View all of %(username)s's media"
|
||||
msgstr "Ver todas as mídias de %(username)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:135
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:151
|
||||
msgid ""
|
||||
"This is where your media will appear, but you don't seem to have added "
|
||||
"anything yet."
|
||||
@@ -498,11 +596,8 @@ msgstr ""
|
||||
"Aqui é onde sua mídia vai aparecer, mas parece que você não adicionou nada "
|
||||
"ainda."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:141
|
||||
msgid "Add media"
|
||||
msgstr "Adicionar mídia"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:147
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:163
|
||||
#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:72
|
||||
msgid "There doesn't seem to be any media here yet..."
|
||||
msgstr "Aparentemente não há nenhuma mídia aqui ainda..."
|
||||
|
||||
@@ -514,31 +609,57 @@ msgstr "ícone feed"
|
||||
msgid "Atom feed"
|
||||
msgstr "Atom feed"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:40
|
||||
msgid "Newer"
|
||||
msgstr "Mais novo"
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
|
||||
msgid "← Newer"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:46
|
||||
msgid "Older"
|
||||
msgstr "Mais velho"
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
|
||||
msgid "Older →"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/forms.py:24
|
||||
msgid "Comment"
|
||||
msgstr "Comentário"
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
|
||||
msgid "Go to page:"
|
||||
msgstr "Ir a página:"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:27
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:32
|
||||
msgid "newer"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:38
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:43
|
||||
msgid "older"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/tags.html:20
|
||||
msgid "View more media tagged with"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/tags.html:25
|
||||
msgid "or"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/forms.py:30
|
||||
msgid "I am sure I want to delete this"
|
||||
msgstr "Eu tenho certeza de que quero pagar isso"
|
||||
|
||||
#: mediagoblin/user_pages/views.py:142
|
||||
msgid "Empty comments are not allowed."
|
||||
#: mediagoblin/user_pages/views.py:155
|
||||
msgid "Oops, your comment was empty."
|
||||
msgstr "Opa, seu comentáio estava vazio."
|
||||
|
||||
#: mediagoblin/user_pages/views.py:161
|
||||
msgid "Your comment has been posted!"
|
||||
msgstr "Seu comentário foi postado!"
|
||||
|
||||
#: mediagoblin/user_pages/views.py:183
|
||||
msgid "You deleted the media."
|
||||
msgstr "Você deletou a mídia."
|
||||
|
||||
#: mediagoblin/user_pages/views.py:190
|
||||
msgid "The media was not deleted because you didn't check that you were sure."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/views.py:148
|
||||
msgid "Comment posted!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/views.py:181
|
||||
#: mediagoblin/user_pages/views.py:198
|
||||
msgid "You are about to delete another user's media. Proceed with caution."
|
||||
msgstr "Você vai apagar uma mídia de outro usuário. Tenha cuidado."
|
||||
|
||||
|
||||
Binary file not shown.
@@ -1,15 +1,16 @@
|
||||
# Translations template for PROJECT.
|
||||
# Copyright (C) 2011 ORGANIZATION
|
||||
# Copyright (C) 2012 ORGANIZATION
|
||||
# This file is distributed under the same license as the PROJECT project.
|
||||
#
|
||||
# Translators:
|
||||
# <gapop@hotmail.com>, 2011.
|
||||
# George Pop <gapop@hotmail.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-11-01 23:14-0500\n"
|
||||
"PO-Revision-Date: 2011-11-02 04:13+0000\n"
|
||||
"POT-Creation-Date: 2012-01-07 13:47-0600\n"
|
||||
"PO-Revision-Date: 2012-01-07 19:44+0000\n"
|
||||
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -19,27 +20,19 @@ msgstr ""
|
||||
"Language: ro\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1))\n"
|
||||
|
||||
#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:49
|
||||
#: mediagoblin/processing.py:143
|
||||
msgid "Invalid file given for media type."
|
||||
msgstr "Formatul fișierului nu corespunde cu tipul de media selectat."
|
||||
|
||||
#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:41
|
||||
msgid "Username"
|
||||
msgstr "Nume de utilizator"
|
||||
|
||||
#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:53
|
||||
#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:45
|
||||
msgid "Password"
|
||||
msgstr "Parolă"
|
||||
|
||||
#: mediagoblin/auth/forms.py:35
|
||||
msgid "Passwords must match."
|
||||
msgstr "Parolele trebuie să fie identice."
|
||||
|
||||
#: mediagoblin/auth/forms.py:37
|
||||
msgid "Confirm password"
|
||||
msgstr "Reintrodu parola"
|
||||
|
||||
#: mediagoblin/auth/forms.py:39
|
||||
msgid "Type it again here to make sure there are no spelling mistakes."
|
||||
msgstr "Introdu parola din nou pentru verificare."
|
||||
|
||||
#: mediagoblin/auth/forms.py:42
|
||||
#: mediagoblin/auth/forms.py:34
|
||||
msgid "Email address"
|
||||
msgstr "Adresa de e-mail"
|
||||
|
||||
@@ -52,108 +45,174 @@ 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:77
|
||||
msgid "Sorry, that email address has already been taken."
|
||||
msgstr "Ne pare rău, această adresă de e-mail este deja rezervată."
|
||||
msgid "Sorry, a user with that email address already exists."
|
||||
msgstr "Există deja un utilizator înregistrat cu această adresă de e-mail."
|
||||
|
||||
#: mediagoblin/auth/views.py:179
|
||||
#: mediagoblin/auth/views.py:180
|
||||
msgid ""
|
||||
"Your email address has been verified. You may now login, edit your profile, "
|
||||
"and submit images!"
|
||||
msgstr ""
|
||||
"Adresa ta de e-mail a fost confirmată. Poți să te autentifici, să îți "
|
||||
"Adresa ta de e-mail a fost verificată. Poți să te autentifici, să îți "
|
||||
"completezi profilul și să trimiți imagini!"
|
||||
|
||||
#: mediagoblin/auth/views.py:185
|
||||
#: mediagoblin/auth/views.py:186
|
||||
msgid "The verification key or user id is incorrect"
|
||||
msgstr "Cheie de verificare sau user ID incorect."
|
||||
|
||||
#: mediagoblin/auth/views.py:207
|
||||
#: mediagoblin/auth/views.py:204
|
||||
msgid "You must be logged in so we know who to send the email to!"
|
||||
msgstr "Trebuie să fii autentificat ca să știm cui să trimitem mesajul!"
|
||||
|
||||
#: mediagoblin/auth/views.py:212
|
||||
msgid "You've already verified your email address!"
|
||||
msgstr "Adresa ta de e-mail a fost deja verificată!"
|
||||
|
||||
#: mediagoblin/auth/views.py:225
|
||||
msgid "Resent your verification email."
|
||||
msgstr "E-mail-ul de verificare a fost retrimis."
|
||||
|
||||
#: mediagoblin/auth/views.py:248
|
||||
#: mediagoblin/auth/views.py:260
|
||||
msgid ""
|
||||
"An email has been sent with instructions on how to change your password."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:270
|
||||
msgid ""
|
||||
"Could not send password recovery email as your username is inactive or your "
|
||||
"account's email address has not been verified."
|
||||
msgstr ""
|
||||
"E-mailul pentru recuperarea parolei nu a putut fi trimis deoarece contul tău"
|
||||
" e inactiv sau adresa ta de e-mail nu a fost confirmată."
|
||||
" e inactiv sau adresa ta de e-mail nu a fost verificată."
|
||||
|
||||
#: mediagoblin/auth/views.py:282
|
||||
msgid "Couldn't find someone with that username or email."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:330
|
||||
msgid "You can now log in using your new password."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:24 mediagoblin/submit/forms.py:27
|
||||
msgid "Title"
|
||||
msgstr "Titlu"
|
||||
|
||||
#: mediagoblin/edit/forms.py:28 mediagoblin/submit/forms.py:32
|
||||
msgid "Tags"
|
||||
msgstr "Etichete"
|
||||
#: mediagoblin/edit/forms.py:27 mediagoblin/submit/forms.py:30
|
||||
msgid "Description of this work"
|
||||
msgstr "Descrierea acestui fișier"
|
||||
|
||||
#: mediagoblin/edit/forms.py:31
|
||||
#: mediagoblin/edit/forms.py:28 mediagoblin/submit/forms.py:31
|
||||
msgid ""
|
||||
"You can use\n"
|
||||
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
|
||||
" Markdown</a> for formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:32 mediagoblin/submit/forms.py:35
|
||||
msgid "Tags"
|
||||
msgstr "Tag-uri"
|
||||
|
||||
#: mediagoblin/edit/forms.py:34 mediagoblin/submit/forms.py:37
|
||||
msgid "Separate tags by commas."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:37
|
||||
msgid "Slug"
|
||||
msgstr "Identificator"
|
||||
|
||||
#: mediagoblin/edit/forms.py:32
|
||||
#: mediagoblin/edit/forms.py:38
|
||||
msgid "The slug can't be empty"
|
||||
msgstr "Identificatorul nu poate să lipsească"
|
||||
|
||||
#: mediagoblin/edit/forms.py:33
|
||||
#: mediagoblin/edit/forms.py:39
|
||||
msgid ""
|
||||
"The title part of this media's URL. You usually don't need to change this."
|
||||
"The title part of this media's address. You usually don't need to change "
|
||||
"this."
|
||||
msgstr ""
|
||||
"Partea din adresa acestui fișier corespunzătoare titlului. De regulă nu "
|
||||
"trebuie modificată."
|
||||
|
||||
#: mediagoblin/edit/forms.py:40
|
||||
#: mediagoblin/edit/forms.py:46
|
||||
msgid "Bio"
|
||||
msgstr "Biografie"
|
||||
|
||||
#: mediagoblin/edit/forms.py:43
|
||||
#: mediagoblin/edit/forms.py:48
|
||||
msgid ""
|
||||
"You can use\n"
|
||||
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
|
||||
" Markdown</a> for formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:53
|
||||
msgid "Website"
|
||||
msgstr "Sit Web"
|
||||
|
||||
#: mediagoblin/edit/views.py:64
|
||||
#: mediagoblin/edit/forms.py:60
|
||||
msgid "Old password"
|
||||
msgstr "Vechea parolă"
|
||||
|
||||
#: mediagoblin/edit/forms.py:62
|
||||
msgid "Enter your old password to prove you own this account."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:65
|
||||
msgid "New password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:65
|
||||
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:85
|
||||
#: mediagoblin/edit/views.py:86
|
||||
msgid "You are editing another user's media. Proceed with caution."
|
||||
msgstr "Editezi fișierul unui alt utilizator. Se recomandă prudență."
|
||||
|
||||
#: mediagoblin/edit/views.py:155
|
||||
#: mediagoblin/edit/views.py:156
|
||||
msgid "You are editing a user's profile. Proceed with caution."
|
||||
msgstr "Editezi profilul unui utilizator. Se recomandă prudență."
|
||||
|
||||
#: mediagoblin/process_media/errors.py:44
|
||||
msgid "Invalid file given for media type."
|
||||
msgstr "Formatul fișierului nu corespunde cu tipul de media selectat."
|
||||
#: mediagoblin/edit/views.py:174
|
||||
msgid "Profile changes saved"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:200
|
||||
msgid "Wrong password"
|
||||
msgstr "Parolă incorectă"
|
||||
|
||||
#: mediagoblin/edit/views.py:216
|
||||
msgid "Account settings saved"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/media_types/__init__.py:77
|
||||
msgid "Could not extract any file extension from \"{filename}\""
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/media_types/__init__.py:88
|
||||
msgid "Sorry, I don't support that file type :("
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/submit/forms.py:25
|
||||
msgid "File"
|
||||
msgstr "Fișier"
|
||||
|
||||
#: mediagoblin/submit/forms.py:30
|
||||
msgid "Description of this work"
|
||||
msgstr "Descrierea acestui fișier"
|
||||
|
||||
#: mediagoblin/submit/views.py:46
|
||||
#: mediagoblin/submit/views.py:50
|
||||
msgid "You must provide a file."
|
||||
msgstr "Trebuie să selectezi un fișier."
|
||||
|
||||
#: mediagoblin/submit/views.py:49
|
||||
msgid "The file doesn't seem to be an image!"
|
||||
msgstr "Fișierul nu pare a fi o imagine!"
|
||||
|
||||
#: mediagoblin/submit/views.py:121
|
||||
#: mediagoblin/submit/views.py:128
|
||||
msgid "Woohoo! Submitted!"
|
||||
msgstr "Gata, trimis!"
|
||||
msgstr "Ura! Trimis!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:21
|
||||
#: mediagoblin/templates/mediagoblin/404.html:22
|
||||
msgid "Image of 404 goblin stressing out"
|
||||
msgstr "Imagine cu elful 404 stresat."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:23
|
||||
msgid "Oops!"
|
||||
msgstr "Oops!"
|
||||
msgstr "Hopa!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:24
|
||||
msgid "There doesn't seem to be a page at this address. Sorry!"
|
||||
msgstr "Ne pare rău, nu există nicio pagină la această adresă."
|
||||
msgstr "Nu există nicio pagină la această adresă. Ne pare rău!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:26
|
||||
msgid ""
|
||||
@@ -163,33 +222,30 @@ msgstr ""
|
||||
"Dacă ești sigur că adresa e corectă, poate că pagina pe care o cauți a fost "
|
||||
"mutată sau ștearsă."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:32
|
||||
msgid "Image of 404 goblin stressing out"
|
||||
msgstr "Imagine cu elful 404 stresat."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:22
|
||||
msgid "GNU MediaGoblin"
|
||||
msgstr "GNU MediaGoblin"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:47
|
||||
#: mediagoblin/templates/mediagoblin/base.html:48
|
||||
msgid "MediaGoblin logo"
|
||||
msgstr "logo MediaGoblin"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:52
|
||||
msgid "Submit media"
|
||||
msgstr "Transmite un fișier media"
|
||||
#: mediagoblin/templates/mediagoblin/base.html:53
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:157
|
||||
msgid "Add media"
|
||||
msgstr "Trimite fișier"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:63
|
||||
msgid "verify your email!"
|
||||
msgstr "verifică e-mail-ul!"
|
||||
#: mediagoblin/templates/mediagoblin/base.html:64
|
||||
msgid "Verify your email!"
|
||||
msgstr "Verifică adresa de e-mail!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:73
|
||||
#: mediagoblin/templates/mediagoblin/base.html:71
|
||||
msgid "log out"
|
||||
msgstr "ieșire"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:74
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:27
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:35
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:45
|
||||
msgid "Log in"
|
||||
msgstr "Autentificare"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:89
|
||||
#: mediagoblin/templates/mediagoblin/base.html:86
|
||||
msgid ""
|
||||
"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
|
||||
"href=\"http://gnu.org/\">GNU</a> project"
|
||||
@@ -201,92 +257,57 @@ msgstr ""
|
||||
msgid "Explore"
|
||||
msgstr "Explorează"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:27
|
||||
msgid "Hi there, media lover! MediaGoblin is..."
|
||||
msgstr "Bună! MediaGoblin este..."
|
||||
#: mediagoblin/templates/mediagoblin/root.html:26
|
||||
msgid "Hi there, welcome to this MediaGoblin site!"
|
||||
msgstr "Salut, bine ai venit pe acest site MediaGoblin!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:28
|
||||
msgid ""
|
||||
"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
|
||||
"extraordinarily great piece of media hosting software."
|
||||
msgstr ""
|
||||
"Acest site folosește <a href=\"http://mediagoblin.org\">MediaGoblin</a>, un "
|
||||
"software excepțional pentru găzduirea fișierelor media."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:29
|
||||
msgid "The perfect place for your media!"
|
||||
msgstr "Locul perfect pentru fișierele tale media!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:30
|
||||
msgid ""
|
||||
"A place for people to collaborate and show off original and derived "
|
||||
"creations!"
|
||||
"To add your own media, place comments, save your favourites and more, you "
|
||||
"can log in with your MediaGoblin account."
|
||||
msgstr ""
|
||||
"Un loc unde oamenii colaborează și își expun creațiile originale și "
|
||||
"derivate!"
|
||||
"Ca să adăugi propriile tale fișiere, să scrii comentarii, să salvezi "
|
||||
"favoritele tale și multe altele, autentifică-te cu contul tău MediaGoblin."
|
||||
|
||||
#: 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 ""
|
||||
"Liber. (Suntem un proiect <a href=\"http://gnu.org\">GNU</a>, până la urmă.)"
|
||||
msgid "Don't have one yet? It's easy!"
|
||||
msgstr "Încă nu ai unul? E simplu!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:32
|
||||
msgid ""
|
||||
"Aiming to make the world a better place through decentralization and "
|
||||
"(eventually, coming soon!) federation!"
|
||||
msgstr ""
|
||||
"Un pas spre o lume mai bună prin descentralizare și (în curând) "
|
||||
"federalizare!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:33
|
||||
msgid ""
|
||||
"Built for extensibility. (Multiple media types coming soon to the software,"
|
||||
" including video support!)"
|
||||
msgstr ""
|
||||
"Proiectat să fie extensibil. (Software-ul va avea în curând suport pentru "
|
||||
"mai multe formate de media, inclusiv pentru video!)"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:34
|
||||
msgid ""
|
||||
"Powered by people like you. (<a "
|
||||
"href=\"http://mediagoblin.org/pages/join.html\">You can help us improve this"
|
||||
" software!</a>)"
|
||||
msgstr ""
|
||||
"Animat de oameni ca tine. (<a "
|
||||
"href=\"http://mediagoblin.org/pages/join.html\">Ne poți ajuta să îmbunătățim"
|
||||
" acest software!</a>)"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:38
|
||||
msgid "Excited to join us?"
|
||||
msgstr "Vrei să ni te alături?"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:39
|
||||
#, python-format
|
||||
msgid ""
|
||||
"<a class=\"header_submit_highlight\" href=\"%(register_url)s\">Create a free account</a>\n"
|
||||
" or\n"
|
||||
" <a class=\"header_submit\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
|
||||
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Create an account at this site</a>\n"
|
||||
" or\n"
|
||||
" <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
|
||||
msgstr ""
|
||||
"<a class=\"header_submit_highlight\" href=\"%(register_url)s\">Creează gratuit un cont</a>\n"
|
||||
" sau\n"
|
||||
" <a class=\"header_submit\" href=\"http://wiki.mediagoblin.org/HackingHowto\">instalează MediaGoblin pe serverul tău</a>"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:53
|
||||
#: mediagoblin/templates/mediagoblin/root.html:40
|
||||
msgid "Most recent media"
|
||||
msgstr "Cele mai recente fișiere"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:29
|
||||
msgid "Enter your new password"
|
||||
msgstr "Introdu noua parolă"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:29
|
||||
msgid "Enter your username or email"
|
||||
msgstr "Introdu numele de utilizator sau adresa de e-mail"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_changed_success.html:22
|
||||
msgid "Your password has been changed. Try to log in now."
|
||||
msgstr "Parola a fost schimbată. Încearcă să te autentifici acum."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_email_sent.html:22
|
||||
msgid ""
|
||||
"Check your inbox. We sent an email with a URL for changing your password."
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:32
|
||||
msgid "Set your new password"
|
||||
msgstr ""
|
||||
"Verifică-ți căsuța de e-mail. Ți-am trimis un mesaj cu link-ul pentru "
|
||||
"schimbarea parolei."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:35
|
||||
msgid "Set password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:27
|
||||
msgid "Recover password"
|
||||
msgstr "Recuperează parola"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:30
|
||||
msgid "Send instructions"
|
||||
msgstr "Trimite instrucțiuni"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_verification_email.txt:19
|
||||
#, python-format
|
||||
@@ -313,27 +334,23 @@ msgstr ""
|
||||
msgid "Logging in failed!"
|
||||
msgstr "Autentificare eșuată!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:43
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:35
|
||||
msgid "Don't have an account yet?"
|
||||
msgstr "Nu ai un cont?"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:46
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:36
|
||||
msgid "Create one here!"
|
||||
msgstr "Creează-l aici!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:49
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:42
|
||||
msgid "Forgot your password?"
|
||||
msgstr "Ai uitat parola?"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:52
|
||||
msgid "Change it!"
|
||||
msgstr "Schimb-o!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:27
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:32
|
||||
msgid "Create an account!"
|
||||
msgstr "Creează un cont!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:31
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:36
|
||||
msgid "Create"
|
||||
msgstr "Creează"
|
||||
|
||||
@@ -364,36 +381,114 @@ msgid "Cancel"
|
||||
msgstr "Anulare"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit.html:37
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
|
||||
msgid "Save changes"
|
||||
msgstr "Salvează modificările"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:34
|
||||
#, python-format
|
||||
msgid "Changing %(username)s's account settings"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:29
|
||||
#, python-format
|
||||
msgid "Editing %(username)s's profile"
|
||||
msgstr "Editare profil %(username)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:31
|
||||
msgid "Media tagged with:"
|
||||
msgstr "Etichete:"
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:30
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:35
|
||||
#, python-format
|
||||
msgid "Media tagged with: %(tag_name)s"
|
||||
msgstr "Fișier etichetat cu tag-urile: %(tag_name)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:46
|
||||
msgid "Original"
|
||||
msgstr "Original"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:33
|
||||
msgid ""
|
||||
"Sorry, this video will not work because \n"
|
||||
"\t your web browser does not support HTML5 \n"
|
||||
"\t video."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:36
|
||||
msgid ""
|
||||
"You can get a modern web browser that \n"
|
||||
"\t can play this video at <a href=\"http://getfirefox.com\">\n"
|
||||
"\t http://getfirefox.com</a>!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/submit/start.html:26
|
||||
msgid "Submit yer media"
|
||||
msgstr "Trimite fișierele tale media"
|
||||
msgid "Add your media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/submit/start.html:30
|
||||
msgid "Submit"
|
||||
msgstr "Trimite"
|
||||
msgid "Add"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:32
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
|
||||
#, python-format
|
||||
msgid "%(username)s's media"
|
||||
msgstr "Fișierele lui %(username)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:37
|
||||
#, python-format
|
||||
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
|
||||
msgstr "Fișierele media ale lui <a href=\"%(user_url)s\">%(username)s</a>"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:52
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:32
|
||||
msgid "Sorry, no such user found."
|
||||
msgstr "Ne pare rău, nu am găsit utilizatorul căutat."
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:60
|
||||
#, python-format
|
||||
msgid "Added on %(date)s."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
|
||||
msgid "Edit"
|
||||
msgstr "Editare"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
|
||||
msgid "Delete"
|
||||
msgstr "Șterge"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
|
||||
#, python-format
|
||||
msgid "%(comment_count)s comment"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:81
|
||||
#, python-format
|
||||
msgid "%(comment_count)s comments"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
|
||||
msgid "No comments yet."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:91
|
||||
msgid "Add one"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:100
|
||||
msgid ""
|
||||
"Type your comment here. You can use <a "
|
||||
"href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> for"
|
||||
" formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:104
|
||||
msgid "Add this comment"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:126
|
||||
msgid "at"
|
||||
msgstr "la"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:141
|
||||
#, python-format
|
||||
msgid "<p>❖ Browsing media by <a href=\"%(user_url)s\">%(username)s</a></p>"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
|
||||
#, python-format
|
||||
@@ -425,29 +520,39 @@ msgstr "Niciun fișier în curs de procesare"
|
||||
msgid "These uploads failed to process:"
|
||||
msgstr "Aceste fișiere nu au putut fi procesate:"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:39
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:59
|
||||
msgid "Email verification needed"
|
||||
msgstr "Este necesară confirmarea adresei de e-mail"
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:31
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:89
|
||||
#, python-format
|
||||
msgid "%(username)s's profile"
|
||||
msgstr "Profil %(username)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:42
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:43
|
||||
msgid "Sorry, no such user found."
|
||||
msgstr "Ne pare rău, nu am găsit utilizatorul căutat."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:50
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:70
|
||||
msgid "Email verification needed"
|
||||
msgstr "Este necesară verificarea adresei de e-mail"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
|
||||
msgid "Almost done! Your account still needs to be activated."
|
||||
msgstr "Aproape gata! Mai trebuie doar să activezi contul."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:47
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:58
|
||||
msgid ""
|
||||
"An email should arrive in a few moments with instructions on how to do so."
|
||||
msgstr "Vei primi în scurt timp un e-mail cu instrucțiuni."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:51
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
|
||||
msgid "In case it doesn't:"
|
||||
msgstr "Dacă nu-l primești:"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:54
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:65
|
||||
msgid "Resend verification email"
|
||||
msgstr "Retrimite mesajul de verificare"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:73
|
||||
msgid ""
|
||||
"Someone has registered an account with this username, but it still has to be"
|
||||
" activated."
|
||||
@@ -455,7 +560,7 @@ msgstr ""
|
||||
"Cineva a înregistrat un cont cu acest nume de utilizator, dar contul nu a "
|
||||
"fost încă activat."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:68
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:79
|
||||
#, python-format
|
||||
msgid ""
|
||||
"If you are that person but you've lost your verification email, you can <a "
|
||||
@@ -464,30 +569,29 @@ msgstr ""
|
||||
"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
|
||||
msgid "%(username)s's profile"
|
||||
msgstr "Profil %(username)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:85
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
|
||||
msgid "Here's a spot to tell others about yourself."
|
||||
msgstr "Aici poți spune altora ceva despre tine."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:90
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:108
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:101
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
|
||||
msgid "Edit profile"
|
||||
msgstr "Editare profil"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
|
||||
msgid "This user hasn't filled in their profile (yet)."
|
||||
msgstr "Acest utilizator nu și-a completat (încă) profilul."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:122
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:125
|
||||
msgid "Change account settings"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:138
|
||||
#, python-format
|
||||
msgid "View all of %(username)s's media"
|
||||
msgstr "Vezi toate fișierele media ale lui %(username)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:135
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:151
|
||||
msgid ""
|
||||
"This is where your media will appear, but you don't seem to have added "
|
||||
"anything yet."
|
||||
@@ -495,11 +599,8 @@ msgstr ""
|
||||
"Aici vor apărea fișierele tale media, dar se pare că încă nu ai trimis "
|
||||
"nimic."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:141
|
||||
msgid "Add media"
|
||||
msgstr "Trimite fișier"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:147
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:163
|
||||
#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:72
|
||||
msgid "There doesn't seem to be any media here yet..."
|
||||
msgstr "Nu pare să existe niciun fișier media deocamdată..."
|
||||
|
||||
@@ -511,31 +612,57 @@ msgstr "icon feed"
|
||||
msgid "Atom feed"
|
||||
msgstr "feed Atom"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:40
|
||||
msgid "Newer"
|
||||
msgstr "Mai noi"
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
|
||||
msgid "← Newer"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:46
|
||||
msgid "Older"
|
||||
msgstr "Mai vechi"
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
|
||||
msgid "Older →"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/forms.py:24
|
||||
msgid "Comment"
|
||||
msgstr "Scrie un comentariu"
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
|
||||
msgid "Go to page:"
|
||||
msgstr "Salt la pagina:"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:27
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:32
|
||||
msgid "newer"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:38
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:43
|
||||
msgid "older"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/tags.html:20
|
||||
msgid "View more media tagged with"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/tags.html:25
|
||||
msgid "or"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/forms.py:30
|
||||
msgid "I am sure I want to delete this"
|
||||
msgstr "Sunt sigur că doresc să șterg"
|
||||
|
||||
#: mediagoblin/user_pages/views.py:142
|
||||
msgid "Empty comments are not allowed."
|
||||
msgstr ""
|
||||
#: mediagoblin/user_pages/views.py:155
|
||||
msgid "Oops, your comment was empty."
|
||||
msgstr "Hopa, ai uitat să scrii comentariul."
|
||||
|
||||
#: mediagoblin/user_pages/views.py:148
|
||||
msgid "Comment posted!"
|
||||
msgstr ""
|
||||
#: mediagoblin/user_pages/views.py:161
|
||||
msgid "Your comment has been posted!"
|
||||
msgstr "Comentariul tău a fost trimis!"
|
||||
|
||||
#: mediagoblin/user_pages/views.py:181
|
||||
#: mediagoblin/user_pages/views.py:183
|
||||
msgid "You deleted the media."
|
||||
msgstr "Ai șters acest fișier"
|
||||
|
||||
#: mediagoblin/user_pages/views.py:190
|
||||
msgid "The media was not deleted because you didn't check that you were sure."
|
||||
msgstr "Fișierul nu a fost șters deoarece nu ai confirmat că ești sigur."
|
||||
|
||||
#: mediagoblin/user_pages/views.py:198
|
||||
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ă "
|
||||
|
||||
Binary file not shown.
@@ -1,5 +1,5 @@
|
||||
# Translations template for PROJECT.
|
||||
# Copyright (C) 2011 ORGANIZATION
|
||||
# Copyright (C) 2012 ORGANIZATION
|
||||
# This file is distributed under the same license as the PROJECT project.
|
||||
#
|
||||
# Translators:
|
||||
@@ -8,8 +8,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: GNU MediaGoblin\n"
|
||||
"Report-Msgid-Bugs-To: http://bugs.foocorp.net/projects/mediagoblin/issues\n"
|
||||
"POT-Creation-Date: 2011-11-01 23:14-0500\n"
|
||||
"PO-Revision-Date: 2011-11-02 04:13+0000\n"
|
||||
"POT-Creation-Date: 2012-01-07 13:47-0600\n"
|
||||
"PO-Revision-Date: 2012-01-07 19:44+0000\n"
|
||||
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -19,27 +19,19 @@ msgstr ""
|
||||
"Language: ru\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
|
||||
|
||||
#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:49
|
||||
#: mediagoblin/processing.py:143
|
||||
msgid "Invalid file given for media type."
|
||||
msgstr "Неправильный формат файла."
|
||||
|
||||
#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:41
|
||||
msgid "Username"
|
||||
msgstr "Логин"
|
||||
|
||||
#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:53
|
||||
#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:45
|
||||
msgid "Password"
|
||||
msgstr "Пароль"
|
||||
|
||||
#: mediagoblin/auth/forms.py:35
|
||||
msgid "Passwords must match."
|
||||
msgstr "Пароли должны совпадать."
|
||||
|
||||
#: mediagoblin/auth/forms.py:37
|
||||
msgid "Confirm password"
|
||||
msgstr "Подтвердите пароль"
|
||||
|
||||
#: mediagoblin/auth/forms.py:39
|
||||
msgid "Type it again here to make sure there are no spelling mistakes."
|
||||
msgstr "Наберите его ещё раз здесь, чтобы избежать опечаток."
|
||||
|
||||
#: mediagoblin/auth/forms.py:42
|
||||
#: mediagoblin/auth/forms.py:34
|
||||
msgid "Email address"
|
||||
msgstr "Адрес электронной почты"
|
||||
|
||||
@@ -52,10 +44,12 @@ msgid "Sorry, a user with that name already exists."
|
||||
msgstr "Извините, пользователь с этим именем уже зарегистрирован."
|
||||
|
||||
#: mediagoblin/auth/views.py:77
|
||||
msgid "Sorry, that email address has already been taken."
|
||||
msgstr "Извините, этот адрес электронной почты уже занят."
|
||||
msgid "Sorry, a user with that email address already exists."
|
||||
msgstr ""
|
||||
"Сожалеем, но на этот адрес электронной почты уже зарегистрирована другая "
|
||||
"учётная запись."
|
||||
|
||||
#: mediagoblin/auth/views.py:179
|
||||
#: mediagoblin/auth/views.py:180
|
||||
msgid ""
|
||||
"Your email address has been verified. You may now login, edit your profile, "
|
||||
"and submit images!"
|
||||
@@ -63,15 +57,28 @@ msgstr ""
|
||||
"Адрес вашей электронной потвержден. Вы теперь можете войти и начать "
|
||||
"редактировать свой профиль и загружать новые изображения!"
|
||||
|
||||
#: mediagoblin/auth/views.py:185
|
||||
#: mediagoblin/auth/views.py:186
|
||||
msgid "The verification key or user id is incorrect"
|
||||
msgstr "Неверный ключ проверки или идентификатор пользователя"
|
||||
|
||||
#: mediagoblin/auth/views.py:207
|
||||
#: mediagoblin/auth/views.py:204
|
||||
msgid "You must be logged in so we know who to send the email to!"
|
||||
msgstr "Вам надо представиться, чтобы мы знали, кому отправлять сообщение!"
|
||||
|
||||
#: mediagoblin/auth/views.py:212
|
||||
msgid "You've already verified your email address!"
|
||||
msgstr "Вы уже потвердили свой адрес электронной почты!"
|
||||
|
||||
#: mediagoblin/auth/views.py:225
|
||||
msgid "Resent your verification email."
|
||||
msgstr "Переслать сообщение с подтверждением аккаунта."
|
||||
|
||||
#: mediagoblin/auth/views.py:248
|
||||
#: mediagoblin/auth/views.py:260
|
||||
msgid ""
|
||||
"An email has been sent with instructions on how to change your password."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:270
|
||||
msgid ""
|
||||
"Could not send password recovery email as your username is inactive or your "
|
||||
"account's email address has not been verified."
|
||||
@@ -80,75 +87,128 @@ msgstr ""
|
||||
"учётная запись неактивна, либо указанный в ней адрес электронной почты не "
|
||||
"был подтверждён."
|
||||
|
||||
#: mediagoblin/auth/views.py:282
|
||||
msgid "Couldn't find someone with that username or email."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:330
|
||||
msgid "You can now log in using your new password."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:24 mediagoblin/submit/forms.py:27
|
||||
msgid "Title"
|
||||
msgstr "Название"
|
||||
|
||||
#: mediagoblin/edit/forms.py:28 mediagoblin/submit/forms.py:32
|
||||
#: mediagoblin/edit/forms.py:27 mediagoblin/submit/forms.py:30
|
||||
msgid "Description of this work"
|
||||
msgstr "Описание этого произведения"
|
||||
|
||||
#: mediagoblin/edit/forms.py:28 mediagoblin/submit/forms.py:31
|
||||
msgid ""
|
||||
"You can use\n"
|
||||
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
|
||||
" Markdown</a> for formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:32 mediagoblin/submit/forms.py:35
|
||||
msgid "Tags"
|
||||
msgstr "Метки"
|
||||
|
||||
#: mediagoblin/edit/forms.py:31
|
||||
#: mediagoblin/edit/forms.py:34 mediagoblin/submit/forms.py:37
|
||||
msgid "Separate tags by commas."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:37
|
||||
msgid "Slug"
|
||||
msgstr "Отличительная часть адреса"
|
||||
|
||||
#: mediagoblin/edit/forms.py:32
|
||||
#: mediagoblin/edit/forms.py:38
|
||||
msgid "The slug can't be empty"
|
||||
msgstr "Отличительная часть адреса необходима"
|
||||
|
||||
#: mediagoblin/edit/forms.py:33
|
||||
#: mediagoblin/edit/forms.py:39
|
||||
msgid ""
|
||||
"The title part of this media's URL. You usually don't need to change this."
|
||||
"The title part of this media's address. You usually don't need to change "
|
||||
"this."
|
||||
msgstr ""
|
||||
"Часть адреса этого файла, производная от его названия. Её обычно не нужно "
|
||||
"изменять."
|
||||
|
||||
#: mediagoblin/edit/forms.py:40
|
||||
#: mediagoblin/edit/forms.py:46
|
||||
msgid "Bio"
|
||||
msgstr "Биография"
|
||||
|
||||
#: mediagoblin/edit/forms.py:43
|
||||
#: mediagoblin/edit/forms.py:48
|
||||
msgid ""
|
||||
"You can use\n"
|
||||
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
|
||||
" Markdown</a> for formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:53
|
||||
msgid "Website"
|
||||
msgstr "Сайт"
|
||||
|
||||
#: mediagoblin/edit/views.py:64
|
||||
#: mediagoblin/edit/forms.py:60
|
||||
msgid "Old password"
|
||||
msgstr "Старый пароль"
|
||||
|
||||
#: mediagoblin/edit/forms.py:62
|
||||
msgid "Enter your old password to prove you own this account."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:65
|
||||
msgid "New password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:65
|
||||
msgid "An entry with that slug already exists for this user."
|
||||
msgstr ""
|
||||
"У этого пользователя уже есть файл с такой отличительной частью адреса."
|
||||
|
||||
#: mediagoblin/edit/views.py:85
|
||||
#: mediagoblin/edit/views.py:86
|
||||
msgid "You are editing another user's media. Proceed with caution."
|
||||
msgstr "Вы редактируете файлы другого пользователя. Будьте осторожны."
|
||||
|
||||
#: mediagoblin/edit/views.py:155
|
||||
#: mediagoblin/edit/views.py:156
|
||||
msgid "You are editing a user's profile. Proceed with caution."
|
||||
msgstr "Вы редактируете профиль пользователя. Будьте осторожны."
|
||||
|
||||
#: mediagoblin/process_media/errors.py:44
|
||||
msgid "Invalid file given for media type."
|
||||
msgstr "Неправильный формат файла."
|
||||
#: mediagoblin/edit/views.py:174
|
||||
msgid "Profile changes saved"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:200
|
||||
msgid "Wrong password"
|
||||
msgstr "Неправильный пароль"
|
||||
|
||||
#: mediagoblin/edit/views.py:216
|
||||
msgid "Account settings saved"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/media_types/__init__.py:77
|
||||
msgid "Could not extract any file extension from \"{filename}\""
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/media_types/__init__.py:88
|
||||
msgid "Sorry, I don't support that file type :("
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/submit/forms.py:25
|
||||
msgid "File"
|
||||
msgstr "Файл"
|
||||
|
||||
#: mediagoblin/submit/forms.py:30
|
||||
msgid "Description of this work"
|
||||
msgstr "Описание этого произведения"
|
||||
|
||||
#: mediagoblin/submit/views.py:46
|
||||
#: mediagoblin/submit/views.py:50
|
||||
msgid "You must provide a file."
|
||||
msgstr "Вы должны загрузить файл."
|
||||
|
||||
#: mediagoblin/submit/views.py:49
|
||||
msgid "The file doesn't seem to be an image!"
|
||||
msgstr "Файл, похоже, не является картинкой!"
|
||||
|
||||
#: mediagoblin/submit/views.py:121
|
||||
#: mediagoblin/submit/views.py:128
|
||||
msgid "Woohoo! Submitted!"
|
||||
msgstr "Ура! Файл загружен!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:21
|
||||
#: mediagoblin/templates/mediagoblin/404.html:22
|
||||
msgid "Image of 404 goblin stressing out"
|
||||
msgstr "Изображение 404 нервничающего гоблина"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:23
|
||||
msgid "Oops!"
|
||||
msgstr "Ой!"
|
||||
|
||||
@@ -160,35 +220,32 @@ msgstr "Кажется, такой страницы не существует.
|
||||
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 "Изображение 404 нервничающего гоблина"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:22
|
||||
msgid "GNU MediaGoblin"
|
||||
msgstr "GNU MediaGoblin"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:47
|
||||
#: mediagoblin/templates/mediagoblin/base.html:48
|
||||
msgid "MediaGoblin logo"
|
||||
msgstr "Символ MediaGoblin"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:52
|
||||
msgid "Submit media"
|
||||
msgstr "Загрузить файл"
|
||||
#: mediagoblin/templates/mediagoblin/base.html:53
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:157
|
||||
msgid "Add media"
|
||||
msgstr "Добавить файлы"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:63
|
||||
msgid "verify your email!"
|
||||
msgstr "подтвердите ваш адрес электронной почты!"
|
||||
#: mediagoblin/templates/mediagoblin/base.html:64
|
||||
msgid "Verify your email!"
|
||||
msgstr "Подтвердите ваш адрес электронной почты!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:73
|
||||
#: mediagoblin/templates/mediagoblin/base.html:71
|
||||
msgid "log out"
|
||||
msgstr "завершение сеанса"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:74
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:27
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:35
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:45
|
||||
msgid "Log in"
|
||||
msgstr "Войти"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:89
|
||||
#: mediagoblin/templates/mediagoblin/base.html:86
|
||||
msgid ""
|
||||
"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
|
||||
"href=\"http://gnu.org/\">GNU</a> project"
|
||||
@@ -198,89 +255,61 @@ msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:24
|
||||
msgid "Explore"
|
||||
msgstr ""
|
||||
msgstr "Смотреть"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:27
|
||||
msgid "Hi there, media lover! MediaGoblin is..."
|
||||
msgstr "Привет, любитель мультимедиа! MediaGoblin…"
|
||||
#: mediagoblin/templates/mediagoblin/root.html:26
|
||||
msgid "Hi there, welcome to this MediaGoblin site!"
|
||||
msgstr "Привет! Добро пожаловать на наш MediaGoblin’овый сайт!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:28
|
||||
msgid ""
|
||||
"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
|
||||
"extraordinarily great piece of media hosting software."
|
||||
msgstr ""
|
||||
"Этот сайт работает на <a href=\"http://mediagoblin.org\">MediaGoblin</a>, "
|
||||
"необыкновенно замечательном ПО для хостинга мультимедийных файлов."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:29
|
||||
msgid "The perfect place for your media!"
|
||||
msgstr "Отличное место для ваших файлов!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:30
|
||||
msgid ""
|
||||
"A place for people to collaborate and show off original and derived "
|
||||
"creations!"
|
||||
"To add your own media, place comments, save your favourites and more, you "
|
||||
"can log in with your MediaGoblin account."
|
||||
msgstr ""
|
||||
"Место для того, чтобы совместно работать или просто показать свои "
|
||||
"оригинальные и/или заимствованные создания!"
|
||||
"Для добавления собственных файлов, комментирования, ведения списка любимых "
|
||||
"файлов и т. п. вы можете представиться с помощью вашей MediaGoblin’овой "
|
||||
"учётной записи."
|
||||
|
||||
#: 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 "Свободное ПО. (Мы же проект <a href=\"http://gnu.org\">GNU</a>.)"
|
||||
msgid "Don't have one yet? It's easy!"
|
||||
msgstr "У вас её ещё нет? Не проблема!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:32
|
||||
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 ""
|
||||
"Рассчитан на расширяемость. (В программе скоро должна появиться поддержка "
|
||||
"других видов мультимедиа, таких как видео!)"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:34
|
||||
msgid ""
|
||||
"Powered by people like you. (<a "
|
||||
"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/root.html:38
|
||||
msgid "Excited to join us?"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:39
|
||||
#, python-format
|
||||
msgid ""
|
||||
"<a class=\"header_submit_highlight\" href=\"%(register_url)s\">Create a free account</a>\n"
|
||||
" or\n"
|
||||
" <a class=\"header_submit\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
|
||||
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Create an account at this site</a>\n"
|
||||
" or\n"
|
||||
" <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:53
|
||||
#: mediagoblin/templates/mediagoblin/root.html:40
|
||||
msgid "Most recent media"
|
||||
msgstr "Самые новые файлы"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:29
|
||||
msgid "Enter your new password"
|
||||
msgstr "Введите свой новый пароль"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:29
|
||||
msgid "Enter your username or email"
|
||||
msgstr "Введите Ваше имя пользователя или адрес электронной почты"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_changed_success.html:22
|
||||
msgid "Your password has been changed. Try to log in now."
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:32
|
||||
msgid "Set your new password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_email_sent.html:22
|
||||
msgid ""
|
||||
"Check your inbox. We sent an email with a URL for changing your password."
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:35
|
||||
msgid "Set password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:27
|
||||
msgid "Recover password"
|
||||
msgstr "Сброс пароля"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:30
|
||||
msgid "Send instructions"
|
||||
msgstr "Отправить инструкцию"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_verification_email.txt:19
|
||||
#, python-format
|
||||
msgid ""
|
||||
@@ -294,32 +323,37 @@ msgid ""
|
||||
"If you think this is an error, just ignore this email and continue being\n"
|
||||
"a happy goblin!"
|
||||
msgstr ""
|
||||
"Привет, %(username)s,\n"
|
||||
"\n"
|
||||
"чтобы сменить свой пароль от GNU MediaGoblin, откройте\n"
|
||||
"следующий URL вашим веб‐браузером:\n"
|
||||
"\n"
|
||||
"%(verification_url)s\n"
|
||||
"\n"
|
||||
"Если вы думаете, что это какая‐то ошибка, то игнорируйте\n"
|
||||
"это сообщение и продолжайте быть счастливым гоблином!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:30
|
||||
msgid "Logging in failed!"
|
||||
msgstr "Авторизация неуспешна!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:43
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:35
|
||||
msgid "Don't have an account yet?"
|
||||
msgstr "Ещё нету аккаунта?"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:46
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:36
|
||||
msgid "Create one here!"
|
||||
msgstr "Создайте здесь!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:49
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:42
|
||||
msgid "Forgot your password?"
|
||||
msgstr "Забыли свой пароль?"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:52
|
||||
msgid "Change it!"
|
||||
msgstr "Смените его!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:27
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:32
|
||||
msgid "Create an account!"
|
||||
msgstr "Создать аккаунт!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:31
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:36
|
||||
msgid "Create"
|
||||
msgstr "Создать"
|
||||
|
||||
@@ -350,36 +384,114 @@ msgid "Cancel"
|
||||
msgstr "Отменить"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit.html:37
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
|
||||
msgid "Save changes"
|
||||
msgstr "Сохранить изменения"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:34
|
||||
#, python-format
|
||||
msgid "Changing %(username)s's account settings"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:29
|
||||
#, python-format
|
||||
msgid "Editing %(username)s's profile"
|
||||
msgstr "Редактирование профиля %(username)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:31
|
||||
msgid "Media tagged with:"
|
||||
msgstr "Файлы с меткой:"
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:30
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:35
|
||||
#, python-format
|
||||
msgid "Media tagged with: %(tag_name)s"
|
||||
msgstr "Файлы с меткой: %(tag_name)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:46
|
||||
msgid "Original"
|
||||
msgstr "Оригинал"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:33
|
||||
msgid ""
|
||||
"Sorry, this video will not work because \n"
|
||||
"\t your web browser does not support HTML5 \n"
|
||||
"\t video."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:36
|
||||
msgid ""
|
||||
"You can get a modern web browser that \n"
|
||||
"\t can play this video at <a href=\"http://getfirefox.com\">\n"
|
||||
"\t http://getfirefox.com</a>!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/submit/start.html:26
|
||||
msgid "Submit yer media"
|
||||
msgstr "Загрузить файл(ы)"
|
||||
msgid "Add your media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/submit/start.html:30
|
||||
msgid "Submit"
|
||||
msgstr "Подтвердить"
|
||||
msgid "Add"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:32
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
|
||||
#, python-format
|
||||
msgid "%(username)s's media"
|
||||
msgstr "Файлы %(username)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:37
|
||||
#, python-format
|
||||
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
|
||||
msgstr "Файлы пользователя <a href=\"%(user_url)s\">%(username)s</a>"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:52
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:32
|
||||
msgid "Sorry, no such user found."
|
||||
msgstr "Извините, но такой пользователь не найден."
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:60
|
||||
#, python-format
|
||||
msgid "Added on %(date)s."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
|
||||
msgid "Edit"
|
||||
msgstr "Изменить"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
|
||||
msgid "Delete"
|
||||
msgstr "Удалить"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
|
||||
#, python-format
|
||||
msgid "%(comment_count)s comment"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:81
|
||||
#, python-format
|
||||
msgid "%(comment_count)s comments"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
|
||||
msgid "No comments yet."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:91
|
||||
msgid "Add one"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:100
|
||||
msgid ""
|
||||
"Type your comment here. You can use <a "
|
||||
"href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> for"
|
||||
" formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:104
|
||||
msgid "Add this comment"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:126
|
||||
msgid "at"
|
||||
msgstr "в"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:141
|
||||
#, python-format
|
||||
msgid "<p>❖ Browsing media by <a href=\"%(user_url)s\">%(username)s</a></p>"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
|
||||
#, python-format
|
||||
@@ -412,38 +524,48 @@ msgstr "Нету файлов для обработки"
|
||||
msgid "These uploads failed to process:"
|
||||
msgstr "Обработка этих файлов вызвала ошибку:"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:39
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:59
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:31
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:89
|
||||
#, python-format
|
||||
msgid "%(username)s's profile"
|
||||
msgstr "Профиль пользователя %(username)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:43
|
||||
msgid "Sorry, no such user found."
|
||||
msgstr "Извините, но такой пользователь не найден."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:50
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:70
|
||||
msgid "Email verification needed"
|
||||
msgstr "Нужно подтверждение почтового адреса"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:42
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
|
||||
msgid "Almost done! Your account still needs to be activated."
|
||||
msgstr "Почти закончили! Теперь надо активировать ваш аккаунт."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:47
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:58
|
||||
msgid ""
|
||||
"An email should arrive in a few moments with instructions on how to do so."
|
||||
msgstr ""
|
||||
"Через пару мгновений на адрес вашей электронной почты должно прийти "
|
||||
"сообщение с дальнейшими инструкциями."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:51
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
|
||||
msgid "In case it doesn't:"
|
||||
msgstr "А если нет, то:"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:54
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:65
|
||||
msgid "Resend verification email"
|
||||
msgstr ""
|
||||
"Повторно отправить сообщение для подверждения адреса электронной почты"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:73
|
||||
msgid ""
|
||||
"Someone has registered an account with this username, but it still has to be"
|
||||
" activated."
|
||||
msgstr "Кто‐то создал аккаунт с этим именем, но его еще надо активировать."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:68
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:79
|
||||
#, python-format
|
||||
msgid ""
|
||||
"If you are that person but you've lost your verification email, you can <a "
|
||||
@@ -452,40 +574,36 @@ msgstr ""
|
||||
"Если это были вы, и если вы потеряли сообщение для подтверждения аккаунта, "
|
||||
"то вы можете <a href=\"%(login_url)s\">войти</a> и отправить его повторно."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:78
|
||||
#, python-format
|
||||
msgid "%(username)s's profile"
|
||||
msgstr "Профиль пользователя %(username)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:85
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
|
||||
msgid "Here's a spot to tell others about yourself."
|
||||
msgstr "Здесь вы можете рассказать о себе."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:90
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:108
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:101
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
|
||||
msgid "Edit profile"
|
||||
msgstr "Редактировать профиль"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
|
||||
msgid "This user hasn't filled in their profile (yet)."
|
||||
msgstr "Это пользователь не заполнил свой профайл (пока)."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:122
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:125
|
||||
msgid "Change account settings"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:138
|
||||
#, python-format
|
||||
msgid "View all of %(username)s's media"
|
||||
msgstr "Смотреть все файлы %(username)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:135
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:151
|
||||
msgid ""
|
||||
"This is where your media will appear, but you don't seem to have added "
|
||||
"anything yet."
|
||||
msgstr "Ваши файлы появятся здесь, когда вы их добавите."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:141
|
||||
msgid "Add media"
|
||||
msgstr "Добавить файлы"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:147
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:163
|
||||
#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:72
|
||||
msgid "There doesn't seem to be any media here yet..."
|
||||
msgstr "Пока что тут файлов нет…"
|
||||
|
||||
@@ -497,31 +615,57 @@ msgstr "значок ленты"
|
||||
msgid "Atom feed"
|
||||
msgstr "лента в формате Atom"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:40
|
||||
msgid "Newer"
|
||||
msgstr "Более новые"
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
|
||||
msgid "← Newer"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:46
|
||||
msgid "Older"
|
||||
msgstr "Более старые"
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
|
||||
msgid "Older →"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/forms.py:24
|
||||
msgid "Comment"
|
||||
msgstr "Комментарий"
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
|
||||
msgid "Go to page:"
|
||||
msgstr "Перейти к странице:"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:27
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:32
|
||||
msgid "newer"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:38
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:43
|
||||
msgid "older"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/tags.html:20
|
||||
msgid "View more media tagged with"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/tags.html:25
|
||||
msgid "or"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/forms.py:30
|
||||
msgid "I am sure I want to delete this"
|
||||
msgstr "Я уверен, что хочу удалить это"
|
||||
|
||||
#: mediagoblin/user_pages/views.py:142
|
||||
msgid "Empty comments are not allowed."
|
||||
msgstr ""
|
||||
#: mediagoblin/user_pages/views.py:155
|
||||
msgid "Oops, your comment was empty."
|
||||
msgstr "Ой, ваш комментарий был пуст."
|
||||
|
||||
#: mediagoblin/user_pages/views.py:148
|
||||
msgid "Comment posted!"
|
||||
msgstr ""
|
||||
#: mediagoblin/user_pages/views.py:161
|
||||
msgid "Your comment has been posted!"
|
||||
msgstr "Ваш комментарий размещён!"
|
||||
|
||||
#: mediagoblin/user_pages/views.py:181
|
||||
#: mediagoblin/user_pages/views.py:183
|
||||
msgid "You deleted the media."
|
||||
msgstr "Вы удалили файл."
|
||||
|
||||
#: mediagoblin/user_pages/views.py:190
|
||||
msgid "The media was not deleted because you didn't check that you were sure."
|
||||
msgstr "Файл не удалён, так как вы не подтвердили свою уверенность галочкой."
|
||||
|
||||
#: mediagoblin/user_pages/views.py:198
|
||||
msgid "You are about to delete another user's media. Proceed with caution."
|
||||
msgstr "Вы на пороге удаления файла другого пользователя. Будьте осторожны."
|
||||
|
||||
|
||||
Binary file not shown.
@@ -1,5 +1,5 @@
|
||||
# Translations template for PROJECT.
|
||||
# Copyright (C) 2011 ORGANIZATION
|
||||
# Copyright (C) 2012 ORGANIZATION
|
||||
# This file is distributed under the same license as the PROJECT project.
|
||||
#
|
||||
# Translators:
|
||||
@@ -8,8 +8,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: GNU MediaGoblin\n"
|
||||
"Report-Msgid-Bugs-To: http://bugs.foocorp.net/projects/mediagoblin/issues\n"
|
||||
"POT-Creation-Date: 2011-11-01 23:14-0500\n"
|
||||
"PO-Revision-Date: 2011-11-02 04:13+0000\n"
|
||||
"POT-Creation-Date: 2012-01-07 13:47-0600\n"
|
||||
"PO-Revision-Date: 2012-01-07 19:44+0000\n"
|
||||
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -19,27 +19,19 @@ msgstr ""
|
||||
"Language: sk\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n"
|
||||
|
||||
#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:49
|
||||
#: mediagoblin/processing.py:143
|
||||
msgid "Invalid file given for media type."
|
||||
msgstr "Odovzdaný nesprávny súbor pre daný typ média."
|
||||
|
||||
#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:41
|
||||
msgid "Username"
|
||||
msgstr "Prihlasovacie meno"
|
||||
|
||||
#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:53
|
||||
#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:45
|
||||
msgid "Password"
|
||||
msgstr "Heslo"
|
||||
|
||||
#: mediagoblin/auth/forms.py:35
|
||||
msgid "Passwords must match."
|
||||
msgstr "Heslá sa musia zhodovať."
|
||||
|
||||
#: mediagoblin/auth/forms.py:37
|
||||
msgid "Confirm password"
|
||||
msgstr "Potvrdiť heslo"
|
||||
|
||||
#: mediagoblin/auth/forms.py:39
|
||||
msgid "Type it again here to make sure there are no spelling mistakes."
|
||||
msgstr "Prepíš ho sem opätovne kvôli uisteniu, že nedošlo k preklepu."
|
||||
|
||||
#: mediagoblin/auth/forms.py:42
|
||||
#: mediagoblin/auth/forms.py:34
|
||||
msgid "Email address"
|
||||
msgstr "E-mailová adresa"
|
||||
|
||||
@@ -52,10 +44,10 @@ msgid "Sorry, a user with that name already exists."
|
||||
msgstr "Prepáč, rovnaké prihlasovacie meno už niekto používa."
|
||||
|
||||
#: mediagoblin/auth/views.py:77
|
||||
msgid "Sorry, that email address has already been taken."
|
||||
msgstr "Prepáč, daná e-mailová adresa už bola pri registrácii využitá."
|
||||
msgid "Sorry, a user with that email address already exists."
|
||||
msgstr "Prepáč, používateľ s rovnakou e-mailovou adresou už existuje."
|
||||
|
||||
#: mediagoblin/auth/views.py:179
|
||||
#: mediagoblin/auth/views.py:180
|
||||
msgid ""
|
||||
"Your email address has been verified. You may now login, edit your profile, "
|
||||
"and submit images!"
|
||||
@@ -63,88 +55,158 @@ msgstr ""
|
||||
"Tvoja e-mailová adresa bola úspešne overená. Môžeš sa hneď prihlásiť, "
|
||||
"upraviť svoj profil a vkladať výtvory! "
|
||||
|
||||
#: mediagoblin/auth/views.py:185
|
||||
#: mediagoblin/auth/views.py:186
|
||||
msgid "The verification key or user id is incorrect"
|
||||
msgstr "Nesprávny overovací kľúč alebo používateľské ID"
|
||||
msgstr "Nesprávny overovací kľúč alebo používateľský identifikátor"
|
||||
|
||||
#: mediagoblin/auth/views.py:207
|
||||
#: mediagoblin/auth/views.py:204
|
||||
msgid "You must be logged in so we know who to send the email to!"
|
||||
msgstr ""
|
||||
"Aby sme ti mohli zaslať e-mailovú správu, je potrebné byť prihláseným!"
|
||||
|
||||
#: mediagoblin/auth/views.py:212
|
||||
msgid "You've already verified your email address!"
|
||||
msgstr "Tvoja e-mailová adresa už bola raz overená!"
|
||||
|
||||
#: mediagoblin/auth/views.py:225
|
||||
msgid "Resent your verification email."
|
||||
msgstr "Opätovne zaslať overovaciu správu."
|
||||
msgstr "Opätovne zaslať overovaciu správu na e-mail."
|
||||
|
||||
#: mediagoblin/auth/views.py:248
|
||||
#: mediagoblin/auth/views.py:260
|
||||
msgid ""
|
||||
"An email has been sent with instructions on how to change your password."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:270
|
||||
msgid ""
|
||||
"Could not send password recovery email as your username is inactive or your "
|
||||
"account's email address has not been verified."
|
||||
msgstr ""
|
||||
"Nebolo ti možné zaslať správu ohľadom obnovy hesla, nakoľko je tvoje "
|
||||
"používateľské meno buď neaktívne alebo e-mailová adresa účtu neoverená."
|
||||
"Nebolo ti možné zaslať e-mailovú správu ohľadom obnovy hesla, nakoľko je "
|
||||
"tvoje používateľské meno buď neaktívne alebo e-mailová adresa účtu "
|
||||
"neoverená."
|
||||
|
||||
#: mediagoblin/auth/views.py:282
|
||||
msgid "Couldn't find someone with that username or email."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:330
|
||||
msgid "You can now log in using your new password."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:24 mediagoblin/submit/forms.py:27
|
||||
msgid "Title"
|
||||
msgstr "Nadpis"
|
||||
|
||||
#: mediagoblin/edit/forms.py:28 mediagoblin/submit/forms.py:32
|
||||
msgid "Tags"
|
||||
msgstr "Štítky"
|
||||
#: mediagoblin/edit/forms.py:27 mediagoblin/submit/forms.py:30
|
||||
msgid "Description of this work"
|
||||
msgstr "Charakteristika tohto diela"
|
||||
|
||||
#: mediagoblin/edit/forms.py:31
|
||||
#: mediagoblin/edit/forms.py:28 mediagoblin/submit/forms.py:31
|
||||
msgid ""
|
||||
"You can use\n"
|
||||
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
|
||||
" Markdown</a> for formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:32 mediagoblin/submit/forms.py:35
|
||||
msgid "Tags"
|
||||
msgstr "Značky"
|
||||
|
||||
#: mediagoblin/edit/forms.py:34 mediagoblin/submit/forms.py:37
|
||||
msgid "Separate tags by commas."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:37
|
||||
msgid "Slug"
|
||||
msgstr "Unikátna časť adresy"
|
||||
|
||||
#: mediagoblin/edit/forms.py:32
|
||||
#: mediagoblin/edit/forms.py:38
|
||||
msgid "The slug can't be empty"
|
||||
msgstr "Unikátna časť adresy musí byť vyplnená"
|
||||
msgstr "Unikátna časť adresy nesmie byť prázdna"
|
||||
|
||||
#: mediagoblin/edit/forms.py:33
|
||||
#: mediagoblin/edit/forms.py:39
|
||||
msgid ""
|
||||
"The title part of this media's URL. You usually don't need to change this."
|
||||
msgstr "Titulná časť URL odkazu média. Zvyčajne to meniť nemusíš."
|
||||
"The title part of this media's address. You usually don't need to change "
|
||||
"this."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:40
|
||||
#: mediagoblin/edit/forms.py:46
|
||||
msgid "Bio"
|
||||
msgstr "Bio"
|
||||
|
||||
#: mediagoblin/edit/forms.py:43
|
||||
#: mediagoblin/edit/forms.py:48
|
||||
msgid ""
|
||||
"You can use\n"
|
||||
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
|
||||
" Markdown</a> for formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:53
|
||||
msgid "Website"
|
||||
msgstr "Webstránka"
|
||||
|
||||
#: mediagoblin/edit/views.py:64
|
||||
#: mediagoblin/edit/forms.py:60
|
||||
msgid "Old password"
|
||||
msgstr "Staré heslo"
|
||||
|
||||
#: mediagoblin/edit/forms.py:62
|
||||
msgid "Enter your old password to prove you own this account."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:65
|
||||
msgid "New password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:65
|
||||
msgid "An entry with that slug already exists for this user."
|
||||
msgstr "Položku s rovnakou unikátnou časťou adresy už niekde máš."
|
||||
|
||||
#: mediagoblin/edit/views.py:85
|
||||
#: mediagoblin/edit/views.py:86
|
||||
msgid "You are editing another user's media. Proceed with caution."
|
||||
msgstr "Upravuješ médiá niekoho iného. Pristupuj opatrne."
|
||||
msgstr "Upravuješ médiá niekoho iného. Dbaj na to."
|
||||
|
||||
#: mediagoblin/edit/views.py:155
|
||||
#: mediagoblin/edit/views.py:156
|
||||
msgid "You are editing a user's profile. Proceed with caution."
|
||||
msgstr "Upravuješ používateľský profil. Pristupuj opatrne."
|
||||
msgstr "Upravuješ používateľský profil. Dbaj na to."
|
||||
|
||||
#: mediagoblin/process_media/errors.py:44
|
||||
msgid "Invalid file given for media type."
|
||||
msgstr "Odovzdaný nesprávny súbor pre daný typ média."
|
||||
#: mediagoblin/edit/views.py:174
|
||||
msgid "Profile changes saved"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:200
|
||||
msgid "Wrong password"
|
||||
msgstr "Nesprávne heslo"
|
||||
|
||||
#: mediagoblin/edit/views.py:216
|
||||
msgid "Account settings saved"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/media_types/__init__.py:77
|
||||
msgid "Could not extract any file extension from \"{filename}\""
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/media_types/__init__.py:88
|
||||
msgid "Sorry, I don't support that file type :("
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/submit/forms.py:25
|
||||
msgid "File"
|
||||
msgstr "Súbor"
|
||||
|
||||
#: mediagoblin/submit/forms.py:30
|
||||
msgid "Description of this work"
|
||||
msgstr "Charakteristika diela"
|
||||
|
||||
#: mediagoblin/submit/views.py:46
|
||||
#: mediagoblin/submit/views.py:50
|
||||
msgid "You must provide a file."
|
||||
msgstr "Poskytni súbor."
|
||||
msgstr "Musíš poskytnúť súbor."
|
||||
|
||||
#: mediagoblin/submit/views.py:49
|
||||
msgid "The file doesn't seem to be an image!"
|
||||
msgstr "Súbor najskôr nie je obrázkom!"
|
||||
|
||||
#: mediagoblin/submit/views.py:121
|
||||
#: mediagoblin/submit/views.py:128
|
||||
msgid "Woohoo! Submitted!"
|
||||
msgstr "Juchú! Úspešne vložené!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:21
|
||||
#: mediagoblin/templates/mediagoblin/404.html:22
|
||||
msgid "Image of 404 goblin stressing out"
|
||||
msgstr "Obrázok stresujúceho goblina pri chybovom kóde č. 404"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:23
|
||||
msgid "Oops!"
|
||||
msgstr "Ajaj!"
|
||||
|
||||
@@ -160,33 +222,30 @@ msgstr ""
|
||||
"Ak vieš s istotou, že adresa je správna, tak najskôr bola hľadaná stánka "
|
||||
"presunutá alebo zmazaná."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:32
|
||||
msgid "Image of 404 goblin stressing out"
|
||||
msgstr "Obrázok stresujúceho goblina pri chybovom kóde č. 404"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:22
|
||||
msgid "GNU MediaGoblin"
|
||||
msgstr "GNU MediaGoblin"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:47
|
||||
#: mediagoblin/templates/mediagoblin/base.html:48
|
||||
msgid "MediaGoblin logo"
|
||||
msgstr "MediaGoblin logo"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:52
|
||||
msgid "Submit media"
|
||||
msgstr "Vložiť výtvor"
|
||||
#: mediagoblin/templates/mediagoblin/base.html:53
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:157
|
||||
msgid "Add media"
|
||||
msgstr "Pridať výtvor"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:63
|
||||
msgid "verify your email!"
|
||||
msgstr "over si svoj e-mail!"
|
||||
#: mediagoblin/templates/mediagoblin/base.html:64
|
||||
msgid "Verify your email!"
|
||||
msgstr "Over si e-mailovú adresu!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:73
|
||||
#: mediagoblin/templates/mediagoblin/base.html:71
|
||||
msgid "log out"
|
||||
msgstr "odhlásiť sa"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:74
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:27
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:35
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:45
|
||||
msgid "Log in"
|
||||
msgstr "Prihlásenie"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:89
|
||||
#: mediagoblin/templates/mediagoblin/base.html:86
|
||||
msgid ""
|
||||
"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
|
||||
"href=\"http://gnu.org/\">GNU</a> project"
|
||||
@@ -198,93 +257,57 @@ msgstr ""
|
||||
msgid "Explore"
|
||||
msgstr "Preskúmať"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:27
|
||||
msgid "Hi there, media lover! MediaGoblin is..."
|
||||
msgstr "Vitaj medzi nami, kreatívne stvorenie! MediaGoblin je..."
|
||||
#: mediagoblin/templates/mediagoblin/root.html:26
|
||||
msgid "Hi there, welcome to this MediaGoblin site!"
|
||||
msgstr "Ahoj, vitaj na tejto MediaGoblin stránke!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:28
|
||||
msgid ""
|
||||
"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
|
||||
"extraordinarily great piece of media hosting software."
|
||||
msgstr ""
|
||||
"Táto stránka používa <a href=\"http://mediagoblin.org\">MediaGoblin</a>, "
|
||||
"výnimočne skvelý kus softvéru na hostovanie médií."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:29
|
||||
msgid "The perfect place for your media!"
|
||||
msgstr "Parádne miesto pre tvoje výtvory!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:30
|
||||
msgid ""
|
||||
"A place for people to collaborate and show off original and derived "
|
||||
"creations!"
|
||||
"To add your own media, place comments, save your favourites and more, you "
|
||||
"can log in with your MediaGoblin account."
|
||||
msgstr ""
|
||||
"Miesto pre ľudí, vhodné na spoluprácu a vystavovanie tak originálnych, ako "
|
||||
"aj odvodených kreácií!"
|
||||
"Pre pridanie vlastných výtvorov, vloženie komentárov, uloženie svojich "
|
||||
"obľúbených položiek a viac, sa musíš prihlásiť so svojim MediaGoblin účtom."
|
||||
|
||||
#: 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 ""
|
||||
"Voľné, vo význame slobody. (Koniec-koncov, sme predsa <a "
|
||||
"href=\"http://gnu.org\">GNU</a> projekt.)"
|
||||
msgid "Don't have one yet? It's easy!"
|
||||
msgstr "Ešte žiaden nemáš? Je to jednoduché!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:32
|
||||
msgid ""
|
||||
"Aiming to make the world a better place through decentralization and "
|
||||
"(eventually, coming soon!) federation!"
|
||||
msgstr ""
|
||||
"Zo snahou spraviť svet lepším miestom vďaka decentralizácii a (eventuálne, "
|
||||
"už čoskoro!) federácii!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:33
|
||||
msgid ""
|
||||
"Built for extensibility. (Multiple media types coming soon to the software,"
|
||||
" including video support!)"
|
||||
msgstr ""
|
||||
"S dôrazom na rozšíriteľnosť. (Podpora pre rozličné typy médií v tomto "
|
||||
"softvéri už čoskoro, nevynímajúc videá!)"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:34
|
||||
msgid ""
|
||||
"Powered by people like you. (<a "
|
||||
"href=\"http://mediagoblin.org/pages/join.html\">You can help us improve this"
|
||||
" software!</a>)"
|
||||
msgstr ""
|
||||
"Existujeme aj vďaka ľudom ako si ty. (<a "
|
||||
"href=\"http://mediagoblin.org/pages/join.html\">Môžeš nám pomôcť softvér "
|
||||
"vylepšiť!</a>)"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:38
|
||||
msgid "Excited to join us?"
|
||||
msgstr "Tak čo, chceš sa pridať?"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:39
|
||||
#, python-format
|
||||
msgid ""
|
||||
"<a class=\"header_submit_highlight\" href=\"%(register_url)s\">Create a free account</a>\n"
|
||||
" or\n"
|
||||
" <a class=\"header_submit\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
|
||||
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Create an account at this site</a>\n"
|
||||
" or\n"
|
||||
" <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
|
||||
msgstr ""
|
||||
"<a class=\"header_submit_highlight\" href=\"%(register_url)s\">Vytvoriť bezplatný účet</a>\n"
|
||||
" alebo\n"
|
||||
" <a class=\"header_submit\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Sprevádzkovať MediaGoblin na vlastnom serveri</a>"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:53
|
||||
#: mediagoblin/templates/mediagoblin/root.html:40
|
||||
msgid "Most recent media"
|
||||
msgstr "Najčerstvejšie výtvory"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:29
|
||||
msgid "Enter your new password"
|
||||
msgstr "Vlož svoje nové heslo"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:29
|
||||
msgid "Enter your username or email"
|
||||
msgstr "Vlož svoje používateľské meno alebo e-mailovú adresu"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_changed_success.html:22
|
||||
msgid "Your password has been changed. Try to log in now."
|
||||
msgstr "Heslo ti bolo zmenené. Skús sa prihlásiť teraz."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_email_sent.html:22
|
||||
msgid ""
|
||||
"Check your inbox. We sent an email with a URL for changing your password."
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:32
|
||||
msgid "Set your new password"
|
||||
msgstr ""
|
||||
"Skontroluj si e-mailovú schránku. Bol ti zaslaná správa s URL odkazom pre "
|
||||
"zmenu tvojho hesla."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:35
|
||||
msgid "Set password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:27
|
||||
msgid "Recover password"
|
||||
msgstr "Obnoviť heslo"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:30
|
||||
msgid "Send instructions"
|
||||
msgstr "Zaslať postup"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_verification_email.txt:19
|
||||
#, python-format
|
||||
@@ -301,38 +324,33 @@ msgid ""
|
||||
msgstr ""
|
||||
"Ahoj %(username)s,\n"
|
||||
"\n"
|
||||
"pre zmenu svojho hesla k GNU MediaGoblin účtu, otvor nasledujúci URL odkaz vo \n"
|
||||
"svojom prehliadači:\n"
|
||||
"pre zmenu svojho hesla k GNU MediaGoblin účtu, otvor nasledujúci odkaz vo svojom prehliadači:\n"
|
||||
"\n"
|
||||
"%(verification_url)s\n"
|
||||
"\n"
|
||||
"Pokiaľ si myslíš, že došlo k omylu, tak jednoducho ignoruj túto správu a neprestávaj byť šťastným goblinom!"
|
||||
"Pokiaľ si myslíš, že došlo k omylu, tak jednoducho ignoruj túto správu a buď šťastným goblinom!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:30
|
||||
msgid "Logging in failed!"
|
||||
msgstr "Prihlásenie zlyhalo!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:43
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:35
|
||||
msgid "Don't have an account yet?"
|
||||
msgstr "Ešte nemáš účet?"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:46
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:36
|
||||
msgid "Create one here!"
|
||||
msgstr "Vytvoriť jeden tu!"
|
||||
msgstr "Vytvor si jeden tu!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:49
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:42
|
||||
msgid "Forgot your password?"
|
||||
msgstr "Zabudnuté heslo?"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:52
|
||||
msgid "Change it!"
|
||||
msgstr "Zmeniť ho!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:27
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:32
|
||||
msgid "Create an account!"
|
||||
msgstr "Vytvoriť účet!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:31
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:36
|
||||
msgid "Create"
|
||||
msgstr "Vytvoriť"
|
||||
|
||||
@@ -348,7 +366,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Ahoj %(username)s,\n"
|
||||
"\n"
|
||||
"pre aktiváciu tvojho GNU MediaGoblin účtu, otvor nasledujúci URL odkaz vo\n"
|
||||
"pre aktiváciu tvojho GNU MediaGoblin účtu, otvor nasledujúci odkaz vo\n"
|
||||
"svojom prehliadači:\n"
|
||||
"\n"
|
||||
"%(verification_url)s"
|
||||
@@ -364,36 +382,114 @@ msgid "Cancel"
|
||||
msgstr "Zrušiť"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit.html:37
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
|
||||
msgid "Save changes"
|
||||
msgstr "Uložiť zmeny"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:34
|
||||
#, python-format
|
||||
msgid "Changing %(username)s's account settings"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:29
|
||||
#, python-format
|
||||
msgid "Editing %(username)s's profile"
|
||||
msgstr "Úprava profilu, ktorý vlastní %(username)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:31
|
||||
msgid "Media tagged with:"
|
||||
msgstr "Výtvor značený štítkami:"
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:30
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:35
|
||||
#, python-format
|
||||
msgid "Media tagged with: %(tag_name)s"
|
||||
msgstr "Výtvory označené ako: %(tag_name)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:46
|
||||
msgid "Original"
|
||||
msgstr "Originál"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:33
|
||||
msgid ""
|
||||
"Sorry, this video will not work because \n"
|
||||
"\t your web browser does not support HTML5 \n"
|
||||
"\t video."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:36
|
||||
msgid ""
|
||||
"You can get a modern web browser that \n"
|
||||
"\t can play this video at <a href=\"http://getfirefox.com\">\n"
|
||||
"\t http://getfirefox.com</a>!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/submit/start.html:26
|
||||
msgid "Submit yer media"
|
||||
msgstr "Vlož svoj výtvor"
|
||||
msgid "Add your media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/submit/start.html:30
|
||||
msgid "Submit"
|
||||
msgstr "Vložiť"
|
||||
msgid "Add"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:32
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
|
||||
#, python-format
|
||||
msgid "%(username)s's media"
|
||||
msgstr "Výtvory, ktoré vlastní %(username)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:37
|
||||
#, python-format
|
||||
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
|
||||
msgstr "<a href=\"%(user_url)s\">Výtvory, ktoré vlastní %(username)s</a>"
|
||||
msgstr "Výtvory, ktoré vlastní <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 "Prepáč, používateľské meno nenájdené."
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:60
|
||||
#, python-format
|
||||
msgid "Added on %(date)s."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
|
||||
msgid "Edit"
|
||||
msgstr "Upraviť"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
|
||||
msgid "Delete"
|
||||
msgstr "Odstrániť"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
|
||||
#, python-format
|
||||
msgid "%(comment_count)s comment"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:81
|
||||
#, python-format
|
||||
msgid "%(comment_count)s comments"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
|
||||
msgid "No comments yet."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:91
|
||||
msgid "Add one"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:100
|
||||
msgid ""
|
||||
"Type your comment here. You can use <a "
|
||||
"href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> for"
|
||||
" formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:104
|
||||
msgid "Add this comment"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:126
|
||||
msgid "at"
|
||||
msgstr "o"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:141
|
||||
#, python-format
|
||||
msgid "<p>❖ Browsing media by <a href=\"%(user_url)s\">%(username)s</a></p>"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
|
||||
#, python-format
|
||||
@@ -406,48 +502,58 @@ msgstr "Odstrániť navždy"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:22
|
||||
msgid "Media processing panel"
|
||||
msgstr "Sekcia spracovania médií"
|
||||
msgstr "Sekcia spracovania výtvorov"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:25
|
||||
msgid ""
|
||||
"You can track the state of media being processed for your gallery here."
|
||||
msgstr "Tu môžeš sledovať priebeh spracovania médií pre svoju galériu."
|
||||
msgstr "Tu môžeš sledovať priebeh spracovania výtvorov pre svoju galériu."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:28
|
||||
msgid "Media in-processing"
|
||||
msgstr "Médiá v procese spracovania"
|
||||
msgstr "Výtvory sa spracúvajú"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:46
|
||||
msgid "No media in-processing"
|
||||
msgstr "Žiadne médiá v procese spracovania"
|
||||
msgstr "Žiadne výtvory sa nespracúvajú"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:50
|
||||
msgid "These uploads failed to process:"
|
||||
msgstr "Nasledovné vloženia neprešli spracovaním:"
|
||||
msgstr "Nasledovné nahratia neprešli spracovaním:"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:39
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:59
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:31
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:89
|
||||
#, python-format
|
||||
msgid "%(username)s's profile"
|
||||
msgstr "Profil, ktorý vlastní %(username)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:43
|
||||
msgid "Sorry, no such user found."
|
||||
msgstr "Prepáč, zadané používateľské meno nenájdené."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:50
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:70
|
||||
msgid "Email verification needed"
|
||||
msgstr "Potrebné overenie e-mailovej adresy"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:42
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
|
||||
msgid "Almost done! Your account still needs to be activated."
|
||||
msgstr "Takmer hotovo! Ešte ti musí byť aktivovaný účet."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:47
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:58
|
||||
msgid ""
|
||||
"An email should arrive in a few moments with instructions on how to do so."
|
||||
msgstr "E-mailová správa s popisom ako to spraviť, by mala onedlho doraziť."
|
||||
msgstr "E-mailová správa s popisom ako to spraviť, by mal zanedlho doraziť."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:51
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
|
||||
msgid "In case it doesn't:"
|
||||
msgstr "V prípade, že sa tak nestalo:"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:54
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:65
|
||||
msgid "Resend verification email"
|
||||
msgstr "Opätovne zaslať overovaciu správu"
|
||||
msgstr "Opätovne zaslať overovaciu správu na e-mail"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:73
|
||||
msgid ""
|
||||
"Someone has registered an account with this username, but it still has to be"
|
||||
" activated."
|
||||
@@ -455,52 +561,48 @@ msgstr ""
|
||||
"Účet s týmto prihlasovacím menom je už registrovaný, avšak ešte stále "
|
||||
"neaktívny."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:68
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:79
|
||||
#, python-format
|
||||
msgid ""
|
||||
"If you are that person but you've lost your verification email, you can <a "
|
||||
"href=\"%(login_url)s\">log in</a> and resend it."
|
||||
msgstr ""
|
||||
"Pokiaľ si to ty, ale už nemáš overovaciu správu, tak sa môžeš <a "
|
||||
"Pokiaľ si to ty, ale už nemáš overovaciu e-mailovú správu, tak sa môžeš <a "
|
||||
"href=\"%(login_url)s\">prihlásiť</a> a preposlať si ju."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:78
|
||||
#, python-format
|
||||
msgid "%(username)s's profile"
|
||||
msgstr "Profil, ktorý vlastní %(username)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:85
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
|
||||
msgid "Here's a spot to tell others about yourself."
|
||||
msgstr "Povedz tu o sebe ostatným."
|
||||
msgstr "Miesto, kde smieš povedať čo to o sebe ostatným."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:90
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:108
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:101
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
|
||||
msgid "Edit profile"
|
||||
msgstr "Upraviť profil"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
|
||||
msgid "This user hasn't filled in their profile (yet)."
|
||||
msgstr "Dotyčná osoba ešte nevyplnila svoj profil (zatiaľ)."
|
||||
msgstr "Dotyčný používateľ ešte nevyplnil svoj profil (zatiaľ)."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:122
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:125
|
||||
msgid "Change account settings"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:138
|
||||
#, python-format
|
||||
msgid "View all of %(username)s's media"
|
||||
msgstr "Zhliadnuť všetky výtvory, ktoré vlastní %(username)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:135
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:151
|
||||
msgid ""
|
||||
"This is where your media will appear, but you don't seem to have added "
|
||||
"anything yet."
|
||||
msgstr ""
|
||||
"Všetky tvoje výtvory sa objavia práve tu, ale zatiaľ nemáš nič pridané."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:141
|
||||
msgid "Add media"
|
||||
msgstr "Pridať výtvor"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:147
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:163
|
||||
#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:72
|
||||
msgid "There doesn't seem to be any media here yet..."
|
||||
msgstr "Najskôr tu ešte nebudú žiadne výtvory..."
|
||||
msgstr "Najskôr sa tu ešte nenachádzajú žiadne výtvory..."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
|
||||
msgid "feed icon"
|
||||
@@ -510,32 +612,58 @@ msgstr "ikona čítačky"
|
||||
msgid "Atom feed"
|
||||
msgstr "Čítačka Atom"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:40
|
||||
msgid "Newer"
|
||||
msgstr "Novšie"
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
|
||||
msgid "← Newer"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:46
|
||||
msgid "Older"
|
||||
msgstr "Staršie"
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
|
||||
msgid "Older →"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/forms.py:24
|
||||
msgid "Comment"
|
||||
msgstr "Komentár"
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
|
||||
msgid "Go to page:"
|
||||
msgstr "Prejsť na stránku:"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:27
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:32
|
||||
msgid "newer"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:38
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:43
|
||||
msgid "older"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/tags.html:20
|
||||
msgid "View more media tagged with"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/tags.html:25
|
||||
msgid "or"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/forms.py:30
|
||||
msgid "I am sure I want to delete this"
|
||||
msgstr "Jednoznačne to chcem odstrániť"
|
||||
|
||||
#: mediagoblin/user_pages/views.py:142
|
||||
msgid "Empty comments are not allowed."
|
||||
msgstr ""
|
||||
#: mediagoblin/user_pages/views.py:155
|
||||
msgid "Oops, your comment was empty."
|
||||
msgstr "Ajaj, tvoj komentár bol prázdny."
|
||||
|
||||
#: mediagoblin/user_pages/views.py:148
|
||||
msgid "Comment posted!"
|
||||
msgstr ""
|
||||
#: mediagoblin/user_pages/views.py:161
|
||||
msgid "Your comment has been posted!"
|
||||
msgstr "Tvoj komentár bol zaslaný!"
|
||||
|
||||
#: mediagoblin/user_pages/views.py:181
|
||||
#: mediagoblin/user_pages/views.py:183
|
||||
msgid "You deleted the media."
|
||||
msgstr "Výtvor bol tebou odstránený."
|
||||
|
||||
#: mediagoblin/user_pages/views.py:190
|
||||
msgid "The media was not deleted because you didn't check that you were sure."
|
||||
msgstr "Výtvor nebol odstránený, nakoľko chýbalo tvoje potvrdenie."
|
||||
|
||||
#: mediagoblin/user_pages/views.py:198
|
||||
msgid "You are about to delete another user's media. Proceed with caution."
|
||||
msgstr "Chystáš sa odstrániť výtvory niekoho iného. Pristupuj opatrne."
|
||||
msgstr "Chystáš sa odstrániť výtvory niekoho iného. Dbaj na to."
|
||||
|
||||
|
||||
|
||||
Binary file not shown.
@@ -1,5 +1,5 @@
|
||||
# Translations template for PROJECT.
|
||||
# Copyright (C) 2011 ORGANIZATION
|
||||
# Copyright (C) 2012 ORGANIZATION
|
||||
# This file is distributed under the same license as the PROJECT project.
|
||||
#
|
||||
# Translators:
|
||||
@@ -8,8 +8,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: GNU MediaGoblin\n"
|
||||
"Report-Msgid-Bugs-To: http://bugs.foocorp.net/projects/mediagoblin/issues\n"
|
||||
"POT-Creation-Date: 2011-11-01 23:14-0500\n"
|
||||
"PO-Revision-Date: 2011-11-02 04:13+0000\n"
|
||||
"POT-Creation-Date: 2012-01-07 13:47-0600\n"
|
||||
"PO-Revision-Date: 2012-01-07 19:44+0000\n"
|
||||
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -19,27 +19,19 @@ msgstr ""
|
||||
"Language: sl\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3)\n"
|
||||
|
||||
#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:49
|
||||
#: mediagoblin/processing.py:143
|
||||
msgid "Invalid file given for media type."
|
||||
msgstr "Za vrsto vsebine je bila podana napačna datoteka."
|
||||
|
||||
#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:41
|
||||
msgid "Username"
|
||||
msgstr "Uporabniško ime"
|
||||
|
||||
#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:53
|
||||
#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:45
|
||||
msgid "Password"
|
||||
msgstr "Geslo"
|
||||
|
||||
#: mediagoblin/auth/forms.py:35
|
||||
msgid "Passwords must match."
|
||||
msgstr "Gesli morata biti enaki."
|
||||
|
||||
#: mediagoblin/auth/forms.py:37
|
||||
msgid "Confirm password"
|
||||
msgstr "Potrdite geslo"
|
||||
|
||||
#: mediagoblin/auth/forms.py:39
|
||||
msgid "Type it again here to make sure there are no spelling mistakes."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/forms.py:42
|
||||
#: mediagoblin/auth/forms.py:34
|
||||
msgid "Email address"
|
||||
msgstr "E-poštni naslov"
|
||||
|
||||
@@ -52,10 +44,10 @@ msgid "Sorry, a user with that name already exists."
|
||||
msgstr "Oprostite, uporabnik s tem imenom že obstaja."
|
||||
|
||||
#: mediagoblin/auth/views.py:77
|
||||
msgid "Sorry, that email address has already been taken."
|
||||
msgstr "Oprostite, ta e-poštni naslov je že v uporabi."
|
||||
msgid "Sorry, a user with that email address already exists."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:179
|
||||
#: mediagoblin/auth/views.py:180
|
||||
msgid ""
|
||||
"Your email address has been verified. You may now login, edit your profile, "
|
||||
"and submit images!"
|
||||
@@ -63,86 +55,154 @@ msgstr ""
|
||||
"Vaš e-poštni naslov je bil potrjen. Sedaj se lahko prijavite, uredite svoj "
|
||||
"profil in pošljete slike."
|
||||
|
||||
#: mediagoblin/auth/views.py:185
|
||||
#: mediagoblin/auth/views.py:186
|
||||
msgid "The verification key or user id is incorrect"
|
||||
msgstr "Potrditveni ključ ali uporabniška identifikacija je napačna"
|
||||
|
||||
#: mediagoblin/auth/views.py:207
|
||||
#: mediagoblin/auth/views.py:204
|
||||
msgid "You must be logged in so we know who to send the email to!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:212
|
||||
msgid "You've already verified your email address!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:225
|
||||
msgid "Resent your verification email."
|
||||
msgstr "Ponovno pošiljanje potrditvene e-pošte."
|
||||
|
||||
#: mediagoblin/auth/views.py:248
|
||||
#: mediagoblin/auth/views.py:260
|
||||
msgid ""
|
||||
"An email has been sent with instructions on how to change your password."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:270
|
||||
msgid ""
|
||||
"Could not send password recovery email as your username is inactive or your "
|
||||
"account's email address has not been verified."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:282
|
||||
msgid "Couldn't find someone with that username or email."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:330
|
||||
msgid "You can now log in using your new password."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:24 mediagoblin/submit/forms.py:27
|
||||
msgid "Title"
|
||||
msgstr "Naslov"
|
||||
|
||||
#: mediagoblin/edit/forms.py:28 mediagoblin/submit/forms.py:32
|
||||
#: mediagoblin/edit/forms.py:27 mediagoblin/submit/forms.py:30
|
||||
msgid "Description of this work"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:28 mediagoblin/submit/forms.py:31
|
||||
msgid ""
|
||||
"You can use\n"
|
||||
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
|
||||
" Markdown</a> for formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:32 mediagoblin/submit/forms.py:35
|
||||
msgid "Tags"
|
||||
msgstr "Oznake"
|
||||
|
||||
#: mediagoblin/edit/forms.py:31
|
||||
#: mediagoblin/edit/forms.py:34 mediagoblin/submit/forms.py:37
|
||||
msgid "Separate tags by commas."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:37
|
||||
msgid "Slug"
|
||||
msgstr "Oznaka"
|
||||
|
||||
#: mediagoblin/edit/forms.py:32
|
||||
#: mediagoblin/edit/forms.py:38
|
||||
msgid "The slug can't be empty"
|
||||
msgstr "Oznaka ne sme biti prazna"
|
||||
|
||||
#: mediagoblin/edit/forms.py:33
|
||||
#: mediagoblin/edit/forms.py:39
|
||||
msgid ""
|
||||
"The title part of this media's URL. You usually don't need to change this."
|
||||
"The title part of this media's address. You usually don't need to change "
|
||||
"this."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:40
|
||||
#: mediagoblin/edit/forms.py:46
|
||||
msgid "Bio"
|
||||
msgstr "Biografija"
|
||||
|
||||
#: mediagoblin/edit/forms.py:43
|
||||
#: mediagoblin/edit/forms.py:48
|
||||
msgid ""
|
||||
"You can use\n"
|
||||
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
|
||||
" Markdown</a> for formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:53
|
||||
msgid "Website"
|
||||
msgstr "Spletna stran"
|
||||
|
||||
#: mediagoblin/edit/views.py:64
|
||||
#: mediagoblin/edit/forms.py:60
|
||||
msgid "Old password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:62
|
||||
msgid "Enter your old password to prove you own this account."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:65
|
||||
msgid "New password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:65
|
||||
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:85
|
||||
#: mediagoblin/edit/views.py:86
|
||||
msgid "You are editing another user's media. Proceed with caution."
|
||||
msgstr "Urejate vsebino drugega uporabnika. Nadaljujte pazljivo."
|
||||
|
||||
#: mediagoblin/edit/views.py:155
|
||||
#: mediagoblin/edit/views.py:156
|
||||
msgid "You are editing a user's profile. Proceed with caution."
|
||||
msgstr "Urejate uporabniški profil. Nadaljujte pazljivo."
|
||||
|
||||
#: mediagoblin/process_media/errors.py:44
|
||||
msgid "Invalid file given for media type."
|
||||
msgstr "Za vrsto vsebine je bila podana napačna datoteka."
|
||||
#: mediagoblin/edit/views.py:174
|
||||
msgid "Profile changes saved"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:200
|
||||
msgid "Wrong password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:216
|
||||
msgid "Account settings saved"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/media_types/__init__.py:77
|
||||
msgid "Could not extract any file extension from \"{filename}\""
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/media_types/__init__.py:88
|
||||
msgid "Sorry, I don't support that file type :("
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/submit/forms.py:25
|
||||
msgid "File"
|
||||
msgstr "Datoteka"
|
||||
|
||||
#: mediagoblin/submit/forms.py:30
|
||||
msgid "Description of this work"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/submit/views.py:46
|
||||
#: mediagoblin/submit/views.py:50
|
||||
msgid "You must provide a file."
|
||||
msgstr "Podati morate datoteko."
|
||||
|
||||
#: mediagoblin/submit/views.py:49
|
||||
msgid "The file doesn't seem to be an image!"
|
||||
msgstr "Kot kaže datoteka ni slika."
|
||||
|
||||
#: mediagoblin/submit/views.py:121
|
||||
#: mediagoblin/submit/views.py:128
|
||||
msgid "Woohoo! Submitted!"
|
||||
msgstr "Juhej! Poslano."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:21
|
||||
#: mediagoblin/templates/mediagoblin/404.html:22
|
||||
msgid "Image of 404 goblin stressing out"
|
||||
msgstr "Slika napake 404 s paničnim škratom"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:23
|
||||
msgid "Oops!"
|
||||
msgstr "Opa!"
|
||||
|
||||
@@ -158,33 +218,30 @@ msgstr ""
|
||||
"Če ste v točnost naslova prepričani, je bila iskana stran morda premaknjena "
|
||||
"ali pa izbrisana."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:32
|
||||
msgid "Image of 404 goblin stressing out"
|
||||
msgstr "Slika napake 404 s paničnim škratom"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:22
|
||||
msgid "GNU MediaGoblin"
|
||||
msgstr "GNU MediaGoblin"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:47
|
||||
#: mediagoblin/templates/mediagoblin/base.html:48
|
||||
msgid "MediaGoblin logo"
|
||||
msgstr "Logotip MediaGoblin"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:52
|
||||
msgid "Submit media"
|
||||
msgstr "Pošlji vsebino"
|
||||
#: mediagoblin/templates/mediagoblin/base.html:53
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:157
|
||||
msgid "Add media"
|
||||
msgstr "Dodaj vsebino"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:63
|
||||
msgid "verify your email!"
|
||||
msgstr "Preverite svojo e-pošto."
|
||||
#: mediagoblin/templates/mediagoblin/base.html:64
|
||||
msgid "Verify your email!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:73
|
||||
#: mediagoblin/templates/mediagoblin/base.html:71
|
||||
msgid "log out"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:74
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:27
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:35
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:45
|
||||
msgid "Log in"
|
||||
msgstr "Prijava"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:89
|
||||
#: mediagoblin/templates/mediagoblin/base.html:86
|
||||
msgid ""
|
||||
"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
|
||||
"href=\"http://gnu.org/\">GNU</a> project"
|
||||
@@ -194,85 +251,52 @@ msgstr ""
|
||||
msgid "Explore"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:27
|
||||
msgid "Hi there, media lover! MediaGoblin is..."
|
||||
msgstr "Pozdravljen, ljubitelj večpredstavnostnih vsebin! MediaGoblin je ..."
|
||||
#: mediagoblin/templates/mediagoblin/root.html:26
|
||||
msgid "Hi there, welcome to this MediaGoblin site!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:28
|
||||
msgid ""
|
||||
"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
|
||||
"extraordinarily great piece of media hosting software."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:29
|
||||
msgid "The perfect place for your media!"
|
||||
msgstr "Popolno mesto za vaše večpredstavnostne vsebine."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:30
|
||||
msgid ""
|
||||
"A place for people to collaborate and show off original and derived "
|
||||
"creations!"
|
||||
"To add your own media, place comments, save your favourites and more, you "
|
||||
"can log in with your MediaGoblin account."
|
||||
msgstr ""
|
||||
"Mesto, kjer ljudje lahko sodelujejo in razkazujejo originalne in predelane "
|
||||
"stvaritve."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:31
|
||||
msgid ""
|
||||
"Free, as in freedom. (We’re a <a href=\"http://gnu.org\">GNU</a> project, "
|
||||
"after all.)"
|
||||
msgid "Don't have one yet? It's easy!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:32
|
||||
msgid ""
|
||||
"Aiming to make the world a better place through decentralization and "
|
||||
"(eventually, coming soon!) federation!"
|
||||
msgstr ""
|
||||
"Ustvarjen z namenom izboljšati svet, s pomočjo decentralizacije in (kmalu) "
|
||||
"federacije."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:33
|
||||
msgid ""
|
||||
"Built for extensibility. (Multiple media types coming soon to the software,"
|
||||
" including video support!)"
|
||||
msgstr ""
|
||||
"Zgrajen za razširjanje. (Kmalu bodo na voljo dodatne vrste vsebin, vključno "
|
||||
"podpora za video)"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:34
|
||||
msgid ""
|
||||
"Powered by people like you. (<a "
|
||||
"href=\"http://mediagoblin.org/pages/join.html\">You can help us improve this"
|
||||
" software!</a>)"
|
||||
msgstr ""
|
||||
"Sad dela ljudi, kot ste vi. (<a "
|
||||
"href=\"http://mediagoblin.org/pages/join.html\">Pri izboljševanju nam lahko "
|
||||
"pomagate tudi vi.</a>)"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:38
|
||||
msgid "Excited to join us?"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:39
|
||||
#, python-format
|
||||
msgid ""
|
||||
"<a class=\"header_submit_highlight\" href=\"%(register_url)s\">Create a free account</a>\n"
|
||||
" or\n"
|
||||
" <a class=\"header_submit\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
|
||||
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Create an account at this site</a>\n"
|
||||
" or\n"
|
||||
" <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:53
|
||||
#: mediagoblin/templates/mediagoblin/root.html:40
|
||||
msgid "Most recent media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:29
|
||||
msgid "Enter your new password"
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:32
|
||||
msgid "Set your new password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:29
|
||||
msgid "Enter your username or email"
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:35
|
||||
msgid "Set password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_changed_success.html:22
|
||||
msgid "Your password has been changed. Try to log in now."
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:27
|
||||
msgid "Recover password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_email_sent.html:22
|
||||
msgid ""
|
||||
"Check your inbox. We sent an email with a URL for changing your password."
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:30
|
||||
msgid "Send instructions"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_verification_email.txt:19
|
||||
@@ -293,27 +317,23 @@ msgstr ""
|
||||
msgid "Logging in failed!"
|
||||
msgstr "Prijava ni uspela."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:43
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:35
|
||||
msgid "Don't have an account yet?"
|
||||
msgstr "Še nimate računa?"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:46
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:36
|
||||
msgid "Create one here!"
|
||||
msgstr "Ustvarite si ga."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:49
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:42
|
||||
msgid "Forgot your password?"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:52
|
||||
msgid "Change it!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:27
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:32
|
||||
msgid "Create an account!"
|
||||
msgstr "Ustvarite račun."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:31
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:36
|
||||
msgid "Create"
|
||||
msgstr "Ustvari"
|
||||
|
||||
@@ -345,36 +365,114 @@ msgid "Cancel"
|
||||
msgstr "Prekliči"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit.html:37
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
|
||||
msgid "Save changes"
|
||||
msgstr "Shrani spremembe"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:34
|
||||
#, python-format
|
||||
msgid "Changing %(username)s's account settings"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:29
|
||||
#, python-format
|
||||
msgid "Editing %(username)s's profile"
|
||||
msgstr "Urejanje profila – %(username)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:31
|
||||
msgid "Media tagged with:"
|
||||
msgstr "Vsebina označena z:"
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:30
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:35
|
||||
#, python-format
|
||||
msgid "Media tagged with: %(tag_name)s"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:46
|
||||
msgid "Original"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:33
|
||||
msgid ""
|
||||
"Sorry, this video will not work because \n"
|
||||
"\t your web browser does not support HTML5 \n"
|
||||
"\t video."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:36
|
||||
msgid ""
|
||||
"You can get a modern web browser that \n"
|
||||
"\t can play this video at <a href=\"http://getfirefox.com\">\n"
|
||||
"\t http://getfirefox.com</a>!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/submit/start.html:26
|
||||
msgid "Submit yer media"
|
||||
msgstr "Pošljite svojo vsebino"
|
||||
msgid "Add your media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/submit/start.html:30
|
||||
msgid "Submit"
|
||||
msgstr "Pošlji"
|
||||
msgid "Add"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:32
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
|
||||
#, python-format
|
||||
msgid "%(username)s's media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:37
|
||||
#, python-format
|
||||
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
|
||||
msgstr "Vsebina uporabnika <a href=\"%(user_url)s\">%(username)s</a>"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:52
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:32
|
||||
msgid "Sorry, no such user found."
|
||||
msgstr "Oprostite, tega uporabnika ni bilo moč najti."
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:60
|
||||
#, python-format
|
||||
msgid "Added on %(date)s."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
|
||||
msgid "Edit"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
|
||||
#, python-format
|
||||
msgid "%(comment_count)s comment"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:81
|
||||
#, python-format
|
||||
msgid "%(comment_count)s comments"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
|
||||
msgid "No comments yet."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:91
|
||||
msgid "Add one"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:100
|
||||
msgid ""
|
||||
"Type your comment here. You can use <a "
|
||||
"href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> for"
|
||||
" formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:104
|
||||
msgid "Add this comment"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:126
|
||||
msgid "at"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:141
|
||||
#, python-format
|
||||
msgid "<p>❖ Browsing media by <a href=\"%(user_url)s\">%(username)s</a></p>"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
|
||||
#, python-format
|
||||
@@ -406,29 +504,39 @@ msgstr "V obdelavi ni nobene vsebine"
|
||||
msgid "These uploads failed to process:"
|
||||
msgstr "Teh vsebin ni bilo moč obdelati:"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:39
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:59
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:31
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:89
|
||||
#, python-format
|
||||
msgid "%(username)s's profile"
|
||||
msgstr "Profil – %(username)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:43
|
||||
msgid "Sorry, no such user found."
|
||||
msgstr "Oprostite, tega uporabnika ni bilo moč najti."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:50
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:70
|
||||
msgid "Email verification needed"
|
||||
msgstr "Potrebna je potrditev prek e-pošte"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:42
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
|
||||
msgid "Almost done! Your account still needs to be activated."
|
||||
msgstr "Skoraj ste zaključili. Svoj račun morate le še aktivirati."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:47
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:58
|
||||
msgid ""
|
||||
"An email should arrive in a few moments with instructions on how to do so."
|
||||
msgstr "V kratkem bi morali prejeti e-pošto z navodili, kako to storiti."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:51
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
|
||||
msgid "In case it doesn't:"
|
||||
msgstr "Če je ne prejmete:"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:54
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:65
|
||||
msgid "Resend verification email"
|
||||
msgstr "Ponovno pošlji potrditveno e-pošto"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:73
|
||||
msgid ""
|
||||
"Someone has registered an account with this username, but it still has to be"
|
||||
" activated."
|
||||
@@ -436,7 +544,7 @@ msgstr ""
|
||||
"Nekdo je s tem uporabniškim imenom že registriral račun, vendar mora biti še"
|
||||
" aktiviran."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:68
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:79
|
||||
#, python-format
|
||||
msgid ""
|
||||
"If you are that person but you've lost your verification email, you can <a "
|
||||
@@ -445,40 +553,36 @@ msgstr ""
|
||||
"Če ste ta oseba vi, a ste izgubili potrditveno e-pošto, se lahko <a "
|
||||
"href=\"%(login_url)s\">prijavite</a> in jo ponovno pošljete."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:78
|
||||
#, python-format
|
||||
msgid "%(username)s's profile"
|
||||
msgstr "Profil – %(username)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:85
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
|
||||
msgid "Here's a spot to tell others about yourself."
|
||||
msgstr "Na tem mestu lahko drugim poveste nekaj o sebi."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:90
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:108
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:101
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
|
||||
msgid "Edit profile"
|
||||
msgstr "Uredi profil"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
|
||||
msgid "This user hasn't filled in their profile (yet)."
|
||||
msgstr "Ta uporabnik še ni izpolnil svojega profila."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:122
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:125
|
||||
msgid "Change account settings"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:138
|
||||
#, python-format
|
||||
msgid "View all of %(username)s's media"
|
||||
msgstr "Prikaži vso vsebino uporabnika %(username)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:135
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:151
|
||||
msgid ""
|
||||
"This is where your media will appear, but you don't seem to have added "
|
||||
"anything yet."
|
||||
msgstr "Tu bo prikazana vaša vsebina, a trenutno še niste dodali nič."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:141
|
||||
msgid "Add media"
|
||||
msgstr "Dodaj vsebino"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:147
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:163
|
||||
#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:72
|
||||
msgid "There doesn't seem to be any media here yet..."
|
||||
msgstr "Videti je, da tu še ni nobene vsebine ..."
|
||||
|
||||
@@ -490,31 +594,57 @@ msgstr "Ikona vira"
|
||||
msgid "Atom feed"
|
||||
msgstr "Ikona Atom"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:40
|
||||
msgid "Newer"
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
|
||||
msgid "← Newer"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:46
|
||||
msgid "Older"
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
|
||||
msgid "Older →"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/forms.py:24
|
||||
msgid "Comment"
|
||||
msgstr "Komentar"
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
|
||||
msgid "Go to page:"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:27
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:32
|
||||
msgid "newer"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:38
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:43
|
||||
msgid "older"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/tags.html:20
|
||||
msgid "View more media tagged with"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/tags.html:25
|
||||
msgid "or"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/forms.py:30
|
||||
msgid "I am sure I want to delete this"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/views.py:142
|
||||
msgid "Empty comments are not allowed."
|
||||
#: mediagoblin/user_pages/views.py:155
|
||||
msgid "Oops, your comment was empty."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/views.py:148
|
||||
msgid "Comment posted!"
|
||||
#: mediagoblin/user_pages/views.py:161
|
||||
msgid "Your comment has been posted!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/views.py:181
|
||||
#: mediagoblin/user_pages/views.py:183
|
||||
msgid "You deleted the media."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/views.py:190
|
||||
msgid "The media was not deleted because you didn't check that you were sure."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/views.py:198
|
||||
msgid "You are about to delete another user's media. Proceed with caution."
|
||||
msgstr ""
|
||||
|
||||
|
||||
Binary file not shown.
@@ -1,5 +1,5 @@
|
||||
# Translations template for PROJECT.
|
||||
# Copyright (C) 2011 ORGANIZATION
|
||||
# Copyright (C) 2012 ORGANIZATION
|
||||
# This file is distributed under the same license as the PROJECT project.
|
||||
#
|
||||
# Translators:
|
||||
@@ -7,8 +7,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: GNU MediaGoblin\n"
|
||||
"Report-Msgid-Bugs-To: http://bugs.foocorp.net/projects/mediagoblin/issues\n"
|
||||
"POT-Creation-Date: 2011-11-01 23:14-0500\n"
|
||||
"PO-Revision-Date: 2011-11-02 04:13+0000\n"
|
||||
"POT-Creation-Date: 2012-01-07 13:47-0600\n"
|
||||
"PO-Revision-Date: 2012-01-07 19:44+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"
|
||||
@@ -18,27 +18,19 @@ msgstr ""
|
||||
"Language: sr\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
|
||||
|
||||
#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:49
|
||||
#: mediagoblin/processing.py:143
|
||||
msgid "Invalid file given for media type."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:41
|
||||
msgid "Username"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:53
|
||||
#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:45
|
||||
msgid "Password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/forms.py:35
|
||||
msgid "Passwords must match."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/forms.py:37
|
||||
msgid "Confirm password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/forms.py:39
|
||||
msgid "Type it again here to make sure there are no spelling mistakes."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/forms.py:42
|
||||
#: mediagoblin/auth/forms.py:34
|
||||
msgid "Email address"
|
||||
msgstr ""
|
||||
|
||||
@@ -51,95 +43,163 @@ msgid "Sorry, a user with that name already exists."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:77
|
||||
msgid "Sorry, that email address has already been taken."
|
||||
msgid "Sorry, a user with that email address already exists."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:179
|
||||
#: mediagoblin/auth/views.py:180
|
||||
msgid ""
|
||||
"Your email address has been verified. You may now login, edit your profile, "
|
||||
"and submit images!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:185
|
||||
#: mediagoblin/auth/views.py:186
|
||||
msgid "The verification key or user id is incorrect"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:207
|
||||
#: mediagoblin/auth/views.py:204
|
||||
msgid "You must be logged in so we know who to send the email to!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:212
|
||||
msgid "You've already verified your email address!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:225
|
||||
msgid "Resent your verification email."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:248
|
||||
#: mediagoblin/auth/views.py:260
|
||||
msgid ""
|
||||
"An email has been sent with instructions on how to change your password."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:270
|
||||
msgid ""
|
||||
"Could not send password recovery email as your username is inactive or your "
|
||||
"account's email address has not been verified."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:282
|
||||
msgid "Couldn't find someone with that username or email."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:330
|
||||
msgid "You can now log in using your new password."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:24 mediagoblin/submit/forms.py:27
|
||||
msgid "Title"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:28 mediagoblin/submit/forms.py:32
|
||||
#: mediagoblin/edit/forms.py:27 mediagoblin/submit/forms.py:30
|
||||
msgid "Description of this work"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:28 mediagoblin/submit/forms.py:31
|
||||
msgid ""
|
||||
"You can use\n"
|
||||
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
|
||||
" Markdown</a> for formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:32 mediagoblin/submit/forms.py:35
|
||||
msgid "Tags"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:31
|
||||
#: mediagoblin/edit/forms.py:34 mediagoblin/submit/forms.py:37
|
||||
msgid "Separate tags by commas."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:37
|
||||
msgid "Slug"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:32
|
||||
#: mediagoblin/edit/forms.py:38
|
||||
msgid "The slug can't be empty"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:33
|
||||
#: mediagoblin/edit/forms.py:39
|
||||
msgid ""
|
||||
"The title part of this media's URL. You usually don't need to change this."
|
||||
"The title part of this media's address. You usually don't need to change "
|
||||
"this."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:40
|
||||
#: mediagoblin/edit/forms.py:46
|
||||
msgid "Bio"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:43
|
||||
#: mediagoblin/edit/forms.py:48
|
||||
msgid ""
|
||||
"You can use\n"
|
||||
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
|
||||
" Markdown</a> for formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:53
|
||||
msgid "Website"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:64
|
||||
#: mediagoblin/edit/forms.py:60
|
||||
msgid "Old password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:62
|
||||
msgid "Enter your old password to prove you own this account."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:65
|
||||
msgid "New password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:65
|
||||
msgid "An entry with that slug already exists for this user."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:85
|
||||
#: mediagoblin/edit/views.py:86
|
||||
msgid "You are editing another user's media. Proceed with caution."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:155
|
||||
#: mediagoblin/edit/views.py:156
|
||||
msgid "You are editing a user's profile. Proceed with caution."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/process_media/errors.py:44
|
||||
msgid "Invalid file given for media type."
|
||||
#: mediagoblin/edit/views.py:174
|
||||
msgid "Profile changes saved"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:200
|
||||
msgid "Wrong password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:216
|
||||
msgid "Account settings saved"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/media_types/__init__.py:77
|
||||
msgid "Could not extract any file extension from \"{filename}\""
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/media_types/__init__.py:88
|
||||
msgid "Sorry, I don't support that file type :("
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/submit/forms.py:25
|
||||
msgid "File"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/submit/forms.py:30
|
||||
msgid "Description of this work"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/submit/views.py:46
|
||||
#: mediagoblin/submit/views.py:50
|
||||
msgid "You must provide a file."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/submit/views.py:49
|
||||
msgid "The file doesn't seem to be an image!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/submit/views.py:121
|
||||
#: mediagoblin/submit/views.py:128
|
||||
msgid "Woohoo! Submitted!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:21
|
||||
#: mediagoblin/templates/mediagoblin/404.html:22
|
||||
msgid "Image of 404 goblin stressing out"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:23
|
||||
msgid "Oops!"
|
||||
msgstr ""
|
||||
|
||||
@@ -153,33 +213,30 @@ msgid ""
|
||||
" been moved or deleted."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:32
|
||||
msgid "Image of 404 goblin stressing out"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:22
|
||||
msgid "GNU MediaGoblin"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:47
|
||||
#: mediagoblin/templates/mediagoblin/base.html:48
|
||||
msgid "MediaGoblin logo"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:52
|
||||
msgid "Submit media"
|
||||
#: mediagoblin/templates/mediagoblin/base.html:53
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:157
|
||||
msgid "Add media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:63
|
||||
msgid "verify your email!"
|
||||
#: mediagoblin/templates/mediagoblin/base.html:64
|
||||
msgid "Verify your email!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:73
|
||||
#: mediagoblin/templates/mediagoblin/base.html:71
|
||||
msgid "log out"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:74
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:27
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:35
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:45
|
||||
msgid "Log in"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:89
|
||||
#: mediagoblin/templates/mediagoblin/base.html:86
|
||||
msgid ""
|
||||
"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
|
||||
"href=\"http://gnu.org/\">GNU</a> project"
|
||||
@@ -189,76 +246,52 @@ msgstr ""
|
||||
msgid "Explore"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:27
|
||||
msgid "Hi there, media lover! MediaGoblin is..."
|
||||
#: mediagoblin/templates/mediagoblin/root.html:26
|
||||
msgid "Hi there, welcome to this MediaGoblin site!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:28
|
||||
msgid ""
|
||||
"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
|
||||
"extraordinarily great piece of media hosting software."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:29
|
||||
msgid "The perfect place for your media!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:30
|
||||
msgid ""
|
||||
"A place for people to collaborate and show off original and derived "
|
||||
"creations!"
|
||||
"To add your own media, place comments, save your favourites and more, you "
|
||||
"can log in with your MediaGoblin account."
|
||||
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.)"
|
||||
msgid "Don't have one yet? It's easy!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:32
|
||||
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 ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:34
|
||||
msgid ""
|
||||
"Powered by people like you. (<a "
|
||||
"href=\"http://mediagoblin.org/pages/join.html\">You can help us improve this"
|
||||
" software!</a>)"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:38
|
||||
msgid "Excited to join us?"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:39
|
||||
#, python-format
|
||||
msgid ""
|
||||
"<a class=\"header_submit_highlight\" href=\"%(register_url)s\">Create a free account</a>\n"
|
||||
" or\n"
|
||||
" <a class=\"header_submit\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
|
||||
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Create an account at this site</a>\n"
|
||||
" or\n"
|
||||
" <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:53
|
||||
#: mediagoblin/templates/mediagoblin/root.html:40
|
||||
msgid "Most recent media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:29
|
||||
msgid "Enter your new password"
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:32
|
||||
msgid "Set your new password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:29
|
||||
msgid "Enter your username or email"
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:35
|
||||
msgid "Set password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_changed_success.html:22
|
||||
msgid "Your password has been changed. Try to log in now."
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:27
|
||||
msgid "Recover password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_email_sent.html:22
|
||||
msgid ""
|
||||
"Check your inbox. We sent an email with a URL for changing your password."
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:30
|
||||
msgid "Send instructions"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_verification_email.txt:19
|
||||
@@ -279,27 +312,23 @@ msgstr ""
|
||||
msgid "Logging in failed!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:43
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:35
|
||||
msgid "Don't have an account yet?"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:46
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:36
|
||||
msgid "Create one here!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:49
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:42
|
||||
msgid "Forgot your password?"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:52
|
||||
msgid "Change it!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:27
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:32
|
||||
msgid "Create an account!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:31
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:36
|
||||
msgid "Create"
|
||||
msgstr ""
|
||||
|
||||
@@ -325,35 +354,113 @@ msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit.html:37
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
|
||||
msgid "Save changes"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:34
|
||||
#, python-format
|
||||
msgid "Changing %(username)s's account settings"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:29
|
||||
#, python-format
|
||||
msgid "Editing %(username)s's profile"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:31
|
||||
msgid "Media tagged with:"
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:30
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:35
|
||||
#, python-format
|
||||
msgid "Media tagged with: %(tag_name)s"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:46
|
||||
msgid "Original"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:33
|
||||
msgid ""
|
||||
"Sorry, this video will not work because \n"
|
||||
"\t your web browser does not support HTML5 \n"
|
||||
"\t video."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:36
|
||||
msgid ""
|
||||
"You can get a modern web browser that \n"
|
||||
"\t can play this video at <a href=\"http://getfirefox.com\">\n"
|
||||
"\t http://getfirefox.com</a>!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/submit/start.html:26
|
||||
msgid "Submit yer media"
|
||||
msgid "Add your media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/submit/start.html:30
|
||||
msgid "Submit"
|
||||
msgid "Add"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:32
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
|
||||
#, python-format
|
||||
msgid "%(username)s's media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:37
|
||||
#, python-format
|
||||
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:52
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:32
|
||||
msgid "Sorry, no such user found."
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:60
|
||||
#, python-format
|
||||
msgid "Added on %(date)s."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
|
||||
msgid "Edit"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
|
||||
#, python-format
|
||||
msgid "%(comment_count)s comment"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:81
|
||||
#, python-format
|
||||
msgid "%(comment_count)s comments"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
|
||||
msgid "No comments yet."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:91
|
||||
msgid "Add one"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:100
|
||||
msgid ""
|
||||
"Type your comment here. You can use <a "
|
||||
"href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> for"
|
||||
" formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:104
|
||||
msgid "Add this comment"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:126
|
||||
msgid "at"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:141
|
||||
#, python-format
|
||||
msgid "<p>❖ Browsing media by <a href=\"%(user_url)s\">%(username)s</a></p>"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
|
||||
@@ -386,75 +493,81 @@ msgstr ""
|
||||
msgid "These uploads failed to process:"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:39
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:59
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:31
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:89
|
||||
#, python-format
|
||||
msgid "%(username)s's profile"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:43
|
||||
msgid "Sorry, no such user found."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:50
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:70
|
||||
msgid "Email verification needed"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:42
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
|
||||
msgid "Almost done! Your account still needs to be activated."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:47
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:58
|
||||
msgid ""
|
||||
"An email should arrive in a few moments with instructions on how to do so."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:51
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
|
||||
msgid "In case it doesn't:"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:54
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:65
|
||||
msgid "Resend verification email"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:73
|
||||
msgid ""
|
||||
"Someone has registered an account with this username, but it still has to be"
|
||||
" activated."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:68
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:79
|
||||
#, python-format
|
||||
msgid ""
|
||||
"If you are that person but you've lost your verification email, you can <a "
|
||||
"href=\"%(login_url)s\">log in</a> and resend it."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:78
|
||||
#, python-format
|
||||
msgid "%(username)s's profile"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:85
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
|
||||
msgid "Here's a spot to tell others about yourself."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:90
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:108
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:101
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
|
||||
msgid "Edit profile"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
|
||||
msgid "This user hasn't filled in their profile (yet)."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:122
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:125
|
||||
msgid "Change account settings"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:138
|
||||
#, python-format
|
||||
msgid "View all of %(username)s's media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:135
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:151
|
||||
msgid ""
|
||||
"This is where your media will appear, but you don't seem to have added "
|
||||
"anything yet."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:141
|
||||
msgid "Add media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:147
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:163
|
||||
#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:72
|
||||
msgid "There doesn't seem to be any media here yet..."
|
||||
msgstr ""
|
||||
|
||||
@@ -466,31 +579,57 @@ msgstr ""
|
||||
msgid "Atom feed"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:40
|
||||
msgid "Newer"
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
|
||||
msgid "← Newer"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:46
|
||||
msgid "Older"
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
|
||||
msgid "Older →"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/forms.py:24
|
||||
msgid "Comment"
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
|
||||
msgid "Go to page:"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:27
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:32
|
||||
msgid "newer"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:38
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:43
|
||||
msgid "older"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/tags.html:20
|
||||
msgid "View more media tagged with"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/tags.html:25
|
||||
msgid "or"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/forms.py:30
|
||||
msgid "I am sure I want to delete this"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/views.py:142
|
||||
msgid "Empty comments are not allowed."
|
||||
#: mediagoblin/user_pages/views.py:155
|
||||
msgid "Oops, your comment was empty."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/views.py:148
|
||||
msgid "Comment posted!"
|
||||
#: mediagoblin/user_pages/views.py:161
|
||||
msgid "Your comment has been posted!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/views.py:181
|
||||
#: mediagoblin/user_pages/views.py:183
|
||||
msgid "You deleted the media."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/views.py:190
|
||||
msgid "The media was not deleted because you didn't check that you were sure."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/views.py:198
|
||||
msgid "You are about to delete another user's media. Proceed with caution."
|
||||
msgstr ""
|
||||
|
||||
|
||||
Binary file not shown.
@@ -1,5 +1,5 @@
|
||||
# Translations template for PROJECT.
|
||||
# Copyright (C) 2011 ORGANIZATION
|
||||
# Copyright (C) 2012 ORGANIZATION
|
||||
# This file is distributed under the same license as the PROJECT project.
|
||||
#
|
||||
# Translators:
|
||||
@@ -9,8 +9,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: GNU MediaGoblin\n"
|
||||
"Report-Msgid-Bugs-To: http://bugs.foocorp.net/projects/mediagoblin/issues\n"
|
||||
"POT-Creation-Date: 2011-11-01 23:14-0500\n"
|
||||
"PO-Revision-Date: 2011-11-02 04:13+0000\n"
|
||||
"POT-Creation-Date: 2012-01-07 13:47-0600\n"
|
||||
"PO-Revision-Date: 2012-01-07 19:44+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"
|
||||
@@ -20,27 +20,19 @@ msgstr ""
|
||||
"Language: sv\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
|
||||
#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:49
|
||||
#: mediagoblin/processing.py:143
|
||||
msgid "Invalid file given for media type."
|
||||
msgstr "Ogiltig fil för mediatypen."
|
||||
|
||||
#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:41
|
||||
msgid "Username"
|
||||
msgstr "Användarnamn"
|
||||
|
||||
#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:53
|
||||
#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:45
|
||||
msgid "Password"
|
||||
msgstr "Lösenord"
|
||||
|
||||
#: mediagoblin/auth/forms.py:35
|
||||
msgid "Passwords must match."
|
||||
msgstr "Lösenorden måste vara identiska."
|
||||
|
||||
#: mediagoblin/auth/forms.py:37
|
||||
msgid "Confirm password"
|
||||
msgstr "Bekräfta lösenord"
|
||||
|
||||
#: mediagoblin/auth/forms.py:39
|
||||
msgid "Type it again here to make sure there are no spelling mistakes."
|
||||
msgstr "Skriv in det igen för att undvika stavfel."
|
||||
|
||||
#: mediagoblin/auth/forms.py:42
|
||||
#: mediagoblin/auth/forms.py:34
|
||||
msgid "Email address"
|
||||
msgstr "E-postadress"
|
||||
|
||||
@@ -53,10 +45,10 @@ msgid "Sorry, a user with that name already exists."
|
||||
msgstr "En användare med det användarnamnet finns redan."
|
||||
|
||||
#: mediagoblin/auth/views.py:77
|
||||
msgid "Sorry, that email address has already been taken."
|
||||
msgstr "Den e-postadressen är redan tagen."
|
||||
msgid "Sorry, a user with that email address already exists."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:179
|
||||
#: mediagoblin/auth/views.py:180
|
||||
msgid ""
|
||||
"Your email address has been verified. You may now login, edit your profile, "
|
||||
"and submit images!"
|
||||
@@ -64,15 +56,28 @@ msgstr ""
|
||||
"Din e-postadress är verifierad. Du kan nu logga in, redigera din profil och "
|
||||
"ladda upp filer!"
|
||||
|
||||
#: mediagoblin/auth/views.py:185
|
||||
#: mediagoblin/auth/views.py:186
|
||||
msgid "The verification key or user id is incorrect"
|
||||
msgstr "Verifieringsnyckeln eller användar-IDt är fel."
|
||||
|
||||
#: mediagoblin/auth/views.py:207
|
||||
#: mediagoblin/auth/views.py:204
|
||||
msgid "You must be logged in so we know who to send the email to!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:212
|
||||
msgid "You've already verified your email address!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:225
|
||||
msgid "Resent your verification email."
|
||||
msgstr "Skickade ett nytt verifierings-email."
|
||||
|
||||
#: mediagoblin/auth/views.py:248
|
||||
#: mediagoblin/auth/views.py:260
|
||||
msgid ""
|
||||
"An email has been sent with instructions on how to change your password."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:270
|
||||
msgid ""
|
||||
"Could not send password recovery email as your username is inactive or your "
|
||||
"account's email address has not been verified."
|
||||
@@ -80,72 +85,127 @@ msgstr ""
|
||||
"Kunde inte skicka e-poståterställning av lösenord eftersom ditt användarnamn"
|
||||
" är inaktivt eller kontots e-postadress har inte verifierats."
|
||||
|
||||
#: mediagoblin/auth/views.py:282
|
||||
msgid "Couldn't find someone with that username or email."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:330
|
||||
msgid "You can now log in using your new password."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:24 mediagoblin/submit/forms.py:27
|
||||
msgid "Title"
|
||||
msgstr "Titel"
|
||||
|
||||
#: mediagoblin/edit/forms.py:28 mediagoblin/submit/forms.py:32
|
||||
#: mediagoblin/edit/forms.py:27 mediagoblin/submit/forms.py:30
|
||||
msgid "Description of this work"
|
||||
msgstr "Beskrivning av verket"
|
||||
|
||||
#: mediagoblin/edit/forms.py:28 mediagoblin/submit/forms.py:31
|
||||
msgid ""
|
||||
"You can use\n"
|
||||
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
|
||||
" Markdown</a> for formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:32 mediagoblin/submit/forms.py:35
|
||||
msgid "Tags"
|
||||
msgstr "Taggar"
|
||||
|
||||
#: mediagoblin/edit/forms.py:31
|
||||
#: mediagoblin/edit/forms.py:34 mediagoblin/submit/forms.py:37
|
||||
msgid "Separate tags by commas."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:37
|
||||
msgid "Slug"
|
||||
msgstr "Sökvägsnamn"
|
||||
|
||||
#: mediagoblin/edit/forms.py:32
|
||||
#: mediagoblin/edit/forms.py:38
|
||||
msgid "The slug can't be empty"
|
||||
msgstr "Sökvägsnamnet kan inte vara tomt"
|
||||
|
||||
#: mediagoblin/edit/forms.py:33
|
||||
#: mediagoblin/edit/forms.py:39
|
||||
msgid ""
|
||||
"The title part of this media's URL. You usually don't need to change this."
|
||||
msgstr "Sökvägstitlen för din media. Du brukar inte behöva ändra denna."
|
||||
"The title part of this media's address. You usually don't need to change "
|
||||
"this."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:40
|
||||
#: mediagoblin/edit/forms.py:46
|
||||
msgid "Bio"
|
||||
msgstr "Presentation"
|
||||
|
||||
#: mediagoblin/edit/forms.py:43
|
||||
#: mediagoblin/edit/forms.py:48
|
||||
msgid ""
|
||||
"You can use\n"
|
||||
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
|
||||
" Markdown</a> for formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:53
|
||||
msgid "Website"
|
||||
msgstr "Hemsida"
|
||||
|
||||
#: mediagoblin/edit/views.py:64
|
||||
#: mediagoblin/edit/forms.py:60
|
||||
msgid "Old password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:62
|
||||
msgid "Enter your old password to prove you own this account."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:65
|
||||
msgid "New password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:65
|
||||
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:85
|
||||
#: mediagoblin/edit/views.py:86
|
||||
msgid "You are editing another user's media. Proceed with caution."
|
||||
msgstr "Var försiktig, du redigerar någon annans inlägg."
|
||||
|
||||
#: mediagoblin/edit/views.py:155
|
||||
#: mediagoblin/edit/views.py:156
|
||||
msgid "You are editing a user's profile. Proceed with caution."
|
||||
msgstr "Var försiktig, du redigerar en annan användares profil."
|
||||
|
||||
#: mediagoblin/process_media/errors.py:44
|
||||
msgid "Invalid file given for media type."
|
||||
msgstr "Ogiltig fil för mediatypen."
|
||||
#: mediagoblin/edit/views.py:174
|
||||
msgid "Profile changes saved"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:200
|
||||
msgid "Wrong password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:216
|
||||
msgid "Account settings saved"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/media_types/__init__.py:77
|
||||
msgid "Could not extract any file extension from \"{filename}\""
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/media_types/__init__.py:88
|
||||
msgid "Sorry, I don't support that file type :("
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/submit/forms.py:25
|
||||
msgid "File"
|
||||
msgstr "Fil"
|
||||
|
||||
#: mediagoblin/submit/forms.py:30
|
||||
msgid "Description of this work"
|
||||
msgstr "Beskrivning av verket"
|
||||
|
||||
#: mediagoblin/submit/views.py:46
|
||||
#: mediagoblin/submit/views.py:50
|
||||
msgid "You must provide a file."
|
||||
msgstr "Du måste ange en fil"
|
||||
|
||||
#: mediagoblin/submit/views.py:49
|
||||
msgid "The file doesn't seem to be an image!"
|
||||
msgstr "Filen verkar inte vara en giltig bildfil!"
|
||||
|
||||
#: mediagoblin/submit/views.py:121
|
||||
#: mediagoblin/submit/views.py:128
|
||||
msgid "Woohoo! Submitted!"
|
||||
msgstr "Tjohoo! Upladdat!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:21
|
||||
#: mediagoblin/templates/mediagoblin/404.html:22
|
||||
msgid "Image of 404 goblin stressing out"
|
||||
msgstr "Bild av stressat 404-troll."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:23
|
||||
msgid "Oops!"
|
||||
msgstr "Ojoj!"
|
||||
|
||||
@@ -161,33 +221,30 @@ msgstr ""
|
||||
"Om du är säker på att adressen stämmer så kanske sidan du letar efter har "
|
||||
"flyttats eller tagits bort."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:32
|
||||
msgid "Image of 404 goblin stressing out"
|
||||
msgstr "Bild av stressat 404-troll."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:22
|
||||
msgid "GNU MediaGoblin"
|
||||
msgstr "GNU MediaGoblin"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:47
|
||||
#: mediagoblin/templates/mediagoblin/base.html:48
|
||||
msgid "MediaGoblin logo"
|
||||
msgstr "MediaGoblin-logotyp"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:52
|
||||
msgid "Submit media"
|
||||
msgstr "Ladda upp"
|
||||
#: mediagoblin/templates/mediagoblin/base.html:53
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:157
|
||||
msgid "Add media"
|
||||
msgstr "Lägg till media"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:63
|
||||
msgid "verify your email!"
|
||||
msgstr "Verifiera din e-postadress!"
|
||||
#: mediagoblin/templates/mediagoblin/base.html:64
|
||||
msgid "Verify your email!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:73
|
||||
#: mediagoblin/templates/mediagoblin/base.html:71
|
||||
msgid "log out"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:74
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:27
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:35
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:45
|
||||
msgid "Log in"
|
||||
msgstr "Logga in"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:89
|
||||
#: mediagoblin/templates/mediagoblin/base.html:86
|
||||
msgid ""
|
||||
"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
|
||||
"href=\"http://gnu.org/\">GNU</a> project"
|
||||
@@ -199,97 +256,53 @@ msgstr ""
|
||||
msgid "Explore"
|
||||
msgstr "Utforska"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:27
|
||||
msgid "Hi there, media lover! MediaGoblin is..."
|
||||
msgstr "Hej där mediaentusiast, MediaGoblin..."
|
||||
#: mediagoblin/templates/mediagoblin/root.html:26
|
||||
msgid "Hi there, welcome to this MediaGoblin site!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:28
|
||||
msgid ""
|
||||
"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
|
||||
"extraordinarily great piece of media hosting software."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:29
|
||||
msgid "The perfect place for your media!"
|
||||
msgstr "Är ett perfekt ställe för din media!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:30
|
||||
msgid ""
|
||||
"A place for people to collaborate and show off original and derived "
|
||||
"creations!"
|
||||
"To add your own media, place comments, save your favourites and more, you "
|
||||
"can log in with your MediaGoblin account."
|
||||
msgstr ""
|
||||
"Är ett ställe för människor att samarbeta och visa upp originella och "
|
||||
"härrörande 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.)"
|
||||
msgid "Don't have one yet? It's easy!"
|
||||
msgstr ""
|
||||
"Är fritt som i frihet. (Vi är ju ett <a "
|
||||
"href=\"http://gnu.org\">GNU</a>-projekt.)"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:32
|
||||
msgid ""
|
||||
"Aiming to make the world a better place through decentralization and "
|
||||
"(eventually, coming soon!) federation!"
|
||||
msgstr ""
|
||||
"Arbetar för att göra världen till ett bättre ställe genom decentralisering "
|
||||
"och (så småningom, kommer snart!) -- Google Translate säger "
|
||||
"\"sammanslutning\", <em>en: <a "
|
||||
"href=\"http://en.wikipedia.org/wiki/Federation_(information_technology)\">federation</a></em>"
|
||||
" "
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:33
|
||||
msgid ""
|
||||
"Built for extensibility. (Multiple media types coming soon to the software,"
|
||||
" including video support!)"
|
||||
msgstr ""
|
||||
"Byggd för utbyggbarhet. (Flera mediatyper kommer snart till MediaGoblin, "
|
||||
"bland annat video!)"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:34
|
||||
msgid ""
|
||||
"Powered by people like you. (<a "
|
||||
"href=\"http://mediagoblin.org/pages/join.html\">You can help us improve this"
|
||||
" software!</a>)"
|
||||
msgstr ""
|
||||
"Drivs av människor som du. (<a "
|
||||
"href=\"http://mediagoblin.org/pages/join.html\">Du kan hjälpa os forbättra "
|
||||
"MediaGoblin!</a>)"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:38
|
||||
msgid "Excited to join us?"
|
||||
msgstr "Nyfiken att gå med oss?"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:39
|
||||
#, python-format
|
||||
msgid ""
|
||||
"<a class=\"header_submit_highlight\" href=\"%(register_url)s\">Create a free account</a>\n"
|
||||
" or\n"
|
||||
" <a class=\"header_submit\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
|
||||
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Create an account at this site</a>\n"
|
||||
" or\n"
|
||||
" <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
|
||||
msgstr ""
|
||||
"<a class=\"header_submit_highlight\" href=\"%(register_url)s\">Skapa ett konto gratis</a>\n"
|
||||
"\n"
|
||||
" or\n"
|
||||
" <a class=\"header_submit\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Installera MediaGoblin på din egen server</a>"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:53
|
||||
#: mediagoblin/templates/mediagoblin/root.html:40
|
||||
msgid "Most recent media"
|
||||
msgstr "Senast medier"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:29
|
||||
msgid "Enter your new password"
|
||||
msgstr "Fyll i ditt lösenord"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:29
|
||||
msgid "Enter your username or email"
|
||||
msgstr "Fyll i ditt användarnamn eller lösenord"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_changed_success.html:22
|
||||
msgid "Your password has been changed. Try to log in now."
|
||||
msgstr "Ditt lösenord är nu ändrat. Testa att logga in nu."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_email_sent.html:22
|
||||
msgid ""
|
||||
"Check your inbox. We sent an email with a URL for changing your password."
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:32
|
||||
msgid "Set your new password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:35
|
||||
msgid "Set password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:27
|
||||
msgid "Recover password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:30
|
||||
msgid "Send instructions"
|
||||
msgstr ""
|
||||
"Kolla din inkorg. Vi har skickat ett e-postmeddelande med en webbadress för "
|
||||
"att ändra ditt lösenord."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_verification_email.txt:19
|
||||
#, python-format
|
||||
@@ -317,27 +330,23 @@ msgstr ""
|
||||
msgid "Logging in failed!"
|
||||
msgstr "Inloggning misslyckades!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:43
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:35
|
||||
msgid "Don't have an account yet?"
|
||||
msgstr "Har du inget konto än?"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:46
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:36
|
||||
msgid "Create one here!"
|
||||
msgstr "Skapa ett här!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:49
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:42
|
||||
msgid "Forgot your password?"
|
||||
msgstr "Glömt ditt lösenord?"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:52
|
||||
msgid "Change it!"
|
||||
msgstr "Ändra!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:27
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:32
|
||||
msgid "Create an account!"
|
||||
msgstr "Skapa ett konto!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:31
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:36
|
||||
msgid "Create"
|
||||
msgstr "Skapa"
|
||||
|
||||
@@ -368,36 +377,114 @@ msgid "Cancel"
|
||||
msgstr "Avbryt"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit.html:37
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
|
||||
msgid "Save changes"
|
||||
msgstr "Spara ändringar"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:34
|
||||
#, python-format
|
||||
msgid "Changing %(username)s's account settings"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:29
|
||||
#, python-format
|
||||
msgid "Editing %(username)s's profile"
|
||||
msgstr "Redigerar %(username)ss profil"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:31
|
||||
msgid "Media tagged with:"
|
||||
msgstr "Media taggat med:"
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:30
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:35
|
||||
#, python-format
|
||||
msgid "Media tagged with: %(tag_name)s"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:46
|
||||
msgid "Original"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:33
|
||||
msgid ""
|
||||
"Sorry, this video will not work because \n"
|
||||
"\t your web browser does not support HTML5 \n"
|
||||
"\t video."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:36
|
||||
msgid ""
|
||||
"You can get a modern web browser that \n"
|
||||
"\t can play this video at <a href=\"http://getfirefox.com\">\n"
|
||||
"\t http://getfirefox.com</a>!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/submit/start.html:26
|
||||
msgid "Submit yer media"
|
||||
msgstr "Ladda upp"
|
||||
msgid "Add your media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/submit/start.html:30
|
||||
msgid "Submit"
|
||||
msgstr "Skicka"
|
||||
msgid "Add"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:32
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
|
||||
#, python-format
|
||||
msgid "%(username)s's media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:37
|
||||
#, python-format
|
||||
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
|
||||
msgstr "<a href=\"%(user_url)s\">%(username)s</a>s media"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:52
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:32
|
||||
msgid "Sorry, no such user found."
|
||||
msgstr "Ledsen, hittar ingen sådan användare."
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:60
|
||||
#, python-format
|
||||
msgid "Added on %(date)s."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
|
||||
msgid "Edit"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
|
||||
#, python-format
|
||||
msgid "%(comment_count)s comment"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:81
|
||||
#, python-format
|
||||
msgid "%(comment_count)s comments"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
|
||||
msgid "No comments yet."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:91
|
||||
msgid "Add one"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:100
|
||||
msgid ""
|
||||
"Type your comment here. You can use <a "
|
||||
"href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> for"
|
||||
" formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:104
|
||||
msgid "Add this comment"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:126
|
||||
msgid "at"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:141
|
||||
#, python-format
|
||||
msgid "<p>❖ Browsing media by <a href=\"%(user_url)s\">%(username)s</a></p>"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
|
||||
#, python-format
|
||||
@@ -429,30 +516,40 @@ msgstr "Ingen media under behandling"
|
||||
msgid "These uploads failed to process:"
|
||||
msgstr "De här behandlingarna misslyckades:"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:39
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:59
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:31
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:89
|
||||
#, python-format
|
||||
msgid "%(username)s's profile"
|
||||
msgstr "%(username)ss profil"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:43
|
||||
msgid "Sorry, no such user found."
|
||||
msgstr "Ledsen, hittar ingen sådan användare."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:50
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:70
|
||||
msgid "Email verification needed"
|
||||
msgstr "E-postadressverifiering krävs."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:42
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
|
||||
msgid "Almost done! Your account still needs to be activated."
|
||||
msgstr "Nästan klar! Ditt konto behöver bara aktiveras."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:47
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:58
|
||||
msgid ""
|
||||
"An email should arrive in a few moments with instructions on how to do so."
|
||||
msgstr ""
|
||||
"Ett e-postmeddelande med instruktioner kommer att hamna hos dig inom kort."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:51
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
|
||||
msgid "In case it doesn't:"
|
||||
msgstr "Om det inte skulle göra det:"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:54
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:65
|
||||
msgid "Resend verification email"
|
||||
msgstr "Skicka ett nytt e-postmeddelande"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:73
|
||||
msgid ""
|
||||
"Someone has registered an account with this username, but it still has to be"
|
||||
" activated."
|
||||
@@ -460,7 +557,7 @@ msgstr ""
|
||||
"Någon har redan registrerat ett konto med det här användarnamnet men det har"
|
||||
" inte aktiverats."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:68
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:79
|
||||
#, python-format
|
||||
msgid ""
|
||||
"If you are that person but you've lost your verification email, you can <a "
|
||||
@@ -470,30 +567,29 @@ msgstr ""
|
||||
"detaljer om hur du verifierar ditt konto så kan du <a "
|
||||
"href=\"%(login_url)s\">logga in</a> och begära ett nytt."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:78
|
||||
#, python-format
|
||||
msgid "%(username)s's profile"
|
||||
msgstr "%(username)ss profil"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:85
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
|
||||
msgid "Here's a spot to tell others about yourself."
|
||||
msgstr "Här kan du berätta för andra om dig själv."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:90
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:108
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:101
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
|
||||
msgid "Edit profile"
|
||||
msgstr "Redigera profil"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
|
||||
msgid "This user hasn't filled in their profile (yet)."
|
||||
msgstr "Den här användaren har inte fyllt i sin profilsida ännu."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:122
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:125
|
||||
msgid "Change account settings"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:138
|
||||
#, python-format
|
||||
msgid "View all of %(username)s's media"
|
||||
msgstr "Se all media från %(username)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:135
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:151
|
||||
msgid ""
|
||||
"This is where your media will appear, but you don't seem to have added "
|
||||
"anything yet."
|
||||
@@ -501,11 +597,8 @@ msgstr ""
|
||||
"Här kommer din media att dyka upp, du verkar inte ha lagt till någonting "
|
||||
"ännu."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:141
|
||||
msgid "Add media"
|
||||
msgstr "Lägg till media"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:147
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:163
|
||||
#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:72
|
||||
msgid "There doesn't seem to be any media here yet..."
|
||||
msgstr "Det verkar inte finnas någon media här ännu."
|
||||
|
||||
@@ -517,31 +610,57 @@ msgstr "feed-ikon"
|
||||
msgid "Atom feed"
|
||||
msgstr "Atom-feed"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:40
|
||||
msgid "Newer"
|
||||
msgstr "Nyare"
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
|
||||
msgid "← Newer"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:46
|
||||
msgid "Older"
|
||||
msgstr "Äldre"
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
|
||||
msgid "Older →"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/forms.py:24
|
||||
msgid "Comment"
|
||||
msgstr "Kommentar"
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
|
||||
msgid "Go to page:"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:27
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:32
|
||||
msgid "newer"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:38
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:43
|
||||
msgid "older"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/tags.html:20
|
||||
msgid "View more media tagged with"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/tags.html:25
|
||||
msgid "or"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/forms.py:30
|
||||
msgid "I am sure I want to delete this"
|
||||
msgstr "Jag är säker på att jag vill radera detta"
|
||||
|
||||
#: mediagoblin/user_pages/views.py:142
|
||||
msgid "Empty comments are not allowed."
|
||||
#: mediagoblin/user_pages/views.py:155
|
||||
msgid "Oops, your comment was empty."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/views.py:148
|
||||
msgid "Comment posted!"
|
||||
#: mediagoblin/user_pages/views.py:161
|
||||
msgid "Your comment has been posted!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/views.py:181
|
||||
#: mediagoblin/user_pages/views.py:183
|
||||
msgid "You deleted the media."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/views.py:190
|
||||
msgid "The media was not deleted because you didn't check that you were sure."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/views.py:198
|
||||
msgid "You are about to delete another user's media. Proceed with caution."
|
||||
msgstr "Du tänker radera en annan användares media. Var försiktig."
|
||||
|
||||
|
||||
BIN
mediagoblin/i18n/te/LC_MESSAGES/mediagoblin.mo
Normal file
BIN
mediagoblin/i18n/te/LC_MESSAGES/mediagoblin.mo
Normal file
Binary file not shown.
637
mediagoblin/i18n/te/LC_MESSAGES/mediagoblin.po
Normal file
637
mediagoblin/i18n/te/LC_MESSAGES/mediagoblin.po
Normal file
@@ -0,0 +1,637 @@
|
||||
# Translations template for PROJECT.
|
||||
# Copyright (C) 2012 ORGANIZATION
|
||||
# This file is distributed under the same license as the PROJECT project.
|
||||
#
|
||||
# Translators:
|
||||
# వీవెన్ <veeven@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: 2012-01-07 13:47-0600\n"
|
||||
"PO-Revision-Date: 2012-01-07 19:44+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"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 0.9.6\n"
|
||||
"Language: te\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
|
||||
#: mediagoblin/processing.py:143
|
||||
msgid "Invalid file given for media type."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:41
|
||||
msgid "Username"
|
||||
msgstr "వాడుకరి పేరు"
|
||||
|
||||
#: mediagoblin/auth/forms.py:30 mediagoblin/auth/forms.py:45
|
||||
msgid "Password"
|
||||
msgstr "సంకేతపదం"
|
||||
|
||||
#: mediagoblin/auth/forms.py:34
|
||||
msgid "Email address"
|
||||
msgstr "ఈమెయిలు చిరునామా"
|
||||
|
||||
#: mediagoblin/auth/views.py:55
|
||||
msgid "Sorry, registration is disabled on this instance."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:73
|
||||
msgid "Sorry, a user with that name already exists."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:77
|
||||
msgid "Sorry, a user with that email address already exists."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:180
|
||||
msgid ""
|
||||
"Your email address has been verified. You may now login, edit your profile, "
|
||||
"and submit images!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:186
|
||||
msgid "The verification key or user id is incorrect"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:204
|
||||
msgid "You must be logged in so we know who to send the email to!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:212
|
||||
msgid "You've already verified your email address!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:225
|
||||
msgid "Resent your verification email."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:260
|
||||
msgid ""
|
||||
"An email has been sent with instructions on how to change your password."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:270
|
||||
msgid ""
|
||||
"Could not send password recovery email as your username is inactive or your "
|
||||
"account's email address has not been verified."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:282
|
||||
msgid "Couldn't find someone with that username or email."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/auth/views.py:330
|
||||
msgid "You can now log in using your new password."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:24 mediagoblin/submit/forms.py:27
|
||||
msgid "Title"
|
||||
msgstr "శీర్షిక"
|
||||
|
||||
#: mediagoblin/edit/forms.py:27 mediagoblin/submit/forms.py:30
|
||||
msgid "Description of this work"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:28 mediagoblin/submit/forms.py:31
|
||||
msgid ""
|
||||
"You can use\n"
|
||||
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
|
||||
" Markdown</a> for formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:32 mediagoblin/submit/forms.py:35
|
||||
msgid "Tags"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:34 mediagoblin/submit/forms.py:37
|
||||
msgid "Separate tags by commas."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:37
|
||||
msgid "Slug"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:38
|
||||
msgid "The slug can't be empty"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:39
|
||||
msgid ""
|
||||
"The title part of this media's address. You usually don't need to change "
|
||||
"this."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:46
|
||||
msgid "Bio"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:48
|
||||
msgid ""
|
||||
"You can use\n"
|
||||
" <a href=\"http://daringfireball.net/projects/markdown/basics\">\n"
|
||||
" Markdown</a> for formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:53
|
||||
msgid "Website"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:60
|
||||
msgid "Old password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:62
|
||||
msgid "Enter your old password to prove you own this account."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/forms.py:65
|
||||
msgid "New password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:65
|
||||
msgid "An entry with that slug already exists for this user."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:86
|
||||
msgid "You are editing another user's media. Proceed with caution."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:156
|
||||
msgid "You are editing a user's profile. Proceed with caution."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:174
|
||||
msgid "Profile changes saved"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:200
|
||||
msgid "Wrong password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/edit/views.py:216
|
||||
msgid "Account settings saved"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/media_types/__init__.py:77
|
||||
msgid "Could not extract any file extension from \"{filename}\""
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/media_types/__init__.py:88
|
||||
msgid "Sorry, I don't support that file type :("
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/submit/forms.py:25
|
||||
msgid "File"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/submit/views.py:50
|
||||
msgid "You must provide a file."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/submit/views.py:128
|
||||
msgid "Woohoo! Submitted!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:22
|
||||
msgid "Image of 404 goblin stressing out"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:23
|
||||
msgid "Oops!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:24
|
||||
msgid "There doesn't seem to be a page at this address. Sorry!"
|
||||
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/base.html:48
|
||||
msgid "MediaGoblin logo"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:53
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:157
|
||||
msgid "Add media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:64
|
||||
msgid "Verify your email!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:71
|
||||
msgid "log out"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:74
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:27
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:45
|
||||
msgid "Log in"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:86
|
||||
msgid ""
|
||||
"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
|
||||
"href=\"http://gnu.org/\">GNU</a> project"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:24
|
||||
msgid "Explore"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:26
|
||||
msgid "Hi there, welcome to this MediaGoblin site!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:28
|
||||
msgid ""
|
||||
"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
|
||||
"extraordinarily great piece of media hosting software."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:29
|
||||
msgid ""
|
||||
"To add your own media, place comments, save your favourites and more, you "
|
||||
"can log in with your MediaGoblin account."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:31
|
||||
msgid "Don't have one yet? It's easy!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:32
|
||||
#, python-format
|
||||
msgid ""
|
||||
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Create an account at this site</a>\n"
|
||||
" or\n"
|
||||
" <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:40
|
||||
msgid "Most recent media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:32
|
||||
msgid "Set your new password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:35
|
||||
msgid "Set password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:27
|
||||
msgid "Recover password"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:30
|
||||
msgid "Send instructions"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_verification_email.txt:19
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Hi %(username)s,\n"
|
||||
"\n"
|
||||
"to change your GNU MediaGoblin password, open the following URL in \n"
|
||||
"your web browser:\n"
|
||||
"\n"
|
||||
"%(verification_url)s\n"
|
||||
"\n"
|
||||
"If you think this is an error, just ignore this email and continue being\n"
|
||||
"a happy goblin!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:30
|
||||
msgid "Logging in failed!"
|
||||
msgstr "ప్రవేశం విఫలమయ్యింది!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:35
|
||||
msgid "Don't have an account yet?"
|
||||
msgstr "మీకు ఇంకా ఖాతా లేదా?"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:36
|
||||
msgid "Create one here!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:42
|
||||
msgid "Forgot your password?"
|
||||
msgstr "మీ సంకేతపదాన్ని మర్చిపోయారా?"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:32
|
||||
msgid "Create an account!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:36
|
||||
msgid "Create"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Hi %(username)s,\n"
|
||||
"\n"
|
||||
"to activate your GNU MediaGoblin account, open the following URL in\n"
|
||||
"your web browser:\n"
|
||||
"\n"
|
||||
"%(verification_url)s"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit.html:29
|
||||
#, python-format
|
||||
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 "రద్దుచేయి"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit.html:37
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:40
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
|
||||
msgid "Save changes"
|
||||
msgstr "మార్పులను భద్రపరచు"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_account.html:34
|
||||
#, python-format
|
||||
msgid "Changing %(username)s's account settings"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:29
|
||||
#, python-format
|
||||
msgid "Editing %(username)s's profile"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:30
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:35
|
||||
#, python-format
|
||||
msgid "Media tagged with: %(tag_name)s"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/ascii.html:34
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:46
|
||||
msgid "Original"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:33
|
||||
msgid ""
|
||||
"Sorry, this video will not work because \n"
|
||||
"\t your web browser does not support HTML5 \n"
|
||||
"\t video."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:36
|
||||
msgid ""
|
||||
"You can get a modern web browser that \n"
|
||||
"\t can play this video at <a href=\"http://getfirefox.com\">\n"
|
||||
"\t http://getfirefox.com</a>!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/submit/start.html:26
|
||||
msgid "Add your media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/submit/start.html:30
|
||||
msgid "Add"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
|
||||
#, python-format
|
||||
msgid "%(username)s's media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:37
|
||||
#, python-format
|
||||
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:60
|
||||
#, python-format
|
||||
msgid "Added on %(date)s."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:69
|
||||
msgid "Edit"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:73
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:79
|
||||
#, python-format
|
||||
msgid "%(comment_count)s comment"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:81
|
||||
#, python-format
|
||||
msgid "%(comment_count)s comments"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:83
|
||||
msgid "No comments yet."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:91
|
||||
msgid "Add one"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:100
|
||||
msgid ""
|
||||
"Type your comment here. You can use <a "
|
||||
"href=\"http://daringfireball.net/projects/markdown/basics\">Markdown</a> for"
|
||||
" formatting."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:104
|
||||
msgid "Add this comment"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:126
|
||||
msgid "at"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:141
|
||||
#, python-format
|
||||
msgid "<p>❖ Browsing media by <a href=\"%(user_url)s\">%(username)s</a></p>"
|
||||
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 ""
|
||||
|
||||
#: 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 ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:46
|
||||
msgid "No media in-processing"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:50
|
||||
msgid "These uploads failed to process:"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:31
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:89
|
||||
#, python-format
|
||||
msgid "%(username)s's profile"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:43
|
||||
msgid "Sorry, no such user found."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:50
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:70
|
||||
msgid "Email verification needed"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
|
||||
msgid "Almost done! Your account still needs to be activated."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:58
|
||||
msgid ""
|
||||
"An email should arrive in a few moments with instructions on how to do so."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
|
||||
msgid "In case it doesn't:"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:65
|
||||
msgid "Resend verification email"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:73
|
||||
msgid ""
|
||||
"Someone has registered an account with this username, but it still has to be"
|
||||
" activated."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:79
|
||||
#, python-format
|
||||
msgid ""
|
||||
"If you are that person but you've lost your verification email, you can <a "
|
||||
"href=\"%(login_url)s\">log in</a> and resend it."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
|
||||
msgid "Here's a spot to tell others about yourself."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:101
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:118
|
||||
msgid "Edit profile"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:106
|
||||
msgid "This user hasn't filled in their profile (yet)."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:125
|
||||
msgid "Change account settings"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:138
|
||||
#, python-format
|
||||
msgid "View all of %(username)s's media"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:151
|
||||
msgid ""
|
||||
"This is where your media will appear, but you don't seem to have added "
|
||||
"anything yet."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:163
|
||||
#: mediagoblin/templates/mediagoblin/utils/object_gallery.html:72
|
||||
msgid "There doesn't seem to be any media here yet..."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
|
||||
msgid "feed icon"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
|
||||
msgid "Atom feed"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:39
|
||||
msgid "← Newer"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:45
|
||||
msgid "Older →"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:48
|
||||
msgid "Go to page:"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:27
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:32
|
||||
msgid "newer"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:38
|
||||
#: mediagoblin/templates/mediagoblin/utils/prev_next.html:43
|
||||
msgid "older"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/tags.html:20
|
||||
msgid "View more media tagged with"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/tags.html:25
|
||||
msgid "or"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/forms.py:30
|
||||
msgid "I am sure I want to delete this"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/views.py:155
|
||||
msgid "Oops, your comment was empty."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/views.py:161
|
||||
msgid "Your comment has been posted!"
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/views.py:183
|
||||
msgid "You deleted the media."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/views.py:190
|
||||
msgid "The media was not deleted because you didn't check that you were sure."
|
||||
msgstr ""
|
||||
|
||||
#: mediagoblin/user_pages/views.py:198
|
||||
msgid "You are about to delete another user's media. Proceed with caution."
|
||||
msgstr ""
|
||||
|
||||
|
||||
Binary file not shown.
@@ -4,14 +4,14 @@
|
||||
#
|
||||
# Translators:
|
||||
# <chc@citi.sinica.edu.tw>, 2011.
|
||||
# Harry Chen <harryhow@gmail.com>, 2011.
|
||||
# Harry Chen <harryhow@gmail.com>, 2011, 2012.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: GNU MediaGoblin\n"
|
||||
"Report-Msgid-Bugs-To: http://bugs.foocorp.net/projects/mediagoblin/issues\n"
|
||||
"POT-Creation-Date: 2011-11-01 23:14-0500\n"
|
||||
"PO-Revision-Date: 2011-11-02 04:13+0000\n"
|
||||
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
|
||||
"POT-Creation-Date: 2011-12-04 10:24-0600\n"
|
||||
"PO-Revision-Date: 2012-01-03 16:35+0000\n"
|
||||
"Last-Translator: Harry Chen <harryhow@gmail.com>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -20,6 +20,10 @@ msgstr ""
|
||||
"Language: zh_TW\n"
|
||||
"Plural-Forms: nplurals=1; plural=0\n"
|
||||
|
||||
#: mediagoblin/processing.py:143
|
||||
msgid "Invalid file given for media type."
|
||||
msgstr "指定錯誤的媒體類別!"
|
||||
|
||||
#: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:49
|
||||
msgid "Username"
|
||||
msgstr "使用者名稱"
|
||||
@@ -53,8 +57,8 @@ msgid "Sorry, a user with that name already exists."
|
||||
msgstr "抱歉, 這個使用者名稱已經存在."
|
||||
|
||||
#: mediagoblin/auth/views.py:77
|
||||
msgid "Sorry, that email address has already been taken."
|
||||
msgstr "抱歉,這個電子郵件已經被其他人使用了。"
|
||||
msgid "Sorry, a user with that email address already exists."
|
||||
msgstr "抱歉,此電子郵件已被註冊了。"
|
||||
|
||||
#: mediagoblin/auth/views.py:179
|
||||
msgid ""
|
||||
@@ -66,11 +70,19 @@ msgstr "你的電子郵件位址已被認證. 你現在就可以登入, 編輯
|
||||
msgid "The verification key or user id is incorrect"
|
||||
msgstr "認證碼或是使用者帳號錯誤"
|
||||
|
||||
#: mediagoblin/auth/views.py:207
|
||||
#: mediagoblin/auth/views.py:203
|
||||
msgid "You must be logged in so we know who to send the email to!"
|
||||
msgstr "你必須登入,我們才知道信要送給誰!"
|
||||
|
||||
#: mediagoblin/auth/views.py:211
|
||||
msgid "You've already verified your email address!"
|
||||
msgstr "你的電子郵件已經確認了!"
|
||||
|
||||
#: mediagoblin/auth/views.py:224
|
||||
msgid "Resent your verification email."
|
||||
msgstr "重送認證信."
|
||||
|
||||
#: mediagoblin/auth/views.py:248
|
||||
#: mediagoblin/auth/views.py:265
|
||||
msgid ""
|
||||
"Could not send password recovery email as your username is inactive or your "
|
||||
"account's email address has not been verified."
|
||||
@@ -84,42 +96,62 @@ msgstr "標題"
|
||||
msgid "Tags"
|
||||
msgstr "標籤"
|
||||
|
||||
#: mediagoblin/edit/forms.py:31
|
||||
#: mediagoblin/edit/forms.py:30 mediagoblin/submit/forms.py:34
|
||||
msgid "Seperate tags by commas."
|
||||
msgstr "用逗點分開標籤。"
|
||||
|
||||
#: mediagoblin/edit/forms.py:33
|
||||
msgid "Slug"
|
||||
msgstr "自訂字串"
|
||||
|
||||
#: mediagoblin/edit/forms.py:32
|
||||
#: mediagoblin/edit/forms.py:34
|
||||
msgid "The slug can't be empty"
|
||||
msgstr "自訂字串不能空白"
|
||||
|
||||
#: mediagoblin/edit/forms.py:33
|
||||
#: 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:40
|
||||
#: mediagoblin/edit/forms.py:42
|
||||
msgid "Bio"
|
||||
msgstr "自我介紹"
|
||||
|
||||
#: mediagoblin/edit/forms.py:43
|
||||
#: mediagoblin/edit/forms.py:45
|
||||
msgid "Website"
|
||||
msgstr "網站"
|
||||
|
||||
#: mediagoblin/edit/views.py:64
|
||||
#: mediagoblin/edit/forms.py:49
|
||||
msgid "Old password"
|
||||
msgstr "舊的密碼"
|
||||
|
||||
#: mediagoblin/edit/forms.py:52
|
||||
msgid "New Password"
|
||||
msgstr "新的密碼"
|
||||
|
||||
#: mediagoblin/edit/views.py:65
|
||||
msgid "An entry with that slug already exists for this user."
|
||||
msgstr "這個自訂字串已經被其他人用了"
|
||||
|
||||
#: mediagoblin/edit/views.py:85
|
||||
#: mediagoblin/edit/views.py:86
|
||||
msgid "You are editing another user's media. Proceed with caution."
|
||||
msgstr "你正在編輯他人的媒體檔案. 請謹慎處理."
|
||||
|
||||
#: mediagoblin/edit/views.py:155
|
||||
#: mediagoblin/edit/views.py:156
|
||||
msgid "You are editing a user's profile. Proceed with caution."
|
||||
msgstr "你正在編輯一位用戶的檔案. 請謹慎處理."
|
||||
|
||||
#: mediagoblin/process_media/errors.py:44
|
||||
msgid "Invalid file given for media type."
|
||||
msgstr "指定錯誤的媒體類別!"
|
||||
#: mediagoblin/edit/views.py:171
|
||||
msgid "Wrong password"
|
||||
msgstr "密碼錯誤"
|
||||
|
||||
#: mediagoblin/edit/views.py:192
|
||||
msgid "Profile edited!"
|
||||
msgstr "個人資料已被編輯了!"
|
||||
|
||||
#: mediagoblin/media_types/__init__.py:65
|
||||
msgid "Could not find any file extension in \"{filename}\""
|
||||
msgstr "找不到任何 \"{filename}\" 的附檔名。"
|
||||
|
||||
#: mediagoblin/submit/forms.py:25
|
||||
msgid "File"
|
||||
@@ -129,18 +161,18 @@ msgstr "檔案"
|
||||
msgid "Description of this work"
|
||||
msgstr "這個作品的描述"
|
||||
|
||||
#: mediagoblin/submit/views.py:46
|
||||
#: mediagoblin/submit/views.py:49
|
||||
msgid "You must provide a file."
|
||||
msgstr "你必須提供一個檔案"
|
||||
|
||||
#: mediagoblin/submit/views.py:49
|
||||
msgid "The file doesn't seem to be an image!"
|
||||
msgstr "檔案似乎不是一個圖片喔!"
|
||||
|
||||
#: mediagoblin/submit/views.py:121
|
||||
#: mediagoblin/submit/views.py:127
|
||||
msgid "Woohoo! Submitted!"
|
||||
msgstr "呼呼! 送出去嚕!"
|
||||
|
||||
#: mediagoblin/submit/views.py:133
|
||||
msgid "Invalid file type."
|
||||
msgstr "不正確的檔案格式"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/404.html:21
|
||||
msgid "Oops!"
|
||||
msgstr "糟糕!"
|
||||
@@ -159,29 +191,29 @@ msgstr "如果你確定這個位址是正確的,或許你在找的網頁已經
|
||||
msgid "Image of 404 goblin stressing out"
|
||||
msgstr "Image of 404 goblin stressing out"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:22
|
||||
msgid "GNU MediaGoblin"
|
||||
msgstr "GNU MediaGoblin"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:47
|
||||
#: mediagoblin/templates/mediagoblin/base.html:49
|
||||
msgid "MediaGoblin logo"
|
||||
msgstr "MediaGoblin 標誌"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:52
|
||||
#: mediagoblin/templates/mediagoblin/base.html:54
|
||||
msgid "Submit media"
|
||||
msgstr "遞交媒體"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:63
|
||||
msgid "verify your email!"
|
||||
msgstr "確認您的電子郵件!"
|
||||
#: mediagoblin/templates/mediagoblin/base.html:65
|
||||
msgid "Verify your email!"
|
||||
msgstr "確認你的電子郵件"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:73
|
||||
#: mediagoblin/templates/mediagoblin/base.html:72
|
||||
msgid "log out"
|
||||
msgstr "登出"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:75
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:27
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:35
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:45
|
||||
msgid "Log in"
|
||||
msgstr "登入"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/base.html:89
|
||||
#: mediagoblin/templates/mediagoblin/base.html:91
|
||||
msgid ""
|
||||
"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
|
||||
"href=\"http://gnu.org/\">GNU</a> project"
|
||||
@@ -194,62 +226,39 @@ msgid "Explore"
|
||||
msgstr "探索"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:27
|
||||
msgid "Hi there, media lover! MediaGoblin is..."
|
||||
msgstr "嗨!多媒體檔案愛好者!MediaGoblin是..."
|
||||
msgid "Hi there, welcome to this MediaGoblin site!"
|
||||
msgstr "嘿!歡迎來到 媒體怪獸(MediaGoblin) 網站"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:28
|
||||
msgid ""
|
||||
"This site is running <a href=\"http://mediagoblin.org\">MediaGoblin</a>, an "
|
||||
"extraordinarily great piece of media hosting software."
|
||||
msgstr ""
|
||||
"此網站正運行 <a href=\"http://mediagoblin.org\">媒體怪獸(MediaGoblin)</a>, "
|
||||
"他是一個超讚的媒體分享架站軟體."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:29
|
||||
msgid "The perfect place for your media!"
|
||||
msgstr "你的媒體檔案的最佳所在!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:30
|
||||
msgid ""
|
||||
"A place for people to collaborate and show off original and derived "
|
||||
"creations!"
|
||||
msgstr "這是一個可以讓人們共同展示他們的創作、衍生作品的地方!"
|
||||
"To add your own media, place comments, save your favourites and more, you "
|
||||
"can log in with your MediaGoblin account."
|
||||
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 "免費但是我們更重視自由 (畢竟我們是個 <a href=\"http://gnu.org\">GNU</a> 專案)"
|
||||
msgid "Don't have one yet? It's easy!"
|
||||
msgstr "還沒有嗎?其實非常簡單!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:32
|
||||
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 "天生的擴充性。(軟體將支援多種多媒體格式, 也支援影音檔案!)"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:34
|
||||
msgid ""
|
||||
"Powered by people like you. (<a "
|
||||
"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/root.html:38
|
||||
msgid "Excited to join us?"
|
||||
msgstr "迫不亟待想要加入我們?"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:39
|
||||
#, python-format
|
||||
msgid ""
|
||||
"<a class=\"header_submit_highlight\" href=\"%(register_url)s\">Create a free account</a>\n"
|
||||
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Create an account at this site</a>\n"
|
||||
" or\n"
|
||||
" <a class=\"header_submit\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
|
||||
" <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Set up MediaGoblin on your own server</a>"
|
||||
msgstr ""
|
||||
"<a class=\"header_submit_highlight\" href=\"%(register_url)s\">建立一個免費帳號</a>\n"
|
||||
"<a class=\"button_action_highlight\" href=\"%(register_url)s\">在這網站建立帳號</a>\n"
|
||||
" 或是\n"
|
||||
" <a class=\"header_submit\" href=\"http://wiki.mediagoblin.org/HackingHowto\">在你的伺服器上設立 MediaGoblin</a>"
|
||||
" <a class=\"button_action\" href=\"http://wiki.mediagoblin.org/HackingHowto\">建立一個自己的媒體怪獸(MedaiGoblin)</a>"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/root.html:53
|
||||
#: mediagoblin/templates/mediagoblin/root.html:44
|
||||
msgid "Most recent media"
|
||||
msgstr "最新的媒體"
|
||||
|
||||
@@ -257,9 +266,18 @@ msgstr "最新的媒體"
|
||||
msgid "Enter your new password"
|
||||
msgstr "輸入你的新密碼"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:29
|
||||
msgid "Enter your username or email"
|
||||
msgstr "輸入你的帳號或是電子郵件"
|
||||
#: mediagoblin/templates/mediagoblin/auth/change_fp.html:33
|
||||
#: mediagoblin/templates/mediagoblin/submit/start.html:30
|
||||
msgid "Submit"
|
||||
msgstr "送出"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:27
|
||||
msgid "Recover password"
|
||||
msgstr "找回密碼"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:30
|
||||
msgid "Send instructions"
|
||||
msgstr "送出指示"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/fp_changed_success.html:22
|
||||
msgid "Your password has been changed. Try to log in now."
|
||||
@@ -295,22 +313,18 @@ msgstr ""
|
||||
msgid "Logging in failed!"
|
||||
msgstr "登入失敗!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:43
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:35
|
||||
msgid "Don't have an account yet?"
|
||||
msgstr "還沒有帳號嗎?"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:46
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:36
|
||||
msgid "Create one here!"
|
||||
msgstr "在這裡建立一個吧!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:49
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:42
|
||||
msgid "Forgot your password?"
|
||||
msgstr "忘了密碼嗎?"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/login.html:52
|
||||
msgid "Change it!"
|
||||
msgstr "變更!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/auth/register.html:27
|
||||
msgid "Create an account!"
|
||||
msgstr "建立一個帳號!"
|
||||
@@ -355,27 +369,54 @@ msgstr "儲存變更"
|
||||
msgid "Editing %(username)s's profile"
|
||||
msgstr "編輯 %(username)s'的檔案中"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:31
|
||||
msgid "Media tagged with:"
|
||||
msgstr "媒體檔案被標籤為:"
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:30
|
||||
#: mediagoblin/templates/mediagoblin/listings/tag.html:35
|
||||
#, python-format
|
||||
msgid "Media tagged with: %(tag_name)s"
|
||||
msgstr "此媒體被標識為:%(tag_name)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/media_displays/video.html:19
|
||||
msgid "Original"
|
||||
msgstr "原始的"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/submit/start.html:26
|
||||
msgid "Submit yer media"
|
||||
msgstr "遞交你的媒體檔案"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/submit/start.html:30
|
||||
msgid "Submit"
|
||||
msgstr "送出"
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
|
||||
#, python-format
|
||||
msgid "%(username)s's media"
|
||||
msgstr "%(username)s的媒體"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:32
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:37
|
||||
#, python-format
|
||||
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
|
||||
msgstr "<a href=\"%(user_url)s\">%(username)s</a>的媒體檔案"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:52
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:32
|
||||
msgid "Sorry, no such user found."
|
||||
msgstr "抱歉,找不到這個使用者."
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:57
|
||||
#, python-format
|
||||
msgid "By <a href=\"%(user_url)s\">%(username)s</a> on %(date)s"
|
||||
msgstr "由 <a href=\"%(user_url)s\">%(username)s</a> 於 %(date)s"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:67
|
||||
msgid "Post a comment"
|
||||
msgstr "刊登評論"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:85
|
||||
msgid "at"
|
||||
msgstr "在"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:102
|
||||
msgid "Post comment!"
|
||||
msgstr "刊登評論!"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:124
|
||||
msgid "Edit"
|
||||
msgstr "編輯"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media.html:130
|
||||
msgid "Delete"
|
||||
msgstr "刪除"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
|
||||
#, python-format
|
||||
@@ -407,75 +448,80 @@ msgstr "沒有正在處理中的媒體"
|
||||
msgid "These uploads failed to process:"
|
||||
msgstr "無法處理這些更新"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:39
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:59
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:31
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:89
|
||||
#, python-format
|
||||
msgid "%(username)s's profile"
|
||||
msgstr "%(username)s的個人檔案"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:43
|
||||
msgid "Sorry, no such user found."
|
||||
msgstr "抱歉,找不到這個使用者."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:50
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:70
|
||||
msgid "Email verification needed"
|
||||
msgstr "需要認證電子郵件"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:42
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:53
|
||||
msgid "Almost done! Your account still needs to be activated."
|
||||
msgstr "幾乎完成了!但你的帳號仍然需要被啟用。"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:47
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:58
|
||||
msgid ""
|
||||
"An email should arrive in a few moments with instructions on how to do so."
|
||||
msgstr "馬上會有一封電子郵件告訴你如何做."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:51
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
|
||||
msgid "In case it doesn't:"
|
||||
msgstr "假設它無法:"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:54
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:65
|
||||
msgid "Resend verification email"
|
||||
msgstr "重送認證信"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:73
|
||||
msgid ""
|
||||
"Someone has registered an account with this username, but it still has to be"
|
||||
" activated."
|
||||
msgstr "有人用了這個帳號登錄了,但是這個帳號仍需要被啟用。"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:68
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:79
|
||||
#, python-format
|
||||
msgid ""
|
||||
"If you are that person but you've lost your verification email, you can <a "
|
||||
"href=\"%(login_url)s\">log in</a> and resend it."
|
||||
msgstr "如果你就是那個人, 但是遺失了認證信, 你可以<a href=\"%(login_url)s\">登入</a> 然後重送一次."
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:78
|
||||
#, python-format
|
||||
msgid "%(username)s's profile"
|
||||
msgstr "%(username)s的個人檔案"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:85
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
|
||||
msgid "Here's a spot to tell others about yourself."
|
||||
msgstr "這是一個地方,能讓你向他人介紹自己。"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:90
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:108
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:101
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:119
|
||||
msgid "Edit profile"
|
||||
msgstr "編輯個人檔案"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:107
|
||||
msgid "This user hasn't filled in their profile (yet)."
|
||||
msgstr "這個使用者還沒(來得及)填寫個人檔案。"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:122
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:133
|
||||
#, python-format
|
||||
msgid "View all of %(username)s's media"
|
||||
msgstr "查看%(username)s的全部媒體檔案"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:135
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:146
|
||||
msgid ""
|
||||
"This is where your media will appear, but you don't seem to have added "
|
||||
"anything yet."
|
||||
msgstr "這個地方是你的媒體檔案會出現的地方,但是你似乎還沒有加入任何東西。"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:141
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:152
|
||||
msgid "Add media"
|
||||
msgstr "新增媒體檔案"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:147
|
||||
#: mediagoblin/templates/mediagoblin/user_pages/user.html:158
|
||||
msgid "There doesn't seem to be any media here yet..."
|
||||
msgstr "似乎還沒有任何的媒體檔案..."
|
||||
|
||||
@@ -495,6 +541,18 @@ msgstr "新一點"
|
||||
msgid "Older"
|
||||
msgstr "舊一點"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/pagination.html:50
|
||||
msgid "Go to page:"
|
||||
msgstr "跳到頁數:"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/tags.html:20
|
||||
msgid "Tagged with"
|
||||
msgstr "被標籤為"
|
||||
|
||||
#: mediagoblin/templates/mediagoblin/utils/tags.html:25
|
||||
msgid "and"
|
||||
msgstr "且"
|
||||
|
||||
#: mediagoblin/user_pages/forms.py:24
|
||||
msgid "Comment"
|
||||
msgstr "評論"
|
||||
@@ -503,15 +561,23 @@ msgstr "評論"
|
||||
msgid "I am sure I want to delete this"
|
||||
msgstr "我確定我想要刪除"
|
||||
|
||||
#: mediagoblin/user_pages/views.py:142
|
||||
msgid "Empty comments are not allowed."
|
||||
msgstr ""
|
||||
#: mediagoblin/user_pages/views.py:155
|
||||
msgid "Oops, your comment was empty."
|
||||
msgstr "啊,你的留言是空的。"
|
||||
|
||||
#: mediagoblin/user_pages/views.py:148
|
||||
msgid "Comment posted!"
|
||||
msgstr ""
|
||||
#: mediagoblin/user_pages/views.py:161
|
||||
msgid "Your comment has been posted!"
|
||||
msgstr "你的留言已經刊登!"
|
||||
|
||||
#: mediagoblin/user_pages/views.py:181
|
||||
#: mediagoblin/user_pages/views.py:183
|
||||
msgid "You deleted the media."
|
||||
msgstr "你已刪除此媒體檔案。"
|
||||
|
||||
#: mediagoblin/user_pages/views.py:190
|
||||
msgid "The media was not deleted because you didn't check that you were sure."
|
||||
msgstr "此媒體檔案尚未被刪除因為你還沒有確認你真的要刪除。"
|
||||
|
||||
#: mediagoblin/user_pages/views.py:198
|
||||
msgid "You are about to delete another user's media. Proceed with caution."
|
||||
msgstr "你在刪除其他人的媒體檔案。請小心處理喔。"
|
||||
|
||||
|
||||
@@ -23,14 +23,18 @@ from mediagoblin.init.config import (
|
||||
read_mediagoblin_config, generate_validation_report)
|
||||
from mediagoblin import mg_globals
|
||||
from mediagoblin.mg_globals import setup_globals
|
||||
from mediagoblin.db.open import setup_connection_and_db_from_config
|
||||
from mediagoblin.db.util import MigrationManager
|
||||
from mediagoblin.db.open import setup_connection_and_db_from_config, \
|
||||
check_db_migrations_current
|
||||
from mediagoblin.workbench import WorkbenchManager
|
||||
from mediagoblin.storage import storage_system_from_config
|
||||
|
||||
|
||||
class Error(Exception): pass
|
||||
class ImproperlyConfigured(Error): pass
|
||||
class Error(Exception):
|
||||
pass
|
||||
|
||||
|
||||
class ImproperlyConfigured(Error):
|
||||
pass
|
||||
|
||||
|
||||
def setup_global_and_app_config(config_path):
|
||||
@@ -52,32 +56,14 @@ def setup_global_and_app_config(config_path):
|
||||
def setup_database():
|
||||
app_config = mg_globals.app_config
|
||||
|
||||
# This MUST be imported so as to set up the appropriate migrations!
|
||||
from mediagoblin.db import migrations
|
||||
|
||||
# Set up the database
|
||||
connection, db = setup_connection_and_db_from_config(app_config)
|
||||
|
||||
# Init the migration number if necessary
|
||||
migration_manager = MigrationManager(db)
|
||||
migration_manager.install_migration_version_if_missing()
|
||||
|
||||
# Tiny hack to warn user if our migration is out of date
|
||||
if not migration_manager.database_at_latest_migration():
|
||||
db_migration_num = migration_manager.database_current_migration()
|
||||
latest_migration_num = migration_manager.latest_migration()
|
||||
if db_migration_num < latest_migration_num:
|
||||
print (
|
||||
"*WARNING:* Your migrations are out of date, "
|
||||
"maybe run ./bin/gmg migrate?")
|
||||
elif db_migration_num > latest_migration_num:
|
||||
print (
|
||||
"*WARNING:* Your migrations are out of date... "
|
||||
"in fact they appear to be from the future?!")
|
||||
check_db_migrations_current(db)
|
||||
|
||||
setup_globals(
|
||||
db_connection = connection,
|
||||
database = db)
|
||||
db_connection=connection,
|
||||
database=db)
|
||||
|
||||
return connection, db
|
||||
|
||||
@@ -99,10 +85,10 @@ def get_jinja_loader(user_template_path=None):
|
||||
|
||||
|
||||
def get_staticdirector(app_config):
|
||||
if app_config.has_key('direct_remote_path'):
|
||||
if 'direct_remote_path' in app_config:
|
||||
return staticdirect.RemoteStaticDirect(
|
||||
app_config['direct_remote_path'].strip())
|
||||
elif app_config.has_key('direct_remote_paths'):
|
||||
elif 'direct_remote_paths' in app_config:
|
||||
direct_remote_path_lines = app_config[
|
||||
'direct_remote_paths'].strip().splitlines()
|
||||
return staticdirect.MultiRemoteStaticDirect(
|
||||
@@ -126,8 +112,8 @@ def setup_storage():
|
||||
queue_store = storage_system_from_config(global_config[key_long])
|
||||
|
||||
setup_globals(
|
||||
public_store = public_store,
|
||||
queue_store = queue_store)
|
||||
public_store=public_store,
|
||||
queue_store=queue_store)
|
||||
|
||||
return public_store, queue_store
|
||||
|
||||
@@ -137,7 +123,7 @@ def setup_workbench():
|
||||
|
||||
workbench_manager = WorkbenchManager(app_config['workbench_path'])
|
||||
|
||||
setup_globals(workbench_manager = workbench_manager)
|
||||
setup_globals(workbench_manager=workbench_manager)
|
||||
|
||||
|
||||
def setup_beaker_cache():
|
||||
|
||||
@@ -18,7 +18,7 @@ import os
|
||||
import sys
|
||||
|
||||
|
||||
MANDATORY_CELERY_IMPORTS = ['mediagoblin.process_media']
|
||||
MANDATORY_CELERY_IMPORTS = ['mediagoblin.processing']
|
||||
|
||||
DEFAULT_SETTINGS_MODULE = 'mediagoblin.init.celery.dummy_settings_module'
|
||||
|
||||
@@ -40,25 +40,25 @@ def setup_celery_from_config(app_config, global_config,
|
||||
- set_environ: if set, this will CELERY_CONFIG_MODULE to the
|
||||
settings_module
|
||||
"""
|
||||
if global_config.has_key('celery'):
|
||||
if 'celery' in global_config:
|
||||
celery_conf = global_config['celery']
|
||||
else:
|
||||
celery_conf = {}
|
||||
|
||||
|
||||
celery_settings = {}
|
||||
|
||||
# set up mongodb stuff
|
||||
celery_settings['CELERY_RESULT_BACKEND'] = 'mongodb'
|
||||
if not celery_settings.has_key('BROKER_BACKEND'):
|
||||
if 'BROKER_BACKEND' not in celery_settings:
|
||||
celery_settings['BROKER_BACKEND'] = 'mongodb'
|
||||
|
||||
celery_mongo_settings = {}
|
||||
|
||||
if app_config.has_key('db_host'):
|
||||
if 'db_host' in app_config:
|
||||
celery_mongo_settings['host'] = app_config['db_host']
|
||||
if celery_settings['BROKER_BACKEND'] == 'mongodb':
|
||||
celery_settings['BROKER_HOST'] = app_config['db_host']
|
||||
if app_config.has_key('db_port'):
|
||||
if 'db_port' in app_config:
|
||||
celery_mongo_settings['port'] = app_config['db_port']
|
||||
if celery_settings['BROKER_BACKEND'] == 'mongodb':
|
||||
celery_settings['BROKER_PORT'] = app_config['db_port']
|
||||
@@ -84,6 +84,6 @@ def setup_celery_from_config(app_config, global_config,
|
||||
|
||||
for key, value in celery_settings.iteritems():
|
||||
setattr(this_module, key, value)
|
||||
|
||||
|
||||
if set_environ:
|
||||
os.environ['CELERY_CONFIG_MODULE'] = settings_module
|
||||
|
||||
@@ -44,7 +44,7 @@ def setup_self(check_environ_for_conf=True, module_name=OUR_MODULENAME,
|
||||
if not os.path.exists(mgoblin_conf_file):
|
||||
raise IOError(
|
||||
"MEDIAGOBLIN_CONFIG not set or file does not exist")
|
||||
|
||||
|
||||
# By setting the environment variable here we should ensure that
|
||||
# this is the module that gets set up.
|
||||
os.environ['CELERY_CONFIG_MODULE'] = module_name
|
||||
|
||||
@@ -73,7 +73,7 @@ def read_mediagoblin_config(config_path, config_spec=CONFIG_SPEC_PATH):
|
||||
# For now the validator just works with the default functions,
|
||||
# but in the future if we want to add additional validation/configuration
|
||||
# functions we'd add them to validator.functions here.
|
||||
#
|
||||
#
|
||||
# See also:
|
||||
# http://www.voidspace.org.uk/python/validate.html#adding-functions
|
||||
validator = Validator()
|
||||
|
||||
@@ -25,4 +25,3 @@ tag_routes = [
|
||||
Route('mediagoblin.listings.tag_atom_feed', "/{tag}/atom/",
|
||||
controller="mediagoblin.listings.views:tag_atom_feed"),
|
||||
]
|
||||
|
||||
|
||||
@@ -47,7 +47,7 @@ def tag_listing(request, page):
|
||||
{u'state': u'processed',
|
||||
u'tags.slug': tag_slug})
|
||||
cursor = cursor.sort('created', DESCENDING)
|
||||
|
||||
|
||||
pagination = Pagination(page, cursor)
|
||||
media_entries = pagination()
|
||||
|
||||
@@ -64,6 +64,7 @@ def tag_listing(request, page):
|
||||
|
||||
ATOM_DEFAULT_NR_OF_UPDATED_ITEMS = 15
|
||||
|
||||
|
||||
def tag_atom_feed(request):
|
||||
"""
|
||||
generates the atom feed with the tag images
|
||||
@@ -76,17 +77,33 @@ def tag_atom_feed(request):
|
||||
cursor = cursor.sort('created', DESCENDING)
|
||||
cursor = cursor.limit(ATOM_DEFAULT_NR_OF_UPDATED_ITEMS)
|
||||
|
||||
"""
|
||||
ATOM feed id is a tag URI (see http://en.wikipedia.org/wiki/Tag_URI)
|
||||
"""
|
||||
feed = AtomFeed(
|
||||
"MediaGoblin: Feed for tag '%s'" % tag_slug,
|
||||
feed_url=request.url,
|
||||
url=request.host_url)
|
||||
|
||||
id='tag:'+request.host+',2011:gallery.tag-%s' % tag_slug,
|
||||
links=[{'href': request.urlgen(
|
||||
'mediagoblin.listings.tags_listing',
|
||||
qualified=True, tag=tag_slug ),
|
||||
'rel': 'alternate',
|
||||
'type': 'text/html'}])
|
||||
for entry in cursor:
|
||||
feed.add(entry.get('title'),
|
||||
entry.get('description_html'),
|
||||
id=entry.url_for_self(request.urlgen,qualified=True),
|
||||
content_type='html',
|
||||
author=entry.uploader()['username'],
|
||||
author={'name': entry.get_uploader.username,
|
||||
'uri': request.urlgen(
|
||||
'mediagoblin.user_pages.user_home',
|
||||
qualified=True, user=entry.get_uploader.username)},
|
||||
updated=entry.get('created'),
|
||||
url=entry.url_for_self(request.urlgen))
|
||||
links=[{
|
||||
'href':entry.url_for_self(
|
||||
request.urlgen,
|
||||
qualified=True),
|
||||
'rel': 'alternate',
|
||||
'type': 'text/html'}])
|
||||
|
||||
return feed.get_response()
|
||||
|
||||
32
mediagoblin/meddleware/__init__.py
Normal file
32
mediagoblin/meddleware/__init__.py
Normal file
@@ -0,0 +1,32 @@
|
||||
# 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_MEDDLEWARE = (
|
||||
'mediagoblin.meddleware.noop:NoOpMeddleware',
|
||||
'mediagoblin.meddleware.csrf:CsrfMeddleware',
|
||||
)
|
||||
|
||||
|
||||
class BaseMeddleware(object):
|
||||
|
||||
def __init__(self, mg_app):
|
||||
self.app = mg_app
|
||||
|
||||
def process_request(self, request, controller):
|
||||
pass
|
||||
|
||||
def process_response(self, request, response):
|
||||
pass
|
||||
@@ -21,6 +21,7 @@ from webob.exc import HTTPForbidden
|
||||
from wtforms import Form, HiddenField, validators
|
||||
|
||||
from mediagoblin import mg_globals
|
||||
from mediagoblin.meddleware import BaseMeddleware
|
||||
|
||||
# Use the system (hardware-based) random number generator if it exists.
|
||||
# -- this optimization is lifted from Django
|
||||
@@ -30,6 +31,13 @@ else:
|
||||
getrandbits = random.getrandbits
|
||||
|
||||
|
||||
def csrf_exempt(func):
|
||||
"""Decorate a Controller to exempt it from CSRF protection."""
|
||||
|
||||
func.csrf_enabled = False
|
||||
return func
|
||||
|
||||
|
||||
class CsrfForm(Form):
|
||||
"""Simple form to handle rendering a CSRF token and confirming it
|
||||
is included in the POST."""
|
||||
@@ -42,13 +50,16 @@ def render_csrf_form_token(request):
|
||||
"""Render the CSRF token in a format suitable for inclusion in a
|
||||
form."""
|
||||
|
||||
if 'CSRF_TOKEN' not in request.environ:
|
||||
return None
|
||||
|
||||
form = CsrfForm(csrf_token=request.environ['CSRF_TOKEN'])
|
||||
|
||||
return form.csrf_token
|
||||
|
||||
|
||||
class CsrfMiddleware(object):
|
||||
"""CSRF Protection Middleware
|
||||
class CsrfMeddleware(BaseMeddleware):
|
||||
"""CSRF Protection Meddleware
|
||||
|
||||
Adds a CSRF Cookie to responses and verifies that it is present
|
||||
and matches the form token for non-safe requests.
|
||||
@@ -57,10 +68,7 @@ class CsrfMiddleware(object):
|
||||
CSRF_KEYLEN = 64
|
||||
SAFE_HTTP_METHODS = ("GET", "HEAD", "OPTIONS", "TRACE")
|
||||
|
||||
def __init__(self, mg_app):
|
||||
self.app = mg_app
|
||||
|
||||
def process_request(self, request):
|
||||
def process_request(self, request, controller):
|
||||
"""For non-safe requests, confirm that the tokens are present
|
||||
and match.
|
||||
"""
|
||||
@@ -77,9 +85,11 @@ class CsrfMiddleware(object):
|
||||
# if this is a non-"safe" request (ie, one that could have
|
||||
# side effects), confirm that the CSRF tokens are present and
|
||||
# valid
|
||||
if request.method not in self.SAFE_HTTP_METHODS \
|
||||
and ('gmg.verify_csrf' in request.environ or
|
||||
'paste.testing' not in request.environ):
|
||||
if (getattr(controller, 'csrf_enabled', True) and
|
||||
request.method not in self.SAFE_HTTP_METHODS and
|
||||
('gmg.verify_csrf' in request.environ or
|
||||
'paste.testing' not in request.environ)
|
||||
):
|
||||
|
||||
return self.verify_tokens(request)
|
||||
|
||||
@@ -98,7 +108,7 @@ class CsrfMiddleware(object):
|
||||
httponly=True)
|
||||
|
||||
# update the Vary header
|
||||
response.vary = (response.vary or []) + ['Cookie']
|
||||
response.vary = (getattr(response, 'vary', None) or []) + ['Cookie']
|
||||
|
||||
def _make_token(self, request):
|
||||
"""Generate a new token to use for CSRF protection."""
|
||||
@@ -14,12 +14,13 @@
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
class NoOpMiddleware(object):
|
||||
|
||||
def __init__(self, mg_app):
|
||||
self.app = mg_app
|
||||
from mediagoblin.meddleware import BaseMeddleware
|
||||
|
||||
def process_request(self, request):
|
||||
|
||||
class NoOpMeddleware(BaseMeddleware):
|
||||
|
||||
def process_request(self, request, controller):
|
||||
pass
|
||||
|
||||
def process_response(self, request, response):
|
||||
88
mediagoblin/media_types/__init__.py
Normal file
88
mediagoblin/media_types/__init__.py
Normal file
@@ -0,0 +1,88 @@
|
||||
# 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/>.
|
||||
|
||||
import os
|
||||
import sys
|
||||
|
||||
from mediagoblin import mg_globals
|
||||
from mediagoblin.tools.translate import lazy_pass_to_ugettext as _
|
||||
|
||||
|
||||
class FileTypeNotSupported(Exception):
|
||||
pass
|
||||
|
||||
class InvalidFileType(Exception):
|
||||
pass
|
||||
|
||||
|
||||
def get_media_types():
|
||||
"""
|
||||
Generator, yields the available media types
|
||||
"""
|
||||
for media_type in mg_globals.app_config['media_types']:
|
||||
yield media_type
|
||||
|
||||
|
||||
def get_media_managers():
|
||||
'''
|
||||
Generator, yields all enabled media managers
|
||||
'''
|
||||
for media_type in get_media_types():
|
||||
__import__(media_type)
|
||||
|
||||
yield media_type, sys.modules[media_type].MEDIA_MANAGER
|
||||
|
||||
|
||||
def get_media_manager(_media_type):
|
||||
'''
|
||||
Get the MEDIA_MANAGER based on a media type string
|
||||
|
||||
Example::
|
||||
get_media_type('mediagoblin.media_types.image')
|
||||
'''
|
||||
if not _media_type:
|
||||
return False
|
||||
|
||||
for media_type, manager in get_media_managers():
|
||||
if media_type in _media_type:
|
||||
return manager
|
||||
|
||||
# Nope? Then raise an error
|
||||
raise FileTypeNotSupported(
|
||||
"MediaManager not in enabled types. Check media_types in config?")
|
||||
|
||||
|
||||
def get_media_type_and_manager(filename):
|
||||
'''
|
||||
Get the media type and manager based on a filename
|
||||
'''
|
||||
if filename.find('.') > 0:
|
||||
# Get the file extension
|
||||
ext = os.path.splitext(filename)[1].lower()
|
||||
else:
|
||||
raise InvalidFileType(
|
||||
_(u'Could not extract any file extension from "{filename}"').format(
|
||||
filename=filename))
|
||||
|
||||
for media_type, manager in get_media_managers():
|
||||
# Omit the dot from the extension and match it against
|
||||
# the media manager
|
||||
if ext[1:] in manager['accepted_extensions']:
|
||||
return media_type, manager
|
||||
else:
|
||||
raise FileTypeNotSupported(
|
||||
# TODO: Provide information on which file types are supported
|
||||
_(u'Sorry, I don\'t support that file type :('))
|
||||
27
mediagoblin/media_types/ascii/__init__.py
Normal file
27
mediagoblin/media_types/ascii/__init__.py
Normal file
@@ -0,0 +1,27 @@
|
||||
# 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/>.
|
||||
|
||||
from mediagoblin.media_types.ascii.processing import process_ascii
|
||||
|
||||
|
||||
MEDIA_MANAGER = {
|
||||
"human_readable": "ASCII",
|
||||
"processor": process_ascii, # alternately a string,
|
||||
# 'mediagoblin.media_types.image.processing'?
|
||||
"display_template": "mediagoblin/media_displays/ascii.html",
|
||||
"default_thumb": "images/media_thumbs/ascii.jpg",
|
||||
"accepted_extensions": [
|
||||
"txt"]}
|
||||
172
mediagoblin/media_types/ascii/asciitoimage.py
Normal file
172
mediagoblin/media_types/ascii/asciitoimage.py
Normal file
@@ -0,0 +1,172 @@
|
||||
# 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/>.
|
||||
|
||||
import Image
|
||||
import ImageFont
|
||||
import ImageDraw
|
||||
import logging
|
||||
import pkg_resources
|
||||
import os
|
||||
|
||||
_log = logging.getLogger(__name__)
|
||||
|
||||
class AsciiToImage(object):
|
||||
'''
|
||||
Converter of ASCII art into image files, preserving whitespace
|
||||
|
||||
kwargs:
|
||||
- font: Path to font file
|
||||
default: fonts/Inconsolata.otf
|
||||
- font_size: Font size, ``int``
|
||||
default: 11
|
||||
'''
|
||||
|
||||
# Font file path
|
||||
_font = None
|
||||
|
||||
_font_size = 11
|
||||
|
||||
# ImageFont instance
|
||||
_if = None
|
||||
|
||||
# ImageFont
|
||||
_if_dims = None
|
||||
|
||||
# Image instance
|
||||
_im = None
|
||||
|
||||
def __init__(self, **kw):
|
||||
if kw.get('font'):
|
||||
self._font = kw.get('font')
|
||||
else:
|
||||
self._font = pkg_resources.resource_filename(
|
||||
'mediagoblin.media_types.ascii',
|
||||
os.path.join('fonts', 'Inconsolata.otf'))
|
||||
|
||||
if kw.get('font_size'):
|
||||
self._font_size = kw.get('font_size')
|
||||
|
||||
_log.info('Setting font to {0}, size {1}'.format(
|
||||
self._font,
|
||||
self._font_size))
|
||||
|
||||
self._if = ImageFont.truetype(
|
||||
self._font,
|
||||
self._font_size)
|
||||
|
||||
# ,-,-^-'-^'^-^'^-'^-.
|
||||
# ( I am a wall socket )Oo, ___
|
||||
# `-.,.-.,.-.-.,.-.--' ' `
|
||||
# Get the size, in pixels of the '.' character
|
||||
self._if_dims = self._if.getsize('.')
|
||||
# `---'
|
||||
|
||||
def convert(self, text, destination):
|
||||
# TODO: Detect if text is a file-like, if so, act accordingly
|
||||
im = self._create_image(text)
|
||||
|
||||
# PIL's Image.save will handle both file-likes and paths
|
||||
if im.save(destination):
|
||||
_log.info('Saved image in {0}'.format(
|
||||
destination))
|
||||
|
||||
def _create_image(self, text):
|
||||
'''
|
||||
Write characters to a PIL image canvas.
|
||||
|
||||
TODO:
|
||||
- Character set detection and decoding,
|
||||
http://pypi.python.org/pypi/chardet
|
||||
'''
|
||||
# TODO: Account for alternative line endings
|
||||
lines = text.split('\n')
|
||||
|
||||
line_lengths = [len(i) for i in lines]
|
||||
|
||||
# Calculate destination size based on text input and character size
|
||||
im_dims = (
|
||||
max(line_lengths) * self._if_dims[0],
|
||||
len(line_lengths) * self._if_dims[1])
|
||||
|
||||
_log.info('Destination image dimensions will be {0}'.format(
|
||||
im_dims))
|
||||
|
||||
im = Image.new(
|
||||
'RGBA',
|
||||
im_dims,
|
||||
(255, 255, 255, 0))
|
||||
|
||||
draw = ImageDraw.Draw(im)
|
||||
|
||||
char_pos = [0, 0]
|
||||
|
||||
for line in lines:
|
||||
line_length = len(line)
|
||||
|
||||
_log.debug('Writing line at {0}'.format(char_pos))
|
||||
|
||||
for _pos in range(0, line_length):
|
||||
char = line[_pos]
|
||||
|
||||
px_pos = self._px_pos(char_pos)
|
||||
|
||||
_log.debug('Writing character "{0}" at {1} (px pos {2}'.format(
|
||||
char,
|
||||
char_pos,
|
||||
px_pos))
|
||||
|
||||
draw.text(
|
||||
px_pos,
|
||||
char,
|
||||
font=self._if,
|
||||
fill=(0, 0, 0, 255))
|
||||
|
||||
char_pos[0] += 1
|
||||
|
||||
# Reset X position, increment Y position
|
||||
char_pos[0] = 0
|
||||
char_pos[1] += 1
|
||||
|
||||
return im
|
||||
|
||||
def _px_pos(self, char_pos):
|
||||
'''
|
||||
Helper function to calculate the pixel position based on
|
||||
character position and character dimensions
|
||||
'''
|
||||
px_pos = [0, 0]
|
||||
for index, val in zip(range(0, len(char_pos)), char_pos):
|
||||
px_pos[index] = char_pos[index] * self._if_dims[index]
|
||||
|
||||
return px_pos
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
import urllib
|
||||
txt = urllib.urlopen('file:///home/joar/Dropbox/ascii/install-all-the-dependencies.txt')
|
||||
|
||||
_log.setLevel(logging.DEBUG)
|
||||
logging.basicConfig()
|
||||
|
||||
converter = AsciiToImage()
|
||||
|
||||
converter.convert(txt.read(), '/tmp/test.png')
|
||||
|
||||
'''
|
||||
im, x, y, duration = renderImage(h, 10)
|
||||
print "Rendered image in %.5f seconds" % duration
|
||||
im.save('tldr.png', "PNG")
|
||||
'''
|
||||
1
mediagoblin/media_types/ascii/fonts/Inconsolata.otf
Symbolic link
1
mediagoblin/media_types/ascii/fonts/Inconsolata.otf
Symbolic link
@@ -0,0 +1 @@
|
||||
../../../../extlib/inconsolata/Inconsolata.otf
|
||||
93
mediagoblin/media_types/ascii/processing.py
Normal file
93
mediagoblin/media_types/ascii/processing.py
Normal file
@@ -0,0 +1,93 @@
|
||||
# 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/>.
|
||||
import asciitoimage
|
||||
import chardet
|
||||
import os
|
||||
import Image
|
||||
|
||||
from mediagoblin import mg_globals as mgg
|
||||
from mediagoblin.processing import create_pub_filepath, THUMB_SIZE
|
||||
|
||||
|
||||
def process_ascii(entry):
|
||||
'''
|
||||
Code to process a txt file
|
||||
'''
|
||||
workbench = mgg.workbench_manager.create_workbench()
|
||||
# Conversions subdirectory to avoid collisions
|
||||
conversions_subdir = os.path.join(
|
||||
workbench.dir, 'conversions')
|
||||
os.mkdir(conversions_subdir)
|
||||
|
||||
queued_filepath = entry['queued_media_file']
|
||||
queued_filename = workbench.localized_file(
|
||||
mgg.queue_store, queued_filepath,
|
||||
'source')
|
||||
|
||||
queued_file = file(queued_filename, 'rb')
|
||||
|
||||
with queued_file:
|
||||
queued_file_charset = chardet.detect(queued_file.read())
|
||||
|
||||
queued_file.seek(0) # Rewind the queued file
|
||||
|
||||
thumb_filepath = create_pub_filepath(
|
||||
entry, 'thumbnail.png')
|
||||
|
||||
tmp_thumb_filename = os.path.join(
|
||||
conversions_subdir, thumb_filepath[-1])
|
||||
|
||||
converter = asciitoimage.AsciiToImage()
|
||||
|
||||
thumb = converter._create_image(
|
||||
queued_file.read())
|
||||
|
||||
with file(tmp_thumb_filename, 'w') as thumb_file:
|
||||
thumb.thumbnail(THUMB_SIZE, Image.ANTIALIAS)
|
||||
thumb.save(thumb_file)
|
||||
|
||||
mgg.public_store.copy_local_to_storage(
|
||||
tmp_thumb_filename, thumb_filepath)
|
||||
|
||||
queued_file.seek(0)
|
||||
|
||||
original_filepath = create_pub_filepath(entry, queued_filepath[-1])
|
||||
|
||||
with mgg.public_store.get_file(original_filepath, 'wb') \
|
||||
as original_file:
|
||||
original_file.write(queued_file.read())
|
||||
|
||||
|
||||
queued_file.seek(0) # Rewind *again*
|
||||
|
||||
unicode_filepath = create_pub_filepath(entry, 'unicode.txt')
|
||||
|
||||
with mgg.public_store.get_file(unicode_filepath, 'wb') \
|
||||
as unicode_file:
|
||||
unicode_file.write(
|
||||
unicode(queued_file.read().decode(
|
||||
queued_file_charset['encoding'])).encode(
|
||||
'ascii',
|
||||
'xmlcharrefreplace'))
|
||||
|
||||
mgg.queue_store.delete_file(queued_filepath)
|
||||
entry['queued_media_file'] = []
|
||||
media_files_dict = entry.setdefault('media_files', {})
|
||||
media_files_dict['thumb'] = thumb_filepath
|
||||
media_files_dict['unicode'] = unicode_filepath
|
||||
media_files_dict['original'] = original_filepath
|
||||
|
||||
entry.save()
|
||||
26
mediagoblin/media_types/image/__init__.py
Normal file
26
mediagoblin/media_types/image/__init__.py
Normal file
@@ -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/>.
|
||||
|
||||
from mediagoblin.media_types.image.processing import process_image
|
||||
|
||||
|
||||
MEDIA_MANAGER = {
|
||||
"human_readable": "Image",
|
||||
"processor": process_image, # alternately a string,
|
||||
# 'mediagoblin.media_types.image.processing'?
|
||||
"display_template": "mediagoblin/media_displays/image.html",
|
||||
"default_thumb": "images/media_thumbs/image.jpg",
|
||||
"accepted_extensions": ["jpg", "jpeg", "png", "gif", "tiff"]}
|
||||
109
mediagoblin/media_types/image/processing.py
Normal file
109
mediagoblin/media_types/image/processing.py
Normal file
@@ -0,0 +1,109 @@
|
||||
# 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/>.
|
||||
|
||||
import Image
|
||||
import os
|
||||
|
||||
from mediagoblin import mg_globals as mgg
|
||||
|
||||
from mediagoblin.processing import BadMediaFail, \
|
||||
create_pub_filepath, THUMB_SIZE, MEDIUM_SIZE
|
||||
|
||||
################################
|
||||
# Media processing initial steps
|
||||
################################
|
||||
|
||||
|
||||
def process_image(entry):
|
||||
"""
|
||||
Code to process an image
|
||||
"""
|
||||
workbench = mgg.workbench_manager.create_workbench()
|
||||
# Conversions subdirectory to avoid collisions
|
||||
conversions_subdir = os.path.join(
|
||||
workbench.dir, 'conversions')
|
||||
os.mkdir(conversions_subdir)
|
||||
|
||||
queued_filepath = entry.queued_media_file
|
||||
queued_filename = workbench.localized_file(
|
||||
mgg.queue_store, queued_filepath,
|
||||
'source')
|
||||
|
||||
filename_bits = os.path.splitext(queued_filename)
|
||||
basename = os.path.split(filename_bits[0])[1]
|
||||
extension = filename_bits[1].lower()
|
||||
|
||||
try:
|
||||
thumb = Image.open(queued_filename)
|
||||
except IOError:
|
||||
raise BadMediaFail()
|
||||
|
||||
thumb.thumbnail(THUMB_SIZE, Image.ANTIALIAS)
|
||||
|
||||
# Copy the thumb to the conversion subdir, then remotely.
|
||||
thumb_filename = 'thumbnail' + extension
|
||||
thumb_filepath = create_pub_filepath(entry, thumb_filename)
|
||||
tmp_thumb_filename = os.path.join(
|
||||
conversions_subdir, thumb_filename)
|
||||
with file(tmp_thumb_filename, 'w') as thumb_file:
|
||||
thumb.save(thumb_file)
|
||||
mgg.public_store.copy_local_to_storage(
|
||||
tmp_thumb_filename, thumb_filepath)
|
||||
|
||||
# If the size of the original file exceeds the specified size of a `medium`
|
||||
# file, a `medium.jpg` files is created and later associated with the media
|
||||
# entry.
|
||||
medium = Image.open(queued_filename)
|
||||
medium_processed = False
|
||||
|
||||
if medium.size[0] > MEDIUM_SIZE[0] or medium.size[1] > MEDIUM_SIZE[1]:
|
||||
medium.thumbnail(MEDIUM_SIZE, Image.ANTIALIAS)
|
||||
|
||||
medium_filename = 'medium' + extension
|
||||
medium_filepath = create_pub_filepath(entry, medium_filename)
|
||||
tmp_medium_filename = os.path.join(
|
||||
conversions_subdir, medium_filename)
|
||||
|
||||
with file(tmp_medium_filename, 'w') as medium_file:
|
||||
medium.save(medium_file)
|
||||
|
||||
mgg.public_store.copy_local_to_storage(
|
||||
tmp_medium_filename, medium_filepath)
|
||||
|
||||
medium_processed = True
|
||||
|
||||
# we have to re-read because unlike PIL, not everything reads
|
||||
# things in string representation :)
|
||||
queued_file = file(queued_filename, 'rb')
|
||||
|
||||
with queued_file:
|
||||
#create_pub_filepath(entry, queued_filepath[-1])
|
||||
original_filepath = create_pub_filepath(entry, basename + extension)
|
||||
|
||||
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)
|
||||
entry.queued_media_file = []
|
||||
media_files_dict = entry.setdefault('media_files', {})
|
||||
media_files_dict['thumb'] = thumb_filepath
|
||||
media_files_dict['original'] = original_filepath
|
||||
if medium_processed:
|
||||
media_files_dict['medium'] = medium_filepath
|
||||
|
||||
# clean up workbench
|
||||
workbench.destroy_self()
|
||||
27
mediagoblin/media_types/video/__init__.py
Normal file
27
mediagoblin/media_types/video/__init__.py
Normal file
@@ -0,0 +1,27 @@
|
||||
# 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/>.
|
||||
|
||||
from mediagoblin.media_types.video.processing import process_video
|
||||
|
||||
|
||||
MEDIA_MANAGER = {
|
||||
"human_readable": "Video",
|
||||
"processor": process_video, # alternately a string,
|
||||
# 'mediagoblin.media_types.image.processing'?
|
||||
"display_template": "mediagoblin/media_displays/video.html",
|
||||
"default_thumb": "images/media_thumbs/video.jpg",
|
||||
"accepted_extensions": [
|
||||
"mp4", "mov", "webm", "avi", "3gp", "3gpp", "mkv", "ogv", "ogg"]}
|
||||
505
mediagoblin/media_types/video/devices/web-advanced.json
Normal file
505
mediagoblin/media_types/video/devices/web-advanced.json
Normal file
@@ -0,0 +1,505 @@
|
||||
{
|
||||
"make": "Generic",
|
||||
"model": "Web Browser (Advanced)",
|
||||
"description": "Media for World Wide Web",
|
||||
"version": "0.1",
|
||||
"author": {
|
||||
"name": "Dionisio E Alonso",
|
||||
"email": "dealonso@gmail.com"
|
||||
},
|
||||
"icon": "file://web.svg",
|
||||
"default": "WebM 480p",
|
||||
"presets": [
|
||||
{
|
||||
"name": "H.264 720p",
|
||||
"extension": "mp4",
|
||||
"container": "qtmux",
|
||||
"vcodec": {
|
||||
"name": "x264enc",
|
||||
"container": "qtmux",
|
||||
"width": [
|
||||
960, 1280
|
||||
],
|
||||
"height": [
|
||||
720, 720
|
||||
],
|
||||
"rate": [
|
||||
1, 30
|
||||
],
|
||||
"passes": [
|
||||
"pass=qual quantizer=23 subme=6 cabac=0 threads=0"
|
||||
]
|
||||
},
|
||||
"acodec": {
|
||||
"name": "faac",
|
||||
"container": "qtmux",
|
||||
"width": [
|
||||
8, 24
|
||||
],
|
||||
"depth": [
|
||||
8, 24
|
||||
],
|
||||
"rate": [
|
||||
8000, 96000
|
||||
],
|
||||
"channels": [
|
||||
1, 2
|
||||
],
|
||||
"passes": [
|
||||
"bitrate=131072 profile=LC"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "WebM 720p",
|
||||
"extension": "webm",
|
||||
"container": "webmmux",
|
||||
"icon": "file://web-webm.svg",
|
||||
"vcodec": {
|
||||
"name": "vp8enc",
|
||||
"container": "webmmux",
|
||||
"width": [
|
||||
960, 1280
|
||||
],
|
||||
"height": [
|
||||
720, 720
|
||||
],
|
||||
"rate": [
|
||||
1, 30
|
||||
],
|
||||
"passes": [
|
||||
"quality=5.75 threads=%(threads)s speed=2"
|
||||
]
|
||||
},
|
||||
"acodec": {
|
||||
"name": "vorbisenc",
|
||||
"container": "webmmux",
|
||||
"width": [
|
||||
8, 32
|
||||
],
|
||||
"depth": [
|
||||
8, 24
|
||||
],
|
||||
"rate": [
|
||||
8000, 96000
|
||||
],
|
||||
"channels": [
|
||||
1, 2
|
||||
],
|
||||
"passes": [
|
||||
"quality=0.3"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Flash Video 720p",
|
||||
"extension": "flv",
|
||||
"icon": "file://web-flv.png",
|
||||
"container": "flvmux",
|
||||
"vcodec": {
|
||||
"name": "x264enc",
|
||||
"container": "flvmux",
|
||||
"width": [
|
||||
960, 1280
|
||||
],
|
||||
"height": [
|
||||
720, 720
|
||||
],
|
||||
"rate": [
|
||||
1, 30
|
||||
],
|
||||
"passes": [
|
||||
"pass=qual quantizer=23 subme=6 cabac=0 threads=0"
|
||||
]
|
||||
},
|
||||
"acodec": {
|
||||
"name": "faac",
|
||||
"container": "flvmux",
|
||||
"width": [
|
||||
8, 24
|
||||
],
|
||||
"depth": [
|
||||
8, 24
|
||||
],
|
||||
"rate": [
|
||||
8000, 96000
|
||||
],
|
||||
"channels": [
|
||||
1, 2
|
||||
],
|
||||
"passes": [
|
||||
"bitrate=131072 profile=LC"
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"name": "H.264 576p",
|
||||
"extension": "mp4",
|
||||
"container": "qtmux",
|
||||
"vcodec": {
|
||||
"name": "x264enc",
|
||||
"container": "qtmux",
|
||||
"width": [
|
||||
768, 1024
|
||||
],
|
||||
"height": [
|
||||
576, 576
|
||||
],
|
||||
"rate": [
|
||||
1, 30
|
||||
],
|
||||
"passes": [
|
||||
"pass=qual quantizer=23 subme=6 cabac=0 threads=0"
|
||||
]
|
||||
},
|
||||
"acodec": {
|
||||
"name": "faac",
|
||||
"container": "qtmux",
|
||||
"width": [
|
||||
8, 24
|
||||
],
|
||||
"depth": [
|
||||
8, 24
|
||||
],
|
||||
"rate": [
|
||||
8000, 96000
|
||||
],
|
||||
"channels": [
|
||||
1, 2
|
||||
],
|
||||
"passes": [
|
||||
"bitrate=131072 profile=LC"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "WebM 576p",
|
||||
"extension": "webm",
|
||||
"container": "webmmux",
|
||||
"icon": "file://web-webm.svg",
|
||||
"vcodec": {
|
||||
"name": "vp8enc",
|
||||
"container": "webmmux",
|
||||
"width": [
|
||||
768, 1024
|
||||
],
|
||||
"height": [
|
||||
576, 576
|
||||
],
|
||||
"rate": [
|
||||
1, 30
|
||||
],
|
||||
"passes": [
|
||||
"quality=5.75 threads=%(threads)s speed=2"
|
||||
]
|
||||
},
|
||||
"acodec": {
|
||||
"name": "vorbisenc",
|
||||
"container": "webmmux",
|
||||
"width": [
|
||||
8, 32
|
||||
],
|
||||
"depth": [
|
||||
8, 24
|
||||
],
|
||||
"rate": [
|
||||
8000, 96000
|
||||
],
|
||||
"channels": [
|
||||
1, 2
|
||||
],
|
||||
"passes": [
|
||||
"quality=0.3"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Flash Video 576p",
|
||||
"extension": "flv",
|
||||
"icon": "file://web-flv.png",
|
||||
"container": "flvmux",
|
||||
"vcodec": {
|
||||
"name": "x264enc",
|
||||
"container": "flvmux",
|
||||
"width": [
|
||||
768, 1024
|
||||
],
|
||||
"height": [
|
||||
576, 576
|
||||
],
|
||||
"rate": [
|
||||
1, 30
|
||||
],
|
||||
"passes": [
|
||||
"pass=qual quantizer=23 subme=6 cabac=0 threads=0"
|
||||
]
|
||||
},
|
||||
"acodec": {
|
||||
"name": "faac",
|
||||
"container": "flvmux",
|
||||
"width": [
|
||||
8, 24
|
||||
],
|
||||
"depth": [
|
||||
8, 24
|
||||
],
|
||||
"rate": [
|
||||
8000, 96000
|
||||
],
|
||||
"channels": [
|
||||
1, 2
|
||||
],
|
||||
"passes": [
|
||||
"bitrate=131072 profile=LC"
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"name": "H.264 480p",
|
||||
"extension": "mp4",
|
||||
"container": "qtmux",
|
||||
"vcodec": {
|
||||
"name": "x264enc",
|
||||
"container": "qtmux",
|
||||
"width": [
|
||||
640, 854
|
||||
],
|
||||
"height": [
|
||||
480, 480
|
||||
],
|
||||
"rate": [
|
||||
1, 30
|
||||
],
|
||||
"passes": [
|
||||
"pass=qual quantizer=23 subme=6 cabac=0 threads=0"
|
||||
]
|
||||
},
|
||||
"acodec": {
|
||||
"name": "faac",
|
||||
"container": "qtmux",
|
||||
"width": [
|
||||
8, 24
|
||||
],
|
||||
"depth": [
|
||||
8, 24
|
||||
],
|
||||
"rate": [
|
||||
8000, 96000
|
||||
],
|
||||
"channels": [
|
||||
1, 2
|
||||
],
|
||||
"passes": [
|
||||
"bitrate=131072 profile=LC"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "WebM 480p",
|
||||
"extension": "webm",
|
||||
"container": "webmmux",
|
||||
"icon": "file://web-webm.svg",
|
||||
"vcodec": {
|
||||
"name": "vp8enc",
|
||||
"container": "webmmux",
|
||||
"width": [
|
||||
640, 854
|
||||
],
|
||||
"height": [
|
||||
480, 480
|
||||
],
|
||||
"rate": [
|
||||
1, 30
|
||||
],
|
||||
"passes": [
|
||||
"quality=5.75 threads=%(threads)s speed=2"
|
||||
]
|
||||
},
|
||||
"acodec": {
|
||||
"name": "vorbisenc",
|
||||
"container": "webmmux",
|
||||
"width": [
|
||||
8, 32
|
||||
],
|
||||
"depth": [
|
||||
8, 24
|
||||
],
|
||||
"rate": [
|
||||
8000, 96000
|
||||
],
|
||||
"channels": [
|
||||
1, 2
|
||||
],
|
||||
"passes": [
|
||||
"quality=0.3"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Flash Video 480p",
|
||||
"extension": "flv",
|
||||
"icon": "file://web-flv.png",
|
||||
"container": "flvmux",
|
||||
"vcodec": {
|
||||
"name": "x264enc",
|
||||
"container": "flvmux",
|
||||
"width": [
|
||||
640, 854
|
||||
],
|
||||
"height": [
|
||||
480, 480
|
||||
],
|
||||
"rate": [
|
||||
1, 30
|
||||
],
|
||||
"passes": [
|
||||
"pass=qual quantizer=23 subme=6 cabac=0 threads=0"
|
||||
]
|
||||
},
|
||||
"acodec": {
|
||||
"name": "faac",
|
||||
"container": "flvmux",
|
||||
"width": [
|
||||
8, 24
|
||||
],
|
||||
"depth": [
|
||||
8, 24
|
||||
],
|
||||
"rate": [
|
||||
8000, 96000
|
||||
],
|
||||
"channels": [
|
||||
1, 2
|
||||
],
|
||||
"passes": [
|
||||
"bitrate=131072 profile=LC"
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"name": "H.264 360p",
|
||||
"extension": "mp4",
|
||||
"container": "qtmux",
|
||||
"vcodec": {
|
||||
"name": "x264enc",
|
||||
"container": "qtmux",
|
||||
"width": [
|
||||
480, 640
|
||||
],
|
||||
"height": [
|
||||
360, 360
|
||||
],
|
||||
"rate": [
|
||||
1, 30
|
||||
],
|
||||
"passes": [
|
||||
"pass=qual quantizer=23 subme=6 cabac=0 threads=0"
|
||||
]
|
||||
},
|
||||
"acodec": {
|
||||
"name": "faac",
|
||||
"container": "qtmux",
|
||||
"width": [
|
||||
8, 24
|
||||
],
|
||||
"depth": [
|
||||
8, 24
|
||||
],
|
||||
"rate": [
|
||||
8000, 96000
|
||||
],
|
||||
"channels": [
|
||||
1, 2
|
||||
],
|
||||
"passes": [
|
||||
"bitrate=131072 profile=LC"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "WebM 360p",
|
||||
"extension": "webm",
|
||||
"container": "webmmux",
|
||||
"icon": "file://web-webm.svg",
|
||||
"vcodec": {
|
||||
"name": "vp8enc",
|
||||
"container": "webmmux",
|
||||
"width": [
|
||||
480, 640
|
||||
],
|
||||
"height": [
|
||||
360, 360
|
||||
],
|
||||
"rate": [
|
||||
1, 30
|
||||
],
|
||||
"passes": [
|
||||
"quality=5.75 threads=%(threads)s speed=2"
|
||||
]
|
||||
},
|
||||
"acodec": {
|
||||
"name": "vorbisenc",
|
||||
"container": "webmmux",
|
||||
"width": [
|
||||
8, 32
|
||||
],
|
||||
"depth": [
|
||||
8, 24
|
||||
],
|
||||
"rate": [
|
||||
8000, 96000
|
||||
],
|
||||
"channels": [
|
||||
1, 2
|
||||
],
|
||||
"passes": [
|
||||
"quality=0.3"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Flash Video 360p",
|
||||
"extension": "flv",
|
||||
"icon": "file://web-flv.png",
|
||||
"container": "flvmux",
|
||||
"vcodec": {
|
||||
"name": "x264enc",
|
||||
"container": "flvmux",
|
||||
"width": [
|
||||
480, 640
|
||||
],
|
||||
"height": [
|
||||
360, 360
|
||||
],
|
||||
"rate": [
|
||||
1, 30
|
||||
],
|
||||
"passes": [
|
||||
"pass=qual quantizer=23 subme=6 cabac=0 threads=0"
|
||||
]
|
||||
},
|
||||
"acodec": {
|
||||
"name": "faac",
|
||||
"container": "flvmux",
|
||||
"width": [
|
||||
8, 24
|
||||
],
|
||||
"depth": [
|
||||
8, 24
|
||||
],
|
||||
"rate": [
|
||||
8000, 96000
|
||||
],
|
||||
"channels": [
|
||||
1, 2
|
||||
],
|
||||
"passes": [
|
||||
"bitrate=131072 profile=LC"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
BIN
mediagoblin/media_types/video/devices/web-flv.png
Normal file
BIN
mediagoblin/media_types/video/devices/web-flv.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.2 KiB |
259
mediagoblin/media_types/video/devices/web-webm.svg
Normal file
259
mediagoblin/media_types/video/devices/web-webm.svg
Normal file
@@ -0,0 +1,259 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="48px"
|
||||
height="48px"
|
||||
id="svg2816"
|
||||
version="1.1"
|
||||
inkscape:version="0.47 r22583"
|
||||
sodipodi:docname="web-webm.svg">
|
||||
<defs
|
||||
id="defs2818">
|
||||
<linearGradient
|
||||
id="linearGradient3656">
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3658" />
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop3660" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient3632">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0.54901963;"
|
||||
offset="0"
|
||||
id="stop3634" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop3636" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient3622">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3624" />
|
||||
<stop
|
||||
style="stop-color:#d3d7cf;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop3626" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient3600">
|
||||
<stop
|
||||
style="stop-color:#8ae234;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3602" />
|
||||
<stop
|
||||
style="stop-color:#4e9a06;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop3604" />
|
||||
</linearGradient>
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 24 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="48 : 24 : 1"
|
||||
inkscape:persp3d-origin="24 : 16 : 1"
|
||||
id="perspective2824" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3600"
|
||||
id="linearGradient3606"
|
||||
x1="20.256382"
|
||||
y1="2.546674"
|
||||
x2="20.256382"
|
||||
y2="46.881901"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3622"
|
||||
id="linearGradient3628"
|
||||
x1="21.2349"
|
||||
y1="7.948472"
|
||||
x2="21.2349"
|
||||
y2="40.191879"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3632"
|
||||
id="linearGradient3638"
|
||||
x1="6.4826794"
|
||||
y1="4.543263"
|
||||
x2="25.363527"
|
||||
y2="35.227882"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(0,-0.35355339)" />
|
||||
<inkscape:perspective
|
||||
id="perspective3693"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3600-5"
|
||||
id="linearGradient3606-9"
|
||||
x1="20.256382"
|
||||
y1="2.546674"
|
||||
x2="20.256382"
|
||||
y2="46.881901"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
id="linearGradient3600-5">
|
||||
<stop
|
||||
style="stop-color:#8ae234;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3602-7" />
|
||||
<stop
|
||||
style="stop-color:#4e9a06;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop3604-2" />
|
||||
</linearGradient>
|
||||
<filter
|
||||
inkscape:collect="always"
|
||||
id="filter3731">
|
||||
<feGaussianBlur
|
||||
inkscape:collect="always"
|
||||
stdDeviation="0.82730657"
|
||||
id="feGaussianBlur3733" />
|
||||
</filter>
|
||||
<inkscape:perspective
|
||||
id="perspective3749"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3782"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="8"
|
||||
inkscape:cx="20.51741"
|
||||
inkscape:cy="22.534228"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:document-units="px"
|
||||
showguides="true"
|
||||
inkscape:guide-bbox="true"
|
||||
inkscape:window-width="1099"
|
||||
inkscape:window-height="834"
|
||||
inkscape:window-x="801"
|
||||
inkscape:window-y="106"
|
||||
inkscape:window-maximized="0">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid3608" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata2821">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer">
|
||||
<path
|
||||
sodipodi:type="star"
|
||||
style="fill:#000000;fill-opacity:0.2869955;stroke:none;filter:url(#filter3731)"
|
||||
id="path3598-4"
|
||||
sodipodi:sides="3"
|
||||
sodipodi:cx="13.857143"
|
||||
sodipodi:cy="24.714287"
|
||||
sodipodi:r1="25.596954"
|
||||
sodipodi:r2="12.798477"
|
||||
sodipodi:arg1="0"
|
||||
sodipodi:arg2="1.0471976"
|
||||
inkscape:flatsided="false"
|
||||
inkscape:rounded="0"
|
||||
inkscape:randomized="0"
|
||||
d="M 39.454098,24.714287 20.256381,35.798093 1.0586662,46.8819 l 0,-22.167614 0,-22.1676119 19.1977168,11.0838069 19.197715,11.083806 z"
|
||||
transform="matrix(1.0537808,0,0,1.0537808,3.6163385,-1.9600717)" />
|
||||
<path
|
||||
sodipodi:type="star"
|
||||
style="fill:url(#linearGradient3606);fill-opacity:1;stroke:#366a04;stroke-width:1.05497880999999993;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-linejoin:round"
|
||||
id="path3598"
|
||||
sodipodi:sides="3"
|
||||
sodipodi:cx="13.857143"
|
||||
sodipodi:cy="24.714287"
|
||||
sodipodi:r1="25.596954"
|
||||
sodipodi:r2="12.798477"
|
||||
sodipodi:arg1="0"
|
||||
sodipodi:arg2="1.0471976"
|
||||
inkscape:flatsided="false"
|
||||
inkscape:rounded="0"
|
||||
inkscape:randomized="0"
|
||||
d="M 39.454098,24.714287 20.256381,35.798093 1.0586662,46.8819 l 0,-22.167614 0,-22.1676119 19.1977168,11.0838069 19.197715,11.083806 z"
|
||||
transform="matrix(0.94788634,0,0,0.94788634,5.0257749,0.56128794)" />
|
||||
<path
|
||||
style="fill:url(#linearGradient3628);stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
|
||||
d="m 6.5304575,9.646791 8.7347075,20.091724 4.674611,-18.160553 4.525987,2.612472 3.885316,12.559503 4.403755,-7.765833 1.744319,1.009296 -2.127799,9.211229 -6.155446,3.554753 -4.028978,-9.439016 -2.255629,13.086534 -5.852703,3.373025 -7.5584205,-9.989634 0.01028,-20.1435 z"
|
||||
id="path3620"
|
||||
sodipodi:nodetypes="cccccccccccccc" />
|
||||
<path
|
||||
style="fill:none;stroke:url(#linearGradient3638);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 6.9826793,42.785087 0,-38.0953773 32.9068657,18.9987873"
|
||||
id="path3630"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.15686275"
|
||||
d="M 6.6184028,8.6135689 15.026019,28.134068 19.45616,10.995613"
|
||||
id="path3739"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.15686275"
|
||||
d="m 25.081121,14.552251 3.345117,11.020499 3.93014,-6.825955"
|
||||
id="path3739-5"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.15686275"
|
||||
d="m 6.6291261,30.85266 7.0710679,9.280777"
|
||||
id="path3772"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.15686275"
|
||||
d="m 34.736621,20.290253 -2.032932,8.794642"
|
||||
id="path3772-6"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.15686275"
|
||||
d="m 20.594485,35.934991 1.811961,-10.650796 3.270369,7.778174"
|
||||
id="path3796"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 8.8 KiB |
982
mediagoblin/media_types/video/devices/web.svg
Normal file
982
mediagoblin/media_types/video/devices/web.svg
Normal file
@@ -0,0 +1,982 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="48px"
|
||||
height="48px"
|
||||
id="svg3440"
|
||||
sodipodi:version="0.32"
|
||||
inkscape:version="0.46"
|
||||
sodipodi:docbase="/home/jimmac/src/cvs/tango-icon-theme/scalable/apps"
|
||||
sodipodi:docname="internet-web-browser.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape">
|
||||
<defs
|
||||
id="defs3">
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 24 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="48 : 24 : 1"
|
||||
inkscape:persp3d-origin="24 : 16 : 1"
|
||||
id="perspective156" />
|
||||
<linearGradient
|
||||
id="linearGradient4750">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop4752" />
|
||||
<stop
|
||||
style="stop-color:#fefefe;stop-opacity:1.0000000;"
|
||||
offset="0.37931034"
|
||||
id="stop4758" />
|
||||
<stop
|
||||
style="stop-color:#1d1d1d;stop-opacity:1.0000000;"
|
||||
offset="1.0000000"
|
||||
id="stop4754" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient4350">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop4352" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop4354" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient4126">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1.0000000;"
|
||||
offset="0.0000000"
|
||||
id="stop4128" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0.16494845;"
|
||||
offset="1.0000000"
|
||||
id="stop4130" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient4114">
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop4116" />
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop4118" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient3962">
|
||||
<stop
|
||||
style="stop-color:#d3e9ff;stop-opacity:1.0000000;"
|
||||
offset="0.0000000"
|
||||
id="stop3964" />
|
||||
<stop
|
||||
style="stop-color:#d3e9ff;stop-opacity:1.0000000;"
|
||||
offset="0.15517241"
|
||||
id="stop4134" />
|
||||
<stop
|
||||
style="stop-color:#4074ae;stop-opacity:1.0000000;"
|
||||
offset="0.75000000"
|
||||
id="stop4346" />
|
||||
<stop
|
||||
style="stop-color:#36486c;stop-opacity:1.0000000;"
|
||||
offset="1.0000000"
|
||||
id="stop3966" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3962"
|
||||
id="radialGradient3968"
|
||||
gradientTransform="scale(0.999989,1.000011)"
|
||||
cx="18.247644"
|
||||
cy="15.716079"
|
||||
fx="18.247644"
|
||||
fy="15.716079"
|
||||
r="29.993349"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4114"
|
||||
id="radialGradient4120"
|
||||
gradientTransform="scale(1.643990,0.608276)"
|
||||
cx="15.115514"
|
||||
cy="63.965388"
|
||||
fx="15.115514"
|
||||
fy="63.965388"
|
||||
r="12.289036"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4126"
|
||||
id="radialGradient4132"
|
||||
gradientTransform="scale(0.999989,1.000011)"
|
||||
cx="15.601279"
|
||||
cy="12.142302"
|
||||
fx="15.601279"
|
||||
fy="12.142302"
|
||||
r="43.526714"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4350"
|
||||
id="radialGradient4356"
|
||||
gradientTransform="scale(1.179536,0.847791)"
|
||||
cx="11.826907"
|
||||
cy="10.476453"
|
||||
fx="11.826907"
|
||||
fy="10.476453"
|
||||
r="32.664848"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4750"
|
||||
id="radialGradient4756"
|
||||
gradientTransform="scale(1.036822,0.964486)"
|
||||
cx="18.633780"
|
||||
cy="17.486208"
|
||||
fx="18.934305"
|
||||
fy="17.810213"
|
||||
r="40.692665"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<radialGradient
|
||||
r="40.692665"
|
||||
fy="17.810213"
|
||||
fx="18.934305"
|
||||
cy="17.486208"
|
||||
cx="18.633780"
|
||||
gradientTransform="scale(1.036822,0.964486)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1460"
|
||||
xlink:href="#linearGradient4750"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="40.692665"
|
||||
fy="17.810213"
|
||||
fx="18.934305"
|
||||
cy="17.486208"
|
||||
cx="18.633780"
|
||||
gradientTransform="scale(1.036822,0.964486)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1462"
|
||||
xlink:href="#linearGradient4750"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="40.692665"
|
||||
fy="17.810213"
|
||||
fx="18.934305"
|
||||
cy="17.486208"
|
||||
cx="18.633780"
|
||||
gradientTransform="scale(1.036822,0.964486)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1466"
|
||||
xlink:href="#linearGradient4750"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="40.692665"
|
||||
fy="17.810213"
|
||||
fx="18.934305"
|
||||
cy="17.486208"
|
||||
cx="18.633780"
|
||||
gradientTransform="scale(1.036822,0.964486)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1468"
|
||||
xlink:href="#linearGradient4750"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="40.692665"
|
||||
fy="17.810213"
|
||||
fx="18.934305"
|
||||
cy="17.486208"
|
||||
cx="18.633780"
|
||||
gradientTransform="scale(1.036822,0.964486)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1470"
|
||||
xlink:href="#linearGradient4750"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="40.692665"
|
||||
fy="17.810213"
|
||||
fx="18.934305"
|
||||
cy="17.486208"
|
||||
cx="18.633780"
|
||||
gradientTransform="scale(1.036822,0.964486)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1474"
|
||||
xlink:href="#linearGradient4750"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="40.692665"
|
||||
fy="17.810213"
|
||||
fx="18.934305"
|
||||
cy="17.486208"
|
||||
cx="18.633780"
|
||||
gradientTransform="scale(1.036822,0.964486)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1476"
|
||||
xlink:href="#linearGradient4750"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="40.692665"
|
||||
fy="17.810213"
|
||||
fx="18.934305"
|
||||
cy="17.486208"
|
||||
cx="18.633780"
|
||||
gradientTransform="scale(1.036822,0.964486)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1478"
|
||||
xlink:href="#linearGradient4750"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="40.692665"
|
||||
fy="17.810213"
|
||||
fx="18.934305"
|
||||
cy="17.486208"
|
||||
cx="18.633780"
|
||||
gradientTransform="scale(1.036822,0.964486)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1482"
|
||||
xlink:href="#linearGradient4750"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="40.692665"
|
||||
fy="17.810213"
|
||||
fx="18.934305"
|
||||
cy="17.486208"
|
||||
cx="18.633780"
|
||||
gradientTransform="scale(1.036822,0.964486)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1484"
|
||||
xlink:href="#linearGradient4750"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="40.692665"
|
||||
fy="17.810213"
|
||||
fx="18.934305"
|
||||
cy="17.486208"
|
||||
cx="18.633780"
|
||||
gradientTransform="scale(1.036822,0.964486)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1486"
|
||||
xlink:href="#linearGradient4750"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="40.692665"
|
||||
fy="17.810213"
|
||||
fx="18.934305"
|
||||
cy="17.486208"
|
||||
cx="18.633780"
|
||||
gradientTransform="scale(1.036822,0.964486)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1490"
|
||||
xlink:href="#linearGradient4750"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="40.692665"
|
||||
fy="17.810213"
|
||||
fx="18.934305"
|
||||
cy="17.486208"
|
||||
cx="18.633780"
|
||||
gradientTransform="scale(1.036822,0.964486)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1492"
|
||||
xlink:href="#linearGradient4750"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="40.692665"
|
||||
fy="17.810213"
|
||||
fx="18.934305"
|
||||
cy="17.486208"
|
||||
cx="18.633780"
|
||||
gradientTransform="scale(1.036822,0.964486)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1494"
|
||||
xlink:href="#linearGradient4750"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="40.692665"
|
||||
fy="17.810213"
|
||||
fx="18.934305"
|
||||
cy="17.486208"
|
||||
cx="18.633780"
|
||||
gradientTransform="scale(1.036822,0.964486)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1498"
|
||||
xlink:href="#linearGradient4750"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="40.692665"
|
||||
fy="17.810213"
|
||||
fx="18.934305"
|
||||
cy="17.486208"
|
||||
cx="18.633780"
|
||||
gradientTransform="scale(1.036822,0.964486)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1500"
|
||||
xlink:href="#linearGradient4750"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="40.692665"
|
||||
fy="17.810213"
|
||||
fx="18.934305"
|
||||
cy="17.486208"
|
||||
cx="18.633780"
|
||||
gradientTransform="scale(1.036822,0.964486)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1502"
|
||||
xlink:href="#linearGradient4750"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="40.692665"
|
||||
fy="17.810213"
|
||||
fx="18.934305"
|
||||
cy="17.486208"
|
||||
cx="18.633780"
|
||||
gradientTransform="scale(1.036822,0.964486)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1506"
|
||||
xlink:href="#linearGradient4750"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="40.692665"
|
||||
fy="17.810213"
|
||||
fx="18.934305"
|
||||
cy="17.486208"
|
||||
cx="18.633780"
|
||||
gradientTransform="scale(1.036822,0.964486)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1508"
|
||||
xlink:href="#linearGradient4750"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="40.692665"
|
||||
fy="17.810213"
|
||||
fx="18.934305"
|
||||
cy="17.486208"
|
||||
cx="18.633780"
|
||||
gradientTransform="scale(1.036822,0.964486)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1510"
|
||||
xlink:href="#linearGradient4750"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="40.692665"
|
||||
fy="17.810213"
|
||||
fx="18.934305"
|
||||
cy="17.486208"
|
||||
cx="18.633780"
|
||||
gradientTransform="scale(1.036822,0.964486)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1514"
|
||||
xlink:href="#linearGradient4750"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="40.692665"
|
||||
fy="17.810213"
|
||||
fx="18.934305"
|
||||
cy="17.486208"
|
||||
cx="18.633780"
|
||||
gradientTransform="scale(1.036822,0.964486)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1516"
|
||||
xlink:href="#linearGradient4750"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="40.692665"
|
||||
fy="17.810213"
|
||||
fx="18.934305"
|
||||
cy="17.486208"
|
||||
cx="18.633780"
|
||||
gradientTransform="scale(1.036822,0.964486)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1518"
|
||||
xlink:href="#linearGradient4750"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="40.692665"
|
||||
fy="17.810213"
|
||||
fx="18.934305"
|
||||
cy="17.486208"
|
||||
cx="18.633780"
|
||||
gradientTransform="scale(1.036822,0.964486)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1522"
|
||||
xlink:href="#linearGradient4750"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="40.692665"
|
||||
fy="17.810213"
|
||||
fx="18.934305"
|
||||
cy="17.486208"
|
||||
cx="18.633780"
|
||||
gradientTransform="scale(1.036822,0.964486)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1524"
|
||||
xlink:href="#linearGradient4750"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="40.692665"
|
||||
fy="17.810213"
|
||||
fx="18.934305"
|
||||
cy="17.486208"
|
||||
cx="18.633780"
|
||||
gradientTransform="scale(1.036822,0.964486)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1526"
|
||||
xlink:href="#linearGradient4750"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="40.692665"
|
||||
fy="17.810213"
|
||||
fx="18.934305"
|
||||
cy="17.486208"
|
||||
cx="18.633780"
|
||||
gradientTransform="scale(1.036822,0.964486)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1528"
|
||||
xlink:href="#linearGradient4750"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="40.692665"
|
||||
fy="17.810213"
|
||||
fx="18.934305"
|
||||
cy="17.486208"
|
||||
cx="18.633780"
|
||||
gradientTransform="scale(1.036822,0.964486)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1530"
|
||||
xlink:href="#linearGradient4750"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="40.692665"
|
||||
fy="17.810213"
|
||||
fx="18.934305"
|
||||
cy="17.486208"
|
||||
cx="18.633780"
|
||||
gradientTransform="scale(1.036822,0.964486)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1532"
|
||||
xlink:href="#linearGradient4750"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="40.692665"
|
||||
fy="17.810213"
|
||||
fx="18.934305"
|
||||
cy="17.486208"
|
||||
cx="18.633780"
|
||||
gradientTransform="scale(1.036822,0.964486)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1534"
|
||||
xlink:href="#linearGradient4750"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="40.692665"
|
||||
fy="17.810213"
|
||||
fx="18.934305"
|
||||
cy="17.486208"
|
||||
cx="18.633780"
|
||||
gradientTransform="scale(1.036822,0.964486)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1536"
|
||||
xlink:href="#linearGradient4750"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="40.692665"
|
||||
fy="17.810213"
|
||||
fx="18.934305"
|
||||
cy="17.486208"
|
||||
cx="18.633780"
|
||||
gradientTransform="scale(1.036822,0.964486)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1538"
|
||||
xlink:href="#linearGradient4750"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="40.692665"
|
||||
fy="17.810213"
|
||||
fx="18.934305"
|
||||
cy="17.486208"
|
||||
cx="18.633780"
|
||||
gradientTransform="scale(1.036822,0.964486)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1540"
|
||||
xlink:href="#linearGradient4750"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="40.692665"
|
||||
fy="17.810213"
|
||||
fx="18.934305"
|
||||
cy="17.486208"
|
||||
cx="18.633780"
|
||||
gradientTransform="scale(1.036822,0.964486)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1542"
|
||||
xlink:href="#linearGradient4750"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="40.692665"
|
||||
fy="17.810213"
|
||||
fx="18.934305"
|
||||
cy="17.486208"
|
||||
cx="18.633780"
|
||||
gradientTransform="scale(1.036822,0.964486)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1544"
|
||||
xlink:href="#linearGradient4750"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="40.692665"
|
||||
fy="17.810213"
|
||||
fx="18.934305"
|
||||
cy="17.486208"
|
||||
cx="18.633780"
|
||||
gradientTransform="scale(1.036822,0.964486)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1546"
|
||||
xlink:href="#linearGradient4750"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="40.692665"
|
||||
fy="17.810213"
|
||||
fx="18.934305"
|
||||
cy="17.486208"
|
||||
cx="18.633780"
|
||||
gradientTransform="scale(1.036822,0.964486)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1550"
|
||||
xlink:href="#linearGradient4750"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="40.692665"
|
||||
fy="17.810213"
|
||||
fx="18.934305"
|
||||
cy="17.486208"
|
||||
cx="18.633780"
|
||||
gradientTransform="scale(1.036822,0.964486)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1552"
|
||||
xlink:href="#linearGradient4750"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="40.692665"
|
||||
fy="17.810213"
|
||||
fx="18.934305"
|
||||
cy="17.486208"
|
||||
cx="18.633780"
|
||||
gradientTransform="scale(1.036822,0.964486)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1554"
|
||||
xlink:href="#linearGradient4750"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="40.692665"
|
||||
fy="17.810213"
|
||||
fx="18.934305"
|
||||
cy="17.486208"
|
||||
cx="18.633780"
|
||||
gradientTransform="scale(1.036822,0.964486)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1558"
|
||||
xlink:href="#linearGradient4750"
|
||||
inkscape:collect="always" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="0.17254902"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="9.8994949"
|
||||
inkscape:cx="25.799661"
|
||||
inkscape:cy="24.622653"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:window-width="1440"
|
||||
inkscape:window-height="823"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="30"
|
||||
inkscape:showpageshadow="false" />
|
||||
<metadata
|
||||
id="metadata4">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title>Globe</dc:title>
|
||||
<dc:creator>
|
||||
<cc:Agent>
|
||||
<dc:title>Jakub Steiner</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:creator>
|
||||
<dc:contributor>
|
||||
<cc:Agent>
|
||||
<dc:title>Tuomas Kuosmanen</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:contributor>
|
||||
<cc:license
|
||||
rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
|
||||
<dc:source>http://jimmac.musichall.cz</dc:source>
|
||||
<dc:subject>
|
||||
<rdf:Bag>
|
||||
<rdf:li>globe</rdf:li>
|
||||
<rdf:li>international</rdf:li>
|
||||
<rdf:li>web</rdf:li>
|
||||
<rdf:li>www</rdf:li>
|
||||
<rdf:li>internet</rdf:li>
|
||||
<rdf:li>network</rdf:li>
|
||||
</rdf:Bag>
|
||||
</dc:subject>
|
||||
</cc:Work>
|
||||
<cc:License
|
||||
rdf:about="http://creativecommons.org/licenses/publicdomain/">
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Reproduction" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Distribution" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
|
||||
</cc:License>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer">
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="fill:url(#radialGradient4120);fill-opacity:1.0000000;stroke:none;stroke-opacity:1.0000000"
|
||||
id="path4112"
|
||||
sodipodi:cx="24.849752"
|
||||
sodipodi:cy="38.908627"
|
||||
sodipodi:rx="20.203051"
|
||||
sodipodi:ry="7.4751287"
|
||||
d="M 45.052803 38.908627 A 20.203051 7.4751287 0 1 1 4.6467018,38.908627 A 20.203051 7.4751287 0 1 1 45.052803 38.908627 z"
|
||||
transform="matrix(1.000000,0.000000,0.000000,1.243244,0.000000,-10.27241)" />
|
||||
<path
|
||||
style="fill:url(#radialGradient3968);fill-opacity:1.0000000;fill-rule:nonzero;stroke:#39396c;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
|
||||
d="M 43.959853,23.485499 C 43.959853,34.195217 35.277750,42.877222 24.569505,42.877222 C 13.860279,42.877222 5.1786663,34.195119 5.1786663,23.485499 C 5.1786663,12.776272 13.860279,4.0951517 24.569505,4.0951517 C 35.277750,4.0951517 43.959853,12.776272 43.959853,23.485499 L 43.959853,23.485499 z "
|
||||
id="path3214" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="opacity:0.42159382;fill:url(#radialGradient4356);fill-opacity:1.0000000;stroke:none;stroke-opacity:1.0000000"
|
||||
id="path4348"
|
||||
sodipodi:cx="17.778685"
|
||||
sodipodi:cy="15.271057"
|
||||
sodipodi:rx="12.929953"
|
||||
sodipodi:ry="9.2934036"
|
||||
d="M 30.708637 15.271057 A 12.929953 9.2934036 0 1 1 4.8487320,15.271057 A 12.929953 9.2934036 0 1 1 30.708637 15.271057 z"
|
||||
transform="matrix(0.835938,0.000000,0.000000,1.000000,9.886868,0.000000)" />
|
||||
<g
|
||||
id="g4136"
|
||||
style="fill:#000000;fill-opacity:0.71345031;fill-rule:nonzero;stroke:none;stroke-miterlimit:4.0000000"
|
||||
transform="matrix(0.982371,0.000000,0.000000,0.982371,0.121079,0.232914)">
|
||||
<g
|
||||
id="g4138">
|
||||
<g
|
||||
id="g4142">
|
||||
<path
|
||||
d="M 44.071300,20.714400 C 44.071300,20.977100 44.071300,20.714400 44.071300,20.714400 L 43.526400,21.331600 C 43.192400,20.938000 42.817400,20.607000 42.436600,20.261300 L 41.600700,20.384300 L 40.837000,19.521000 L 40.837000,20.589400 L 41.491300,21.084500 L 41.926800,21.577700 L 42.508800,20.919500 C 42.655300,21.193900 42.799800,21.468300 42.945300,21.742700 L 42.945300,22.565000 L 42.290000,23.305200 L 41.090800,24.128400 L 40.182600,25.034700 L 39.600600,24.374500 L 39.891600,23.634300 L 39.310500,22.976100 L 38.329100,20.878400 L 37.493200,19.933100 L 37.274400,20.179200 L 37.602500,21.372600 L 38.219700,22.071800 C 38.572200,23.089400 38.920900,24.062000 39.383800,25.034700 C 40.101600,25.034700 40.778300,24.958500 41.491200,24.868700 L 41.491200,25.444900 L 40.619100,27.584100 L 39.819300,28.488400 L 39.165000,29.888800 C 39.165000,30.656400 39.165000,31.424000 39.165000,32.191500 L 39.383800,33.097800 L 39.020500,33.508000 L 38.219700,34.002100 L 37.383800,34.701300 L 38.075200,35.482600 L 37.129900,36.306800 L 37.311500,36.840000 L 35.893500,38.445500 L 34.949200,38.445500 L 34.149400,38.939600 L 33.639600,38.939600 L 33.639600,38.281400 L 33.422800,36.963000 C 33.141500,36.136800 32.848600,35.316500 32.550700,34.496200 C 32.550700,33.890700 32.586800,33.291100 32.623000,32.685700 L 32.987300,31.863400 L 32.477500,30.875100 L 32.514600,29.517700 L 31.823200,28.736400 L 32.168900,27.605500 L 31.606400,26.967300 L 30.624000,26.967300 L 30.296900,26.597200 L 29.315500,27.214900 L 28.916100,26.761300 L 28.006900,27.543000 C 27.389700,26.843300 26.771500,26.144100 26.153400,25.444900 L 25.426800,23.716400 L 26.081100,22.730100 L 25.717800,22.319000 L 26.516600,20.425400 C 27.172900,19.609000 27.858400,18.825800 28.551800,18.039700 L 29.788100,17.710600 L 31.169000,17.546500 L 32.114300,17.793600 L 33.459000,19.150000 L 33.931700,18.615800 L 34.585000,18.533800 L 35.821300,18.944900 L 36.766600,18.944900 L 37.420900,18.368700 L 37.711900,17.957600 L 37.056600,17.546500 L 35.965800,17.464500 C 35.663100,17.044600 35.381800,16.603200 35.022400,16.230100 L 34.658100,16.394200 L 34.512600,17.464500 L 33.858300,16.724300 L 33.713800,15.900100 L 32.987200,15.325900 L 32.695200,15.325900 L 33.422700,16.148200 L 33.131700,16.888400 L 32.550600,17.052500 L 32.913900,16.312300 L 32.258600,15.984200 L 31.678500,15.326000 L 30.586700,15.572100 L 30.442200,15.900200 L 29.787900,16.312300 L 29.424600,17.217600 L 28.516400,17.669700 L 28.116000,17.217600 L 27.680500,17.217600 L 27.680500,15.736200 L 28.625800,15.242100 L 29.352400,15.242100 L 29.205900,14.666900 L 28.625800,14.090700 L 29.606300,13.884600 L 30.151200,13.268400 L 30.586700,12.527200 L 31.387500,12.527200 L 31.168700,11.952000 L 31.678500,11.622900 L 31.678500,12.281100 L 32.768300,12.527200 L 33.858100,11.622900 L 33.931300,11.210800 L 34.875600,10.553100 C 34.533800,10.595600 34.192000,10.626800 33.858000,10.717700 L 33.858000,9.9766000 L 34.221300,9.1538000 L 33.858000,9.1538000 L 33.059600,9.8940000 L 32.840800,10.305600 L 33.059600,10.882300 L 32.695300,11.868600 L 32.114200,11.539500 L 31.606400,10.964300 L 30.805600,11.539500 L 30.514600,10.223600 L 31.895500,9.3188000 L 31.895500,8.8247000 L 32.768500,8.2490000 L 34.149400,7.9194000 L 35.094700,8.2490000 L 36.838800,8.5781000 L 36.403300,9.0713000 L 35.458000,9.0713000 L 36.403300,10.058600 L 37.129900,9.2363000 L 37.350600,8.8745000 C 37.350600,8.8745000 40.137700,11.372500 41.730500,14.105000 C 43.323300,16.838400 44.071300,20.060100 44.071300,20.714400 z "
|
||||
id="path4144" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g4146">
|
||||
<g
|
||||
id="g4150">
|
||||
<path
|
||||
d="M 26.070300,9.2363000 L 25.997100,9.7295000 L 26.506900,10.058600 L 27.378000,9.4829000 L 26.942500,8.9892000 L 26.360500,9.3188000 L 26.070500,9.2363000"
|
||||
id="path4152" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g4154">
|
||||
<g
|
||||
id="g4158">
|
||||
<path
|
||||
d="M 26.870100,5.8633000 L 24.979500,5.1226000 L 22.799800,5.3692000 L 20.109400,6.1094000 L 19.600600,6.6035000 L 21.272500,7.7549000 L 21.272500,8.4131000 L 20.618200,9.0713000 L 21.491200,10.800300 L 22.071300,10.470200 L 22.799800,9.3188000 C 23.922800,8.9716000 24.929700,8.5781000 25.997100,8.0844000 L 26.870100,5.8632000"
|
||||
id="path4160" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g4162">
|
||||
<g
|
||||
id="g4166">
|
||||
<path
|
||||
d="M 28.833000,12.774900 L 28.542000,12.033700 L 28.032200,12.198700 L 28.178700,13.103000 L 28.833000,12.774900"
|
||||
id="path4168" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g4170">
|
||||
<g
|
||||
id="g4174">
|
||||
<path
|
||||
d="M 29.123000,12.608900 L 28.977500,13.597200 L 29.777300,13.432200 L 30.358400,12.857000 L 29.849600,12.362900 C 29.678700,11.907800 29.482400,11.483000 29.268500,11.046500 L 28.833000,11.046500 L 28.833000,11.539700 L 29.123000,11.868800 L 29.123000,12.609000"
|
||||
id="path4176" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g4178">
|
||||
<g
|
||||
id="g4182">
|
||||
<path
|
||||
d="M 18.365200,28.242200 L 17.783200,27.089900 L 16.692900,26.843300 L 16.111400,25.280800 L 14.657800,25.444900 L 13.422400,24.540600 L 12.113300,25.692000 L 12.113300,25.873600 C 11.717300,25.759300 11.230500,25.743700 10.877900,25.526900 L 10.586900,24.704600 L 10.586900,23.799300 L 9.7148000,23.881300 C 9.7876000,23.305100 9.8598000,22.729900 9.9331000,22.153800 L 9.4238000,22.153800 L 8.9155000,22.812000 L 8.4062000,23.058100 L 7.6791000,22.647900 L 7.6063000,21.742600 L 7.7518000,20.755300 L 8.8426000,19.933000 L 9.7147000,19.933000 L 9.8597000,19.438900 L 10.950000,19.685000 L 11.749800,20.673300 L 11.895300,19.026800 L 13.276600,17.875400 L 13.785400,16.641000 L 14.803000,16.229900 L 15.384500,15.407600 L 16.692600,15.159600 L 17.347400,14.173300 C 16.693100,14.173300 16.038800,14.173300 15.384500,14.173300 L 16.620300,13.597100 L 17.491900,13.597100 L 18.728200,13.185000 L 18.873700,12.692800 L 18.437200,12.280700 L 17.928400,12.115700 L 18.073900,11.622500 L 17.710600,10.882300 L 16.838000,11.210400 L 16.983500,10.552700 L 15.965900,9.9765000 L 15.166600,11.374400 L 15.238900,11.868500 L 14.439600,12.198600 L 13.930300,13.267900 L 13.712500,12.280600 L 12.331200,11.704400 L 12.112900,10.964200 L 13.930300,9.8939000 L 14.730100,9.1537000 L 14.802900,8.2489000 L 14.366900,8.0018000 L 13.785400,7.9193000 L 13.422100,8.8246000 C 13.422100,8.8246000 12.814200,8.9437000 12.657900,8.9823000 C 10.661800,10.821700 6.6286000,14.792400 5.6916000,22.288500 C 5.7287000,22.462300 6.3708000,23.470100 6.3708000,23.470100 L 7.8972000,24.374400 L 9.4236000,24.786500 L 10.078400,25.609700 L 11.095500,26.349900 L 11.677000,26.267900 L 12.113000,26.464200 L 12.113000,26.597000 L 11.531900,28.160000 L 11.095400,28.818200 L 11.240900,29.148300 L 10.877600,30.380700 L 12.186200,32.767400 L 13.494300,33.919700 L 14.076300,34.742000 L 14.003100,36.470500 L 14.439600,37.456800 L 14.003100,39.349400 C 14.003100,39.349400 13.968900,39.337700 14.024600,39.527100 C 14.080800,39.716600 16.353700,40.978300 16.498200,40.870900 C 16.642200,40.761500 16.765300,40.665800 16.765300,40.665800 L 16.620300,40.255600 L 17.201400,39.679400 L 17.419700,39.103200 L 18.365000,38.773100 L 19.091600,36.962600 L 18.873800,36.470400 L 19.381600,35.730200 L 20.472400,35.482200 L 21.054400,34.165800 L 20.908900,32.521300 L 21.781000,31.286900 L 21.926500,30.052500 C 20.733100,29.460700 19.549500,28.851300 18.365000,28.242000"
|
||||
id="path4184" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g4186">
|
||||
<g
|
||||
id="g4190">
|
||||
<path
|
||||
d="M 16.765600,9.5649000 L 17.492200,10.058600 L 18.074200,10.058600 L 18.074200,9.4829000 L 17.347600,9.1538000 L 16.765600,9.5649000"
|
||||
id="path4192" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g4194">
|
||||
<g
|
||||
id="g4198">
|
||||
<path
|
||||
d="M 14.876000,8.9072000 L 14.512200,9.8120000 L 15.239300,9.8120000 L 15.603100,8.9892000 C 15.916600,8.7675000 16.228600,8.5444000 16.547900,8.3310000 L 17.275000,8.5781000 C 17.759400,8.9072000 18.243800,9.2363000 18.728600,9.5649000 L 19.456100,8.9072000 L 18.655800,8.5781000 L 18.292000,7.8374000 L 16.911100,7.6728000 L 16.838300,7.2612000 L 16.184000,7.4262000 L 15.893600,8.0020000 L 15.529800,7.2613000 L 15.384800,7.5904000 L 15.457600,8.4132000 L 14.876000,8.9072000"
|
||||
id="path4200" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g4202">
|
||||
<g
|
||||
style="opacity:0.75000000"
|
||||
id="g4204">
|
||||
<path
|
||||
id="path4206"
|
||||
d="" />
|
||||
</g>
|
||||
<g
|
||||
id="g4208">
|
||||
<path
|
||||
id="path4210"
|
||||
d="" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g4212">
|
||||
<g
|
||||
style="opacity:0.75000000"
|
||||
id="g4214">
|
||||
<path
|
||||
id="path4216"
|
||||
d="" />
|
||||
</g>
|
||||
<g
|
||||
id="g4218">
|
||||
<path
|
||||
id="path4220"
|
||||
d="" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g4222">
|
||||
<g
|
||||
id="g4226">
|
||||
<path
|
||||
d="M 17.492200,6.8496000 L 17.856000,6.5210000 L 18.583100,6.3564000 C 19.081100,6.1142000 19.581100,5.9511000 20.109500,5.7802000 L 19.819500,5.2865000 L 18.881000,5.4213000 L 18.437600,5.8632000 L 17.706600,5.9692000 L 17.056700,6.2744000 L 16.740800,6.4272000 L 16.547900,6.6855000 L 17.492200,6.8496000"
|
||||
id="path4228" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g4230">
|
||||
<g
|
||||
id="g4234">
|
||||
<path
|
||||
d="M 18.728500,14.666500 L 19.165000,14.008300 L 18.510200,13.515100 L 18.728500,14.666500"
|
||||
id="path4236" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g3216"
|
||||
style="color:#000000;fill:url(#radialGradient1460);fill-opacity:1.0000000;fill-rule:nonzero;stroke:none;stroke-width:1.0179454;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible"
|
||||
transform="matrix(0.982371,0.000000,0.000000,0.982371,-8.095179e-2,3.088300e-2)">
|
||||
<g
|
||||
id="g3218"
|
||||
style="color:#000000;fill:url(#radialGradient1462);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible">
|
||||
<g
|
||||
id="g3222"
|
||||
style="color:#000000;fill:url(#radialGradient1466);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible">
|
||||
<path
|
||||
d="M 44.071300,20.714400 C 44.071300,20.977100 44.071300,20.714400 44.071300,20.714400 L 43.526400,21.331600 C 43.192400,20.938000 42.817400,20.607000 42.436600,20.261300 L 41.600700,20.384300 L 40.837000,19.521000 L 40.837000,20.589400 L 41.491300,21.084500 L 41.926800,21.577700 L 42.508800,20.919500 C 42.655300,21.193900 42.799800,21.468300 42.945300,21.742700 L 42.945300,22.565000 L 42.290000,23.305200 L 41.090800,24.128400 L 40.182600,25.034700 L 39.600600,24.374500 L 39.891600,23.634300 L 39.310500,22.976100 L 38.329100,20.878400 L 37.493200,19.933100 L 37.274400,20.179200 L 37.602500,21.372600 L 38.219700,22.071800 C 38.572200,23.089400 38.920900,24.062000 39.383800,25.034700 C 40.101600,25.034700 40.778300,24.958500 41.491200,24.868700 L 41.491200,25.444900 L 40.619100,27.584100 L 39.819300,28.488400 L 39.165000,29.888800 C 39.165000,30.656400 39.165000,31.424000 39.165000,32.191500 L 39.383800,33.097800 L 39.020500,33.508000 L 38.219700,34.002100 L 37.383800,34.701300 L 38.075200,35.482600 L 37.129900,36.306800 L 37.311500,36.840000 L 35.893500,38.445500 L 34.949200,38.445500 L 34.149400,38.939600 L 33.639600,38.939600 L 33.639600,38.281400 L 33.422800,36.963000 C 33.141500,36.136800 32.848600,35.316500 32.550700,34.496200 C 32.550700,33.890700 32.586800,33.291100 32.623000,32.685700 L 32.987300,31.863400 L 32.477500,30.875100 L 32.514600,29.517700 L 31.823200,28.736400 L 32.168900,27.605500 L 31.606400,26.967300 L 30.624000,26.967300 L 30.296900,26.597200 L 29.315500,27.214900 L 28.916100,26.761300 L 28.006900,27.543000 C 27.389700,26.843300 26.771500,26.144100 26.153400,25.444900 L 25.426800,23.716400 L 26.081100,22.730100 L 25.717800,22.319000 L 26.516600,20.425400 C 27.172900,19.609000 27.858400,18.825800 28.551800,18.039700 L 29.788100,17.710600 L 31.169000,17.546500 L 32.114300,17.793600 L 33.459000,19.150000 L 33.931700,18.615800 L 34.585000,18.533800 L 35.821300,18.944900 L 36.766600,18.944900 L 37.420900,18.368700 L 37.711900,17.957600 L 37.056600,17.546500 L 35.965800,17.464500 C 35.663100,17.044600 35.381800,16.603200 35.022400,16.230100 L 34.658100,16.394200 L 34.512600,17.464500 L 33.858300,16.724300 L 33.713800,15.900100 L 32.987200,15.325900 L 32.695200,15.325900 L 33.422700,16.148200 L 33.131700,16.888400 L 32.550600,17.052500 L 32.913900,16.312300 L 32.258600,15.984200 L 31.678500,15.326000 L 30.586700,15.572100 L 30.442200,15.900200 L 29.787900,16.312300 L 29.424600,17.217600 L 28.516400,17.669700 L 28.116000,17.217600 L 27.680500,17.217600 L 27.680500,15.736200 L 28.625800,15.242100 L 29.352400,15.242100 L 29.205900,14.666900 L 28.625800,14.090700 L 29.606300,13.884600 L 30.151200,13.268400 L 30.586700,12.527200 L 31.387500,12.527200 L 31.168700,11.952000 L 31.678500,11.622900 L 31.678500,12.281100 L 32.768300,12.527200 L 33.858100,11.622900 L 33.931300,11.210800 L 34.875600,10.553100 C 34.533800,10.595600 34.192000,10.626800 33.858000,10.717700 L 33.858000,9.9766000 L 34.221300,9.1538000 L 33.858000,9.1538000 L 33.059600,9.8940000 L 32.840800,10.305600 L 33.059600,10.882300 L 32.695300,11.868600 L 32.114200,11.539500 L 31.606400,10.964300 L 30.805600,11.539500 L 30.514600,10.223600 L 31.895500,9.3188000 L 31.895500,8.8247000 L 32.768500,8.2490000 L 34.149400,7.9194000 L 35.094700,8.2490000 L 36.838800,8.5781000 L 36.403300,9.0713000 L 35.458000,9.0713000 L 36.403300,10.058600 L 37.129900,9.2363000 L 37.350600,8.8745000 C 37.350600,8.8745000 40.137700,11.372500 41.730500,14.105000 C 43.323300,16.838400 44.071300,20.060100 44.071300,20.714400 z "
|
||||
id="path3224"
|
||||
style="color:#000000;fill:url(#radialGradient1468);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g3226"
|
||||
style="color:#000000;fill:url(#radialGradient1470);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible">
|
||||
<g
|
||||
id="g3230"
|
||||
style="color:#000000;fill:url(#radialGradient1474);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible">
|
||||
<path
|
||||
d="M 26.070300,9.2363000 L 25.997100,9.7295000 L 26.506900,10.058600 L 27.378000,9.4829000 L 26.942500,8.9892000 L 26.360500,9.3188000 L 26.070500,9.2363000"
|
||||
id="path3232"
|
||||
style="color:#000000;fill:url(#radialGradient1476);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g3234"
|
||||
style="color:#000000;fill:url(#radialGradient1478);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible">
|
||||
<g
|
||||
id="g3238"
|
||||
style="color:#000000;fill:url(#radialGradient1482);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible">
|
||||
<path
|
||||
d="M 26.870100,5.8633000 L 24.979500,5.1226000 L 22.799800,5.3692000 L 20.109400,6.1094000 L 19.600600,6.6035000 L 21.272500,7.7549000 L 21.272500,8.4131000 L 20.618200,9.0713000 L 21.491200,10.800300 L 22.071300,10.470200 L 22.799800,9.3188000 C 23.922800,8.9716000 24.929700,8.5781000 25.997100,8.0844000 L 26.870100,5.8632000"
|
||||
id="path3240"
|
||||
style="color:#000000;fill:url(#radialGradient1484);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g3242"
|
||||
style="color:#000000;fill:url(#radialGradient1486);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible">
|
||||
<g
|
||||
id="g3246"
|
||||
style="color:#000000;fill:url(#radialGradient1490);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible">
|
||||
<path
|
||||
d="M 28.833000,12.774900 L 28.542000,12.033700 L 28.032200,12.198700 L 28.178700,13.103000 L 28.833000,12.774900"
|
||||
id="path3248"
|
||||
style="color:#000000;fill:url(#radialGradient1492);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g3250"
|
||||
style="color:#000000;fill:url(#radialGradient1494);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible">
|
||||
<g
|
||||
id="g3254"
|
||||
style="color:#000000;fill:url(#radialGradient1498);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible">
|
||||
<path
|
||||
d="M 29.123000,12.608900 L 28.977500,13.597200 L 29.777300,13.432200 L 30.358400,12.857000 L 29.849600,12.362900 C 29.678700,11.907800 29.482400,11.483000 29.268500,11.046500 L 28.833000,11.046500 L 28.833000,11.539700 L 29.123000,11.868800 L 29.123000,12.609000"
|
||||
id="path3256"
|
||||
style="color:#000000;fill:url(#radialGradient1500);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g3258"
|
||||
style="color:#000000;fill:url(#radialGradient1502);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible">
|
||||
<g
|
||||
id="g3262"
|
||||
style="color:#000000;fill:url(#radialGradient1506);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible">
|
||||
<path
|
||||
d="M 18.365200,28.242200 L 17.783200,27.089900 L 16.692900,26.843300 L 16.111400,25.280800 L 14.657800,25.444900 L 13.422400,24.540600 L 12.113300,25.692000 L 12.113300,25.873600 C 11.717300,25.759300 11.230500,25.743700 10.877900,25.526900 L 10.586900,24.704600 L 10.586900,23.799300 L 9.7148000,23.881300 C 9.7876000,23.305100 9.8598000,22.729900 9.9331000,22.153800 L 9.4238000,22.153800 L 8.9155000,22.812000 L 8.4062000,23.058100 L 7.6791000,22.647900 L 7.6063000,21.742600 L 7.7518000,20.755300 L 8.8426000,19.933000 L 9.7147000,19.933000 L 9.8597000,19.438900 L 10.950000,19.685000 L 11.749800,20.673300 L 11.895300,19.026800 L 13.276600,17.875400 L 13.785400,16.641000 L 14.803000,16.229900 L 15.384500,15.407600 L 16.692600,15.159600 L 17.347400,14.173300 C 16.693100,14.173300 16.038800,14.173300 15.384500,14.173300 L 16.620300,13.597100 L 17.491900,13.597100 L 18.728200,13.185000 L 18.873700,12.692800 L 18.437200,12.280700 L 17.928400,12.115700 L 18.073900,11.622500 L 17.710600,10.882300 L 16.838000,11.210400 L 16.983500,10.552700 L 15.965900,9.9765000 L 15.166600,11.374400 L 15.238900,11.868500 L 14.439600,12.198600 L 13.930300,13.267900 L 13.712500,12.280600 L 12.331200,11.704400 L 12.112900,10.964200 L 13.930300,9.8939000 L 14.730100,9.1537000 L 14.802900,8.2489000 L 14.366900,8.0018000 L 13.785400,7.9193000 L 13.422100,8.8246000 C 13.422100,8.8246000 12.814200,8.9437000 12.657900,8.9823000 C 10.661800,10.821700 6.6286000,14.792400 5.6916000,22.288500 C 5.7287000,22.462300 6.3708000,23.470100 6.3708000,23.470100 L 7.8972000,24.374400 L 9.4236000,24.786500 L 10.078400,25.609700 L 11.095500,26.349900 L 11.677000,26.267900 L 12.113000,26.464200 L 12.113000,26.597000 L 11.531900,28.160000 L 11.095400,28.818200 L 11.240900,29.148300 L 10.877600,30.380700 L 12.186200,32.767400 L 13.494300,33.919700 L 14.076300,34.742000 L 14.003100,36.470500 L 14.439600,37.456800 L 14.003100,39.349400 C 14.003100,39.349400 13.968900,39.337700 14.024600,39.527100 C 14.080800,39.716600 16.353700,40.978300 16.498200,40.870900 C 16.642200,40.761500 16.765300,40.665800 16.765300,40.665800 L 16.620300,40.255600 L 17.201400,39.679400 L 17.419700,39.103200 L 18.365000,38.773100 L 19.091600,36.962600 L 18.873800,36.470400 L 19.381600,35.730200 L 20.472400,35.482200 L 21.054400,34.165800 L 20.908900,32.521300 L 21.781000,31.286900 L 21.926500,30.052500 C 20.733100,29.460700 19.549500,28.851300 18.365000,28.242000"
|
||||
id="path3264"
|
||||
style="color:#000000;fill:url(#radialGradient1508);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g3266"
|
||||
style="color:#000000;fill:url(#radialGradient1510);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible">
|
||||
<g
|
||||
id="g3270"
|
||||
style="color:#000000;fill:url(#radialGradient1514);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible">
|
||||
<path
|
||||
d="M 16.765600,9.5649000 L 17.492200,10.058600 L 18.074200,10.058600 L 18.074200,9.4829000 L 17.347600,9.1538000 L 16.765600,9.5649000"
|
||||
id="path3272"
|
||||
style="color:#000000;fill:url(#radialGradient1516);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g3274"
|
||||
style="color:#000000;fill:url(#radialGradient1518);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible">
|
||||
<g
|
||||
id="g3278"
|
||||
style="color:#000000;fill:url(#radialGradient1522);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible">
|
||||
<path
|
||||
d="M 14.876000,8.9072000 L 14.512200,9.8120000 L 15.239300,9.8120000 L 15.603100,8.9892000 C 15.916600,8.7675000 16.228600,8.5444000 16.547900,8.3310000 L 17.275000,8.5781000 C 17.759400,8.9072000 18.243800,9.2363000 18.728600,9.5649000 L 19.456100,8.9072000 L 18.655800,8.5781000 L 18.292000,7.8374000 L 16.911100,7.6728000 L 16.838300,7.2612000 L 16.184000,7.4262000 L 15.893600,8.0020000 L 15.529800,7.2613000 L 15.384800,7.5904000 L 15.457600,8.4132000 L 14.876000,8.9072000"
|
||||
id="path3280"
|
||||
style="color:#000000;fill:url(#radialGradient1524);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g3282"
|
||||
style="color:#000000;fill:url(#radialGradient1526);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible">
|
||||
<g
|
||||
style="opacity:0.75000000;color:#000000;fill:url(#radialGradient1528);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible"
|
||||
id="g3284">
|
||||
<path
|
||||
d=""
|
||||
style="color:#000000;fill:url(#radialGradient1530);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible"
|
||||
id="path3286" />
|
||||
</g>
|
||||
<g
|
||||
id="g3288"
|
||||
style="color:#000000;fill:url(#radialGradient1532);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible">
|
||||
<path
|
||||
d=""
|
||||
id="path3290"
|
||||
style="color:#000000;fill:url(#radialGradient1534);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g3292"
|
||||
style="color:#000000;fill:url(#radialGradient1536);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible">
|
||||
<g
|
||||
style="opacity:0.75000000;color:#000000;fill:url(#radialGradient1538);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible"
|
||||
id="g3294">
|
||||
<path
|
||||
d=""
|
||||
style="color:#000000;fill:url(#radialGradient1540);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible"
|
||||
id="path3296" />
|
||||
</g>
|
||||
<g
|
||||
id="g3298"
|
||||
style="color:#000000;fill:url(#radialGradient1542);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible">
|
||||
<path
|
||||
d=""
|
||||
id="path3300"
|
||||
style="color:#000000;fill:url(#radialGradient1544);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g3302"
|
||||
style="color:#000000;fill:url(#radialGradient1546);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible">
|
||||
<g
|
||||
id="g3306"
|
||||
style="color:#000000;fill:url(#radialGradient1550);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible">
|
||||
<path
|
||||
d="M 17.492200,6.8496000 L 17.856000,6.5210000 L 18.583100,6.3564000 C 19.081100,6.1142000 19.581100,5.9511000 20.109500,5.7802000 L 19.819500,5.2865000 L 18.881000,5.4213000 L 18.437600,5.8632000 L 17.706600,5.9692000 L 17.056700,6.2744000 L 16.740800,6.4272000 L 16.547900,6.6855000 L 17.492200,6.8496000"
|
||||
id="path3308"
|
||||
style="color:#000000;fill:url(#radialGradient1552);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g3310"
|
||||
style="color:#000000;fill:url(#radialGradient1554);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible">
|
||||
<g
|
||||
id="g3314"
|
||||
style="color:#000000;fill:url(#radialGradient1558);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible">
|
||||
<path
|
||||
d="M 18.728500,14.666500 L 19.165000,14.008300 L 18.510200,13.515100 L 18.728500,14.666500"
|
||||
id="path3316"
|
||||
style="color:#000000;fill:url(#radialGradient4756);stroke-dashoffset:0.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<path
|
||||
style="fill:none;fill-opacity:1.0000000;fill-rule:nonzero;stroke:url(#radialGradient4132);stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
|
||||
d="M 42.975093,23.485534 C 42.975093,33.651354 34.733915,41.892440 24.569493,41.892440 C 14.404139,41.892440 6.1634261,33.651261 6.1634261,23.485534 C 6.1634261,13.320180 14.404139,5.0799340 24.569493,5.0799340 C 34.733915,5.0799340 42.975093,13.320180 42.975093,23.485534 L 42.975093,23.485534 z "
|
||||
id="path4122" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 50 KiB |
119
mediagoblin/media_types/video/processing.py
Normal file
119
mediagoblin/media_types/video/processing.py
Normal file
@@ -0,0 +1,119 @@
|
||||
# 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/>.
|
||||
|
||||
import tempfile
|
||||
import logging
|
||||
import os
|
||||
|
||||
from mediagoblin import mg_globals as mgg
|
||||
from mediagoblin.processing import mark_entry_failed, \
|
||||
THUMB_SIZE, MEDIUM_SIZE, create_pub_filepath
|
||||
from . import transcoders
|
||||
|
||||
logging.basicConfig()
|
||||
|
||||
_log = logging.getLogger(__name__)
|
||||
_log.setLevel(logging.DEBUG)
|
||||
|
||||
|
||||
def process_video(entry):
|
||||
"""
|
||||
Code to process a video
|
||||
|
||||
Much of this code is derived from the arista-transcoder script in
|
||||
the arista PyPI package and changed to match the needs of
|
||||
MediaGoblin
|
||||
|
||||
This function sets up the arista video encoder in some kind of new thread
|
||||
and attaches callbacks to that child process, hopefully, the
|
||||
entry-complete callback will be called when the video is done.
|
||||
"""
|
||||
video_config = mgg.global_config['media_type:mediagoblin.media_types.video']
|
||||
|
||||
workbench = mgg.workbench_manager.create_workbench()
|
||||
|
||||
queued_filepath = entry.queued_media_file
|
||||
queued_filename = workbench.localized_file(
|
||||
mgg.queue_store, queued_filepath,
|
||||
'source')
|
||||
|
||||
medium_filepath = create_pub_filepath(
|
||||
entry,
|
||||
'{original}-640p.webm'.format(
|
||||
original=os.path.splitext(
|
||||
queued_filepath[-1])[0] # Select the
|
||||
))
|
||||
|
||||
thumbnail_filepath = create_pub_filepath(
|
||||
entry, 'thumbnail.jpg')
|
||||
|
||||
|
||||
# Create a temporary file for the video destination
|
||||
tmp_dst = tempfile.NamedTemporaryFile()
|
||||
|
||||
with tmp_dst:
|
||||
# Transcode queued file to a VP8/vorbis file that fits in a 640x640 square
|
||||
transcoder = transcoders.VideoTranscoder(queued_filename, tmp_dst.name)
|
||||
|
||||
# Push transcoded video to public storage
|
||||
_log.debug('Saving medium...')
|
||||
mgg.public_store.get_file(medium_filepath, 'wb').write(
|
||||
tmp_dst.read())
|
||||
_log.debug('Saved medium')
|
||||
|
||||
entry.media_files['webm_640'] = medium_filepath
|
||||
|
||||
# Save the width and height of the transcoded video
|
||||
entry.media_data['video'] = {
|
||||
u'width': transcoder.dst_data.videowidth,
|
||||
u'height': transcoder.dst_data.videoheight}
|
||||
|
||||
# Create a temporary file for the video thumbnail
|
||||
tmp_thumb = tempfile.NamedTemporaryFile()
|
||||
|
||||
with tmp_thumb:
|
||||
# Create a thumbnail.jpg that fits in a 180x180 square
|
||||
transcoders.VideoThumbnailer(queued_filename, tmp_thumb.name)
|
||||
|
||||
# Push the thumbnail to public storage
|
||||
_log.debug('Saving thumbnail...')
|
||||
mgg.public_store.get_file(thumbnail_filepath, 'wb').write(
|
||||
tmp_thumb.read())
|
||||
_log.debug('Saved thumbnail')
|
||||
|
||||
entry.media_files['thumb'] = thumbnail_filepath
|
||||
|
||||
if video_config['keep_original']:
|
||||
# Push original file to public storage
|
||||
queued_file = file(queued_filename, 'rb')
|
||||
|
||||
with queued_file:
|
||||
original_filepath = create_pub_filepath(
|
||||
entry,
|
||||
queued_filepath[-1])
|
||||
|
||||
with mgg.public_store.get_file(original_filepath, 'wb') as \
|
||||
original_file:
|
||||
_log.debug('Saving original...')
|
||||
original_file.write(queued_file.read())
|
||||
_log.debug('Saved original')
|
||||
|
||||
entry.media_files['original'] = original_filepath
|
||||
|
||||
mgg.queue_store.delete_file(queued_filepath)
|
||||
|
||||
# Save the MediaEntry
|
||||
entry.save()
|
||||
658
mediagoblin/media_types/video/transcoders.py
Normal file
658
mediagoblin/media_types/video/transcoders.py
Normal file
@@ -0,0 +1,658 @@
|
||||
# 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/>.
|
||||
|
||||
from __future__ import division
|
||||
|
||||
import os
|
||||
os.putenv('GST_DEBUG_DUMP_DOT_DIR', '/tmp')
|
||||
|
||||
import sys
|
||||
import logging
|
||||
import pdb
|
||||
import urllib
|
||||
|
||||
_log = logging.getLogger(__name__)
|
||||
logging.basicConfig()
|
||||
_log.setLevel(logging.DEBUG)
|
||||
|
||||
CPU_COUNT = 2
|
||||
try:
|
||||
import multiprocessing
|
||||
try:
|
||||
CPU_COUNT = multiprocessing.cpu_count()
|
||||
except NotImplementedError:
|
||||
_log.warning('multiprocessing.cpu_count not implemented')
|
||||
pass
|
||||
except ImportError:
|
||||
_log.warning('Could not import multiprocessing, defaulting to 2 CPU cores')
|
||||
pass
|
||||
|
||||
try:
|
||||
import gtk
|
||||
except:
|
||||
raise Exception('Could not find pygtk')
|
||||
|
||||
try:
|
||||
import gobject
|
||||
gobject.threads_init()
|
||||
except:
|
||||
raise Exception('gobject could not be found')
|
||||
|
||||
try:
|
||||
import pygst
|
||||
pygst.require('0.10')
|
||||
import gst
|
||||
from gst.extend import discoverer
|
||||
except:
|
||||
raise Exception('gst/pygst 0.10 could not be found')
|
||||
|
||||
|
||||
class VideoThumbnailer:
|
||||
# Declaration of thumbnailer states
|
||||
STATE_NULL = 0
|
||||
STATE_HALTING = 1
|
||||
STATE_PROCESSING = 2
|
||||
|
||||
# The current thumbnailer state
|
||||
state = STATE_NULL
|
||||
|
||||
# This will contain the thumbnailing pipeline
|
||||
thumbnail_pipeline = None
|
||||
|
||||
buffer_probes = {}
|
||||
|
||||
def __init__(self, source_path, dest_path):
|
||||
'''
|
||||
Set up playbin pipeline in order to get video properties.
|
||||
|
||||
Initializes and runs the gobject.MainLoop()
|
||||
'''
|
||||
self.errors = []
|
||||
|
||||
self.source_path = source_path
|
||||
self.dest_path = dest_path
|
||||
|
||||
self.loop = gobject.MainLoop()
|
||||
|
||||
# Set up the playbin. It will be used to discover certain
|
||||
# properties of the input file
|
||||
self.playbin = gst.element_factory_make('playbin')
|
||||
|
||||
self.videosink = gst.element_factory_make('fakesink', 'videosink')
|
||||
self.playbin.set_property('video-sink', self.videosink)
|
||||
|
||||
self.audiosink = gst.element_factory_make('fakesink', 'audiosink')
|
||||
self.playbin.set_property('audio-sink', self.audiosink)
|
||||
|
||||
self.bus = self.playbin.get_bus()
|
||||
self.bus.add_signal_watch()
|
||||
self.watch_id = self.bus.connect('message', self._on_bus_message)
|
||||
|
||||
self.playbin.set_property('uri', 'file:{0}'.format(
|
||||
urllib.pathname2url(self.source_path)))
|
||||
|
||||
self.playbin.set_state(gst.STATE_PAUSED)
|
||||
|
||||
self.run()
|
||||
|
||||
def run(self):
|
||||
self.loop.run()
|
||||
|
||||
def _on_bus_message(self, bus, message):
|
||||
_log.debug(' BUS MESSAGE: {0}'.format(message))
|
||||
|
||||
if message.type == gst.MESSAGE_ERROR:
|
||||
gobject.idle_add(self._on_bus_error)
|
||||
|
||||
elif message.type == gst.MESSAGE_STATE_CHANGED:
|
||||
# The pipeline state has changed
|
||||
# Parse state changing data
|
||||
_prev, state, _pending = message.parse_state_changed()
|
||||
|
||||
_log.debug('State changed: {0}'.format(state))
|
||||
|
||||
if state == gst.STATE_PAUSED:
|
||||
if message.src == self.playbin:
|
||||
gobject.idle_add(self._on_bus_paused)
|
||||
|
||||
def _on_bus_paused(self):
|
||||
'''
|
||||
Set up thumbnailing pipeline
|
||||
'''
|
||||
current_video = self.playbin.get_property('current-video')
|
||||
|
||||
if current_video == 0:
|
||||
_log.debug('Found current video from playbin')
|
||||
else:
|
||||
_log.error('Could not get any current video from playbin!')
|
||||
|
||||
self.duration = self._get_duration(self.playbin)
|
||||
_log.info('Video length: {0}'.format(self.duration / gst.SECOND))
|
||||
|
||||
_log.info('Setting up thumbnailing pipeline')
|
||||
self.thumbnail_pipeline = gst.parse_launch(
|
||||
'filesrc location="{0}" ! decodebin ! '
|
||||
'ffmpegcolorspace ! videoscale ! '
|
||||
'video/x-raw-rgb,depth=24,bpp=24,pixel-aspect-ratio=1/1,width=180 ! '
|
||||
'fakesink signal-handoffs=True'.format(self.source_path))
|
||||
|
||||
self.thumbnail_bus = self.thumbnail_pipeline.get_bus()
|
||||
self.thumbnail_bus.add_signal_watch()
|
||||
self.thumbnail_watch_id = self.thumbnail_bus.connect(
|
||||
'message', self._on_thumbnail_bus_message)
|
||||
|
||||
self.thumbnail_pipeline.set_state(gst.STATE_PAUSED)
|
||||
|
||||
#gobject.timeout_add(3000, self._on_timeout)
|
||||
|
||||
return False
|
||||
|
||||
def _on_thumbnail_bus_message(self, bus, message):
|
||||
_log.debug('Thumbnail bus called, message: {0}'.format(message))
|
||||
|
||||
if message.type == gst.MESSAGE_ERROR:
|
||||
_log.error(message)
|
||||
gobject.idle_add(self._on_bus_error)
|
||||
|
||||
if message.type == gst.MESSAGE_STATE_CHANGED:
|
||||
_prev, state, _pending = message.parse_state_changed()
|
||||
|
||||
if (state == gst.STATE_PAUSED and
|
||||
not self.state == self.STATE_PROCESSING and
|
||||
message.src == self.thumbnail_pipeline):
|
||||
_log.info('Pipeline paused, processing')
|
||||
self.state = self.STATE_PROCESSING
|
||||
|
||||
for sink in self.thumbnail_pipeline.sinks():
|
||||
name = sink.get_name()
|
||||
factoryname = sink.get_factory().get_name()
|
||||
|
||||
if factoryname == 'fakesink':
|
||||
sinkpad = sink.get_pad('sink')
|
||||
|
||||
self.buffer_probes[name] = sinkpad.add_buffer_probe(
|
||||
self.buffer_probe_handler, name)
|
||||
|
||||
_log.info('Added buffer probe')
|
||||
|
||||
break
|
||||
|
||||
# Apply the wadsworth constant, fallback to 1 second
|
||||
seek_amount = max(self.duration / 100 * 30, 1 * gst.SECOND)
|
||||
|
||||
_log.debug('seek amount: {0}'.format(seek_amount))
|
||||
|
||||
seek_result = self.thumbnail_pipeline.seek(
|
||||
1.0,
|
||||
gst.FORMAT_TIME,
|
||||
gst.SEEK_FLAG_FLUSH | gst.SEEK_FLAG_ACCURATE,
|
||||
gst.SEEK_TYPE_SET,
|
||||
seek_amount,
|
||||
gst.SEEK_TYPE_NONE,
|
||||
0)
|
||||
|
||||
if not seek_result:
|
||||
self.errors.append('COULD_NOT_SEEK')
|
||||
_log.error('Couldn\'t seek! result: {0}'.format(
|
||||
seek_result))
|
||||
_log.info(message)
|
||||
self.shutdown()
|
||||
else:
|
||||
pass
|
||||
#self.thumbnail_pipeline.set_state(gst.STATE_PAUSED)
|
||||
#pdb.set_trace()
|
||||
|
||||
def buffer_probe_handler_real(self, pad, buff, name):
|
||||
'''
|
||||
Capture buffers as gdk_pixbufs when told to.
|
||||
'''
|
||||
try:
|
||||
caps = buff.caps
|
||||
if caps is None:
|
||||
_log.error('No caps passed to buffer probe handler!')
|
||||
self.shutdown()
|
||||
return False
|
||||
|
||||
_log.debug('caps: {0}'.format(caps))
|
||||
|
||||
filters = caps[0]
|
||||
width = filters["width"]
|
||||
height = filters["height"]
|
||||
|
||||
pixbuf = gtk.gdk.pixbuf_new_from_data(
|
||||
buff.data, gtk.gdk.COLORSPACE_RGB, False, 8,
|
||||
width, height, width * 3)
|
||||
|
||||
# NOTE: 200x136 is sort of arbitrary. it's larger than what
|
||||
# the ui uses at the time of this writing.
|
||||
# new_width, new_height = scaled_size((width, height), (200, 136))
|
||||
|
||||
#pixbuf = pixbuf.scale_simple(
|
||||
#new_width, new_height, gtk.gdk.INTERP_BILINEAR)
|
||||
|
||||
pixbuf.save(self.dest_path, 'jpeg')
|
||||
_log.info('Saved thumbnail')
|
||||
del pixbuf
|
||||
self.shutdown()
|
||||
except gst.QueryError:
|
||||
pass
|
||||
return False
|
||||
|
||||
def buffer_probe_handler(self, pad, buff, name):
|
||||
'''
|
||||
Proxy function for buffer_probe_handler_real
|
||||
'''
|
||||
gobject.idle_add(
|
||||
lambda: self.buffer_probe_handler_real(pad, buff, name))
|
||||
|
||||
return True
|
||||
|
||||
def _get_duration(self, pipeline, retries=0):
|
||||
'''
|
||||
Get the duration of a pipeline.
|
||||
|
||||
Retries 5 times.
|
||||
'''
|
||||
if retries == 5:
|
||||
return 0
|
||||
|
||||
try:
|
||||
return pipeline.query_duration(gst.FORMAT_TIME)[0]
|
||||
except gst.QueryError:
|
||||
return self._get_duration(pipeline, retries + 1)
|
||||
|
||||
def _on_timeout(self):
|
||||
_log.error('TIMEOUT! DROP EVERYTHING!')
|
||||
self.shutdown()
|
||||
|
||||
def _on_bus_error(self, *args):
|
||||
_log.error('AHAHAHA! Error! args: {0}'.format(args))
|
||||
|
||||
def shutdown(self):
|
||||
'''
|
||||
Tell gobject to call __halt when the mainloop is idle.
|
||||
'''
|
||||
_log.info('Shutting down')
|
||||
self.__halt()
|
||||
|
||||
def __halt(self):
|
||||
'''
|
||||
Halt all pipelines and shut down the main loop
|
||||
'''
|
||||
_log.info('Halting...')
|
||||
self.state = self.STATE_HALTING
|
||||
|
||||
self.__disconnect()
|
||||
|
||||
gobject.idle_add(self.__halt_final)
|
||||
|
||||
def __disconnect(self):
|
||||
_log.debug('Disconnecting...')
|
||||
if not self.playbin is None:
|
||||
self.playbin.set_state(gst.STATE_NULL)
|
||||
for sink in self.playbin.sinks():
|
||||
name = sink.get_name()
|
||||
factoryname = sink.get_factory().get_name()
|
||||
|
||||
_log.debug('Disconnecting {0}'.format(name))
|
||||
|
||||
if factoryname == "fakesink":
|
||||
pad = sink.get_pad("sink")
|
||||
pad.remove_buffer_probe(self.buffer_probes[name])
|
||||
del self.buffer_probes[name]
|
||||
|
||||
self.playbin = None
|
||||
|
||||
if self.bus is not None:
|
||||
self.bus.disconnect(self.watch_id)
|
||||
self.bus = None
|
||||
|
||||
|
||||
def __halt_final(self):
|
||||
_log.info('Done')
|
||||
if self.errors:
|
||||
_log.error(','.join(self.errors))
|
||||
|
||||
self.loop.quit()
|
||||
|
||||
|
||||
class VideoTranscoder:
|
||||
'''
|
||||
Video transcoder
|
||||
|
||||
Transcodes the SRC video file to a VP8 WebM video file at DST
|
||||
|
||||
- Does the same thing as VideoThumbnailer, but produces a WebM vp8
|
||||
and vorbis video file.
|
||||
- The VideoTranscoder exceeds the VideoThumbnailer in the way
|
||||
that it was refined afterwards and therefore is done more
|
||||
correctly.
|
||||
'''
|
||||
def __init__(self, src, dst, **kwargs):
|
||||
_log.info('Initializing VideoTranscoder...')
|
||||
|
||||
self.loop = gobject.MainLoop()
|
||||
self.source_path = src
|
||||
self.destination_path = dst
|
||||
|
||||
# Options
|
||||
self.destination_dimensions = kwargs.get('dimensions') or (640, 640)
|
||||
self._progress_callback = kwargs.get('progress_callback') or None
|
||||
|
||||
if not type(self.destination_dimensions) == tuple:
|
||||
raise Exception('dimensions must be tuple: (width, height)')
|
||||
|
||||
self._setup()
|
||||
self._run()
|
||||
|
||||
def _setup(self):
|
||||
self._setup_discover()
|
||||
self._setup_pipeline()
|
||||
|
||||
def _run(self):
|
||||
_log.info('Discovering...')
|
||||
self.discoverer.discover()
|
||||
_log.info('Done')
|
||||
|
||||
_log.debug('Initializing MainLoop()')
|
||||
self.loop.run()
|
||||
|
||||
def _setup_discover(self):
|
||||
_log.debug('Setting up discoverer')
|
||||
self.discoverer = discoverer.Discoverer(self.source_path)
|
||||
|
||||
# Connect self.__discovered to the 'discovered' event
|
||||
self.discoverer.connect('discovered', self.__discovered)
|
||||
|
||||
def __discovered(self, data, is_media):
|
||||
'''
|
||||
Callback for media discoverer.
|
||||
'''
|
||||
if not is_media:
|
||||
self.__stop()
|
||||
raise Exception('Could not discover {0}'.format(self.source_path))
|
||||
|
||||
_log.debug('__discovered, data: {0}'.format(data.__dict__))
|
||||
|
||||
self.data = data
|
||||
|
||||
# Launch things that should be done after discovery
|
||||
self._link_elements()
|
||||
self.__setup_videoscale_capsfilter()
|
||||
|
||||
# Tell the transcoding pipeline to start running
|
||||
self.pipeline.set_state(gst.STATE_PLAYING)
|
||||
_log.info('Transcoding...')
|
||||
|
||||
def _setup_pipeline(self):
|
||||
_log.debug('Setting up transcoding pipeline')
|
||||
# Create the pipeline bin.
|
||||
self.pipeline = gst.Pipeline('VideoTranscoderPipeline')
|
||||
|
||||
# Create all GStreamer elements, starting with
|
||||
# filesrc & decoder
|
||||
self.filesrc = gst.element_factory_make('filesrc', 'filesrc')
|
||||
self.filesrc.set_property('location', self.source_path)
|
||||
self.pipeline.add(self.filesrc)
|
||||
|
||||
self.decoder = gst.element_factory_make('decodebin2', 'decoder')
|
||||
self.decoder.connect('new-decoded-pad', self._on_dynamic_pad)
|
||||
self.pipeline.add(self.decoder)
|
||||
|
||||
# Video elements
|
||||
self.videoqueue = gst.element_factory_make('queue', 'videoqueue')
|
||||
self.pipeline.add(self.videoqueue)
|
||||
|
||||
self.videorate = gst.element_factory_make('videorate', 'videorate')
|
||||
self.pipeline.add(self.videorate)
|
||||
|
||||
self.ffmpegcolorspace = gst.element_factory_make(
|
||||
'ffmpegcolorspace', 'ffmpegcolorspace')
|
||||
self.pipeline.add(self.ffmpegcolorspace)
|
||||
|
||||
self.videoscale = gst.element_factory_make('ffvideoscale', 'videoscale')
|
||||
#self.videoscale.set_property('method', 2) # I'm not sure this works
|
||||
#self.videoscale.set_property('add-borders', 0)
|
||||
self.pipeline.add(self.videoscale)
|
||||
|
||||
self.capsfilter = gst.element_factory_make('capsfilter', 'capsfilter')
|
||||
self.pipeline.add(self.capsfilter)
|
||||
|
||||
self.vp8enc = gst.element_factory_make('vp8enc', 'vp8enc')
|
||||
self.vp8enc.set_property('quality', 6)
|
||||
self.vp8enc.set_property('threads', 2)
|
||||
self.pipeline.add(self.vp8enc)
|
||||
|
||||
# Audio elements
|
||||
self.audioqueue = gst.element_factory_make('queue', 'audioqueue')
|
||||
self.pipeline.add(self.audioqueue)
|
||||
|
||||
self.audiorate = gst.element_factory_make('audiorate', 'audiorate')
|
||||
self.audiorate.set_property('tolerance', 80000000)
|
||||
self.pipeline.add(self.audiorate)
|
||||
|
||||
self.audioconvert = gst.element_factory_make('audioconvert', 'audioconvert')
|
||||
self.pipeline.add(self.audioconvert)
|
||||
|
||||
self.audiocapsfilter = gst.element_factory_make('capsfilter', 'audiocapsfilter')
|
||||
audiocaps = ['audio/x-raw-float']
|
||||
self.audiocapsfilter.set_property(
|
||||
'caps',
|
||||
gst.caps_from_string(
|
||||
','.join(audiocaps)))
|
||||
self.pipeline.add(self.audiocapsfilter)
|
||||
|
||||
self.vorbisenc = gst.element_factory_make('vorbisenc', 'vorbisenc')
|
||||
self.vorbisenc.set_property('quality', 1)
|
||||
self.pipeline.add(self.vorbisenc)
|
||||
|
||||
# WebMmux & filesink
|
||||
self.webmmux = gst.element_factory_make('webmmux', 'webmmux')
|
||||
self.pipeline.add(self.webmmux)
|
||||
|
||||
self.filesink = gst.element_factory_make('filesink', 'filesink')
|
||||
self.filesink.set_property('location', self.destination_path)
|
||||
self.pipeline.add(self.filesink)
|
||||
|
||||
# Progressreport
|
||||
self.progressreport = gst.element_factory_make(
|
||||
'progressreport', 'progressreport')
|
||||
# Update every second
|
||||
self.progressreport.set_property('update-freq', 1)
|
||||
self.progressreport.set_property('silent', True)
|
||||
self.pipeline.add(self.progressreport)
|
||||
|
||||
def _link_elements(self):
|
||||
'''
|
||||
Link all the elements
|
||||
|
||||
This code depends on data from the discoverer and is called
|
||||
from __discovered
|
||||
'''
|
||||
_log.debug('linking elements')
|
||||
# Link the filesrc element to the decoder. The decoder then emits
|
||||
# 'new-decoded-pad' which links decoded src pads to either a video
|
||||
# or audio sink
|
||||
self.filesrc.link(self.decoder)
|
||||
|
||||
# Link all the video elements in a row to webmmux
|
||||
gst.element_link_many(
|
||||
self.videoqueue,
|
||||
self.videorate,
|
||||
self.ffmpegcolorspace,
|
||||
self.videoscale,
|
||||
self.capsfilter,
|
||||
self.vp8enc,
|
||||
self.webmmux)
|
||||
|
||||
if self.data.is_audio:
|
||||
# Link all the audio elements in a row to webmux
|
||||
gst.element_link_many(
|
||||
self.audioqueue,
|
||||
self.audiorate,
|
||||
self.audioconvert,
|
||||
self.audiocapsfilter,
|
||||
self.vorbisenc,
|
||||
self.webmmux)
|
||||
|
||||
gst.element_link_many(
|
||||
self.webmmux,
|
||||
self.progressreport,
|
||||
self.filesink)
|
||||
|
||||
# Setup the message bus and connect _on_message to the pipeline
|
||||
self._setup_bus()
|
||||
|
||||
|
||||
def _on_dynamic_pad(self, dbin, pad, islast):
|
||||
'''
|
||||
Callback called when ``decodebin2`` has a pad that we can connect to
|
||||
'''
|
||||
# Intersect the capabilities of the video sink and the pad src
|
||||
# Then check if they have no common capabilities.
|
||||
if self.ffmpegcolorspace.get_pad_template('sink')\
|
||||
.get_caps().intersect(pad.get_caps()).is_empty():
|
||||
# It is NOT a video src pad.
|
||||
pad.link(self.audioqueue.get_pad('sink'))
|
||||
else:
|
||||
# It IS a video src pad.
|
||||
pad.link(self.videoqueue.get_pad('sink'))
|
||||
|
||||
def _setup_bus(self):
|
||||
self.bus = self.pipeline.get_bus()
|
||||
self.bus.add_signal_watch()
|
||||
self.bus.connect('message', self._on_message)
|
||||
|
||||
def __setup_videoscale_capsfilter(self):
|
||||
'''
|
||||
Sets up the output format (width, height) for the video
|
||||
'''
|
||||
caps = ['video/x-raw-yuv', 'pixel-aspect-ratio=1/1', 'framerate=30/1']
|
||||
|
||||
if self.data.videoheight > self.data.videowidth:
|
||||
# Whoa! We have ourselves a portrait video!
|
||||
caps.append('height={0}'.format(
|
||||
self.destination_dimensions[1]))
|
||||
else:
|
||||
# It's a landscape, phew, how normal.
|
||||
caps.append('width={0}'.format(
|
||||
self.destination_dimensions[0]))
|
||||
|
||||
self.capsfilter.set_property(
|
||||
'caps',
|
||||
gst.caps_from_string(
|
||||
','.join(caps)))
|
||||
|
||||
def _on_message(self, bus, message):
|
||||
_log.debug((bus, message, message.type))
|
||||
|
||||
t = message.type
|
||||
|
||||
if t == gst.MESSAGE_EOS:
|
||||
self._discover_dst_and_stop()
|
||||
_log.info('Done')
|
||||
|
||||
elif t == gst.MESSAGE_ELEMENT:
|
||||
if message.structure.get_name() == 'progress':
|
||||
data = dict(message.structure)
|
||||
|
||||
if self._progress_callback:
|
||||
self._progress_callback(data)
|
||||
|
||||
_log.info('{percent}% done...'.format(
|
||||
percent=data.get('percent')))
|
||||
_log.debug(data)
|
||||
|
||||
elif t == gst.MESSAGE_ERROR:
|
||||
_log.error((bus, message))
|
||||
self.__stop()
|
||||
|
||||
def _discover_dst_and_stop(self):
|
||||
self.dst_discoverer = discoverer.Discoverer(self.destination_path)
|
||||
|
||||
self.dst_discoverer.connect('discovered', self.__dst_discovered)
|
||||
|
||||
self.dst_discoverer.discover()
|
||||
|
||||
|
||||
def __dst_discovered(self, data, is_media):
|
||||
self.dst_data = data
|
||||
|
||||
self.__stop()
|
||||
|
||||
def __stop(self):
|
||||
_log.debug(self.loop)
|
||||
|
||||
# Stop executing the pipeline
|
||||
self.pipeline.set_state(gst.STATE_NULL)
|
||||
|
||||
# This kills the loop, mercifully
|
||||
gobject.idle_add(self.__stop_mainloop)
|
||||
|
||||
def __stop_mainloop(self):
|
||||
'''
|
||||
Wrapper for gobject.MainLoop.quit()
|
||||
|
||||
This wrapper makes us able to see if self.loop.quit has been called
|
||||
'''
|
||||
_log.info('Terminating MainLoop')
|
||||
|
||||
self.loop.quit()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
os.nice(19)
|
||||
from optparse import OptionParser
|
||||
|
||||
parser = OptionParser(
|
||||
usage='%prog [-v] -a [ video | thumbnail ] SRC DEST')
|
||||
|
||||
parser.add_option('-a', '--action',
|
||||
dest='action',
|
||||
help='One of "video" or "thumbnail"')
|
||||
|
||||
parser.add_option('-v',
|
||||
dest='verbose',
|
||||
action='store_true',
|
||||
help='Output debug information')
|
||||
|
||||
parser.add_option('-q',
|
||||
dest='quiet',
|
||||
action='store_true',
|
||||
help='Dear program, please be quiet unless *error*')
|
||||
|
||||
(options, args) = parser.parse_args()
|
||||
|
||||
if options.verbose:
|
||||
_log.setLevel(logging.DEBUG)
|
||||
else:
|
||||
_log.setLevel(logging.INFO)
|
||||
|
||||
if options.quiet:
|
||||
_log.setLevel(logging.ERROR)
|
||||
|
||||
_log.debug(args)
|
||||
|
||||
if not len(args) == 2:
|
||||
parser.print_help()
|
||||
sys.exit()
|
||||
|
||||
if options.action == 'thumbnail':
|
||||
VideoThumbnailer(*args)
|
||||
elif options.action == 'video':
|
||||
def cb(data):
|
||||
print('I\'m a callback!')
|
||||
transcoder = VideoTranscoder(*args, progress_callback=cb)
|
||||
@@ -20,11 +20,13 @@ SUCCESS = 'success'
|
||||
WARNING = 'warning'
|
||||
ERROR = 'error'
|
||||
|
||||
|
||||
def add_message(request, level, text):
|
||||
messages = request.session.setdefault('messages', [])
|
||||
messages.append({'level': level, 'text': text})
|
||||
request.session.save()
|
||||
|
||||
|
||||
def fetch_messages(request, clear_from_session=True):
|
||||
messages = request.session.get('messages')
|
||||
if messages and clear_from_session:
|
||||
|
||||
@@ -1,44 +0,0 @@
|
||||
# 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/>.
|
||||
|
||||
from mediagoblin.tools.translate import lazy_pass_to_ugettext as _
|
||||
|
||||
class BaseProcessingFail(Exception):
|
||||
"""
|
||||
Base exception that all other processing failure messages should
|
||||
subclass from.
|
||||
|
||||
You shouldn't call this itself; instead you should subclass it
|
||||
and provid the exception_path and general_message applicable to
|
||||
this error.
|
||||
"""
|
||||
general_message = u''
|
||||
|
||||
@property
|
||||
def exception_path(self):
|
||||
return u"%s:%s" % (
|
||||
self.__class__.__module__, self.__class__.__name__)
|
||||
|
||||
def __init__(self, **metadata):
|
||||
self.metadata = metadata or {}
|
||||
|
||||
|
||||
class BadMediaFail(BaseProcessingFail):
|
||||
"""
|
||||
Error that should be raised when an inappropriate file was given
|
||||
for the media type specified.
|
||||
"""
|
||||
general_message = _(u'Invalid file given for media type.')
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user