Merged changes with upstream

This commit is contained in:
Aaron Williamson
2012-01-17 00:59:21 -05:00
233 changed files with 20405 additions and 6364 deletions

View File

@@ -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"

View File

@@ -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)

View File

@@ -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()])

View File

@@ -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)

View File

@@ -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')]

View File

@@ -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

View File

@@ -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")

View File

@@ -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
View 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'])

View File

@@ -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 %}

View File

@@ -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),

View File

@@ -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)

View 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?!")

View 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)

View File

@@ -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

View File

@@ -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 %}

View 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()

View 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()

View 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

View 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()

View 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

View File

@@ -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)

View File

@@ -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)

View File

@@ -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/>.

View File

@@ -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):

View File

@@ -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

View File

@@ -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")
]

View File

@@ -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})

View File

@@ -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()

View File

@@ -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)

View File

@@ -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)

View File

@@ -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'

View File

@@ -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

View File

@@ -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. (Were 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 "أنت على وشك حذف وسائط مستخدم آخر. كن حذرًا أثناء العملية."

View File

@@ -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. (Were 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 ""

View File

@@ -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. (Were 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."

View File

@@ -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. (Were 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 ""

View File

@@ -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ŭdviddosieroj."
#: 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. (Were 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 lprofilo 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."

View File

@@ -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. (Were 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 "

View File

@@ -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. (Were 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. "

View File

@@ -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. (Were 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 ""

View File

@@ -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. (Were 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 "

View File

@@ -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. (Were 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 ""

View File

@@ -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 &lt;a "
"href=\"http://mediagoblin.org\"&gt;MediaGoblin&lt;/a&gt; , een &lt;a "
"href=\"http://gnu.org/\"&gt;GNU-project&lt;/a&gt;"
#: 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. (Were 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."

View File

@@ -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. (Were 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."

View File

@@ -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. (Were 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."

View File

@@ -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. (Were 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ă "

View File

@@ -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. (Were 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 "Вы на пороге удаления файла другого пользователя. Будьте осторожны."

View File

@@ -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á adresabola pri registrácii využitá."
msgid "Sorry, a user with that email address already exists."
msgstr "Prepáč, používateľ s rovnakou e-mailovou adresouexistuje."
#: 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. (Were 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úva"
#: 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úva"
#: 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."

View File

@@ -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. (Were 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 ""

View File

@@ -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. (Were 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 ""

View File

@@ -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. (Were 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."

Binary file not shown.

View 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 ""

View File

@@ -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. (Were 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 "你在刪除其他人的媒體檔案。請小心處理喔。"

View File

@@ -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():

View File

@@ -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

View File

@@ -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

View File

@@ -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()

View File

@@ -25,4 +25,3 @@ tag_routes = [
Route('mediagoblin.listings.tag_atom_feed', "/{tag}/atom/",
controller="mediagoblin.listings.views:tag_atom_feed"),
]

View File

@@ -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()

View 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

View File

@@ -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."""

View File

@@ -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):

View 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 :('))

View 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"]}

View 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")
'''

View File

@@ -0,0 +1 @@
../../../../extlib/inconsolata/Inconsolata.otf

View 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()

View 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"]}

View 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()

View 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"]}

View 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"
]
}
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

View 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

View 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

View 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()

View 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)

View File

@@ -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:

View File

@@ -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