Merge remote branch 'remotes/manolinux/683_text_separate_tags_by_commas_and_spaces'
authorElrond <elrond+mediagoblin.org@samba-tng.org>
Sun, 27 Nov 2011 22:23:20 +0000 (23:23 +0100)
committerElrond <elrond+mediagoblin.org@samba-tng.org>
Sun, 27 Nov 2011 22:23:20 +0000 (23:23 +0100)
* remotes/manolinux/683_text_separate_tags_by_commas_and_spaces:
  Fix the text "Seperate tags by commas and spaces" since spaces are not used to seperate anymore.

58 files changed:
mediagoblin.ini
mediagoblin/app.py
mediagoblin/config_spec.ini
mediagoblin/db/migrations.py
mediagoblin/gmg_commands/import_export.py
mediagoblin/gmg_commands/migrate.py
mediagoblin/i18n/ar/LC_MESSAGES/mediagoblin.po
mediagoblin/i18n/ca/LC_MESSAGES/mediagoblin.po
mediagoblin/i18n/de/LC_MESSAGES/mediagoblin.po
mediagoblin/i18n/en/LC_MESSAGES/mediagoblin.po
mediagoblin/i18n/eo/LC_MESSAGES/mediagoblin.po
mediagoblin/i18n/es/LC_MESSAGES/mediagoblin.po
mediagoblin/i18n/fr/LC_MESSAGES/mediagoblin.po
mediagoblin/i18n/ia/LC_MESSAGES/mediagoblin.po
mediagoblin/i18n/it/LC_MESSAGES/mediagoblin.po
mediagoblin/i18n/ja/LC_MESSAGES/mediagoblin.po
mediagoblin/i18n/nl/LC_MESSAGES/mediagoblin.po
mediagoblin/i18n/nn_NO/LC_MESSAGES/mediagoblin.po
mediagoblin/i18n/pt_BR/LC_MESSAGES/mediagoblin.po
mediagoblin/i18n/ro/LC_MESSAGES/mediagoblin.po
mediagoblin/i18n/ru/LC_MESSAGES/mediagoblin.po
mediagoblin/i18n/sk/LC_MESSAGES/mediagoblin.po
mediagoblin/i18n/sl/LC_MESSAGES/mediagoblin.po
mediagoblin/i18n/sr/LC_MESSAGES/mediagoblin.po
mediagoblin/i18n/sv/LC_MESSAGES/mediagoblin.po
mediagoblin/i18n/te/LC_MESSAGES/mediagoblin.po
mediagoblin/i18n/zh_TW/LC_MESSAGES/mediagoblin.po
mediagoblin/init/celery/__init__.py
mediagoblin/meddleware/__init__.py [moved from mediagoblin/middleware/__init__.py with 70% similarity]
mediagoblin/meddleware/csrf.py [moved from mediagoblin/middleware/csrf.py with 97% similarity]
mediagoblin/meddleware/noop.py [moved from mediagoblin/middleware/noop.py with 91% similarity]
mediagoblin/media_types/__init__.py [new file with mode: 0644]
mediagoblin/media_types/image/__init__.py [new file with mode: 0644]
mediagoblin/media_types/image/processing.py [new file with mode: 0644]
mediagoblin/media_types/video/__init__.py [new file with mode: 0644]
mediagoblin/media_types/video/devices/web-advanced.json [new file with mode: 0644]
mediagoblin/media_types/video/devices/web-flv.png [new file with mode: 0644]
mediagoblin/media_types/video/devices/web-webm.svg [new file with mode: 0644]
mediagoblin/media_types/video/devices/web.svg [new file with mode: 0644]
mediagoblin/media_types/video/processing.py [new file with mode: 0644]
mediagoblin/media_types/video/transcoders.py [new file with mode: 0644]
mediagoblin/process_media/errors.py [deleted file]
mediagoblin/processing.py [moved from mediagoblin/process_media/__init__.py with 56% similarity]
mediagoblin/static/images/media_thumbs/video.jpg [new file with mode: 0644]
mediagoblin/storage/cloudfiles.py
mediagoblin/submit/views.py
mediagoblin/templates/mediagoblin/base.html
mediagoblin/templates/mediagoblin/media_displays/image.html [new file with mode: 0644]
mediagoblin/templates/mediagoblin/media_displays/video.html [new file with mode: 0644]
mediagoblin/templates/mediagoblin/user_pages/media.html
mediagoblin/tests/test_celery_setup.py
mediagoblin/tests/test_submission.py
mediagoblin/tests/tools.py
mediagoblin/tools/template.py
mediagoblin/user_pages/views.py
mediagoblin/views.py
mediagoblin/workbench.py
setup.py

index 728ab2f207055cddcc0dc82000e048569eca471e..dbde6e5106e6013222815f0b2346615cd9f26e5a 100644 (file)
@@ -11,6 +11,9 @@ email_debug_mode = true
 # Set to false to disable registrations
 allow_registration = true
 
+## Uncomment this to turn on video or enable other media types
+# media_types = mediagoblin.media_types.image, mediagoblin.media_types.video
+
 ## Uncomment this to put some user-overriding templates here
 #local_templates = %(here)s/user_dev/templates/
 
index ce4b0becfd8baa826dddc594289016ffcf97a5bc..aafadd977bdb78e3248792b85c05fdb4eef5103e 100644 (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
@@ -100,15 +100,15 @@ class MediaGoblinApp(object):
         # 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:
+        # pass the request through our meddleware classes
+        for m in self.meddleware:
             response = m.process_request(request)
             if response is not None:
                 return response(environ, start_response)
@@ -169,8 +169,8 @@ class MediaGoblinApp(object):
         # 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)
index eef6f6e03a8413e4e2e7eb4c12c043f2a12b8b1c..c057f43265d892d0a9a06db6c587a13c1e3b292f 100644 (file)
@@ -2,16 +2,17 @@
 # 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/")
 
@@ -50,6 +51,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")
index edaf56306670581027f998403ed13870efae79e5..cfc012871b738a82d6374b2295b67554ce4ed22c 100644 (file)
@@ -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)
index 30112969aa2642bd049b9e2d9cb387717d2ecbf1..4ec17d4783d2df046ee785398d635605595f83c3 100644 (file)
@@ -211,10 +211,12 @@ def _export_media(db, args):
             _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 e:
+                _log.error('Failed: {0}'.format(e))
 
     _log.info('...Media exported')
 
index beea109d7f4d875c7fc1ef965075118df2bb175c..bd3bcb206f6ad6aaff833796b55a0dfe8b779eb8 100644 (file)
@@ -18,7 +18,7 @@ import sys
 
 from mediagoblin.db 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
@@ -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
index 548e971f7e5760e337fbe331c41c74c5ceec85c5..40e8b1cdae8048ed791333aefa6d78080131fbc5 100644 (file)
@@ -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: 2011-11-27 15:25-0600\n"
+"PO-Revision-Date: 2011-11-27 21:28+0000\n"
 "Last-Translator: cwebber <cwebber@dustycloud.org>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "MIME-Version: 1.0\n"
@@ -21,6 +21,10 @@ 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/processing.py:143
+msgid "Invalid file given for media type."
+msgstr ""
+
 #: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:49
 msgid "Username"
 msgstr "اسم المستخدم"
@@ -54,8 +58,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 ""
@@ -69,11 +73,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."
@@ -89,43 +101,63 @@ msgstr "العنوان"
 msgid "Tags"
 msgstr "الوسوم"
 
-#: mediagoblin/edit/forms.py:31
+#: mediagoblin/edit/forms.py:30 mediagoblin/submit/forms.py:34
+msgid "Seperate tags by commas or spaces."
+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."
+#: mediagoblin/edit/views.py:171
+msgid "Wrong password"
+msgstr ""
+
+#: mediagoblin/edit/views.py:192
+msgid "Profile edited!"
+msgstr ""
+
+#: mediagoblin/media_types/__init__.py:61
+msgid "Could not find any file extension in \"{filename}\""
 msgstr ""
 
 #: mediagoblin/submit/forms.py:25
@@ -136,18 +168,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 "ويحي!"
@@ -167,29 +199,29 @@ msgstr ""
 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:49
 msgid "MediaGoblin logo"
 msgstr "شعار ميدياغوبلن"
 
-#: 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:72
+msgid "log out"
+msgstr ""
 
-#: mediagoblin/templates/mediagoblin/base.html:73
+#: 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"
@@ -200,61 +232,32 @@ msgid "Explore"
 msgstr ""
 
 #: mediagoblin/templates/mediagoblin/root.html:27
-msgid "Hi there, media lover! MediaGoblin is..."
-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 "مكان يجتمع فيه الناس ليتعاونوا ويعرضوا إبداعاتهم الأصلية والمقتبسة!"
-
-#: mediagoblin/templates/mediagoblin/root.html:31
-msgid ""
-"Free, as in freedom. (We’re a <a href=\"http://gnu.org\">GNU</a> project, "
-"after all.)"
-msgstr "مشروع حر، فنحن أحد مشاريع <a href=\"http://gnu.org\">غنو</a>."
-
-#: mediagoblin/templates/mediagoblin/root.html:32
-msgid ""
-"Aiming to make the world a better place through decentralization and "
-"(eventually, coming soon!) federation!"
-msgstr "مشروع يحاول جعل عالمنا أفضل عن طريق اللامركزية (قريبًا!)."
+msgid "Hi there, welcome to this MediaGoblin site!"
+msgstr ""
 
-#: mediagoblin/templates/mediagoblin/root.html:33
-msgid ""
-"Built for extensibility.  (Multiple media types coming soon to the software,"
-" including video support!)"
+#: mediagoblin/templates/mediagoblin/root.html:28
+msgid "Your finest source for all goblin-related media."
 msgstr ""
-"جاهز للتمدد. (سيُضاف دعم أنساق كثيرة من الوسائط قريبًا، كما سندعم الفيديو!)."
 
-#: mediagoblin/templates/mediagoblin/root.html:34
+#: mediagoblin/templates/mediagoblin/root.html:29
 msgid ""
-"Powered by people like you.  (<a "
-"href=\"http://mediagoblin.org/pages/join.html\">You can help us improve this"
-" software!</a>)"
+"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:38
-msgid "Excited to join us?"
+#: mediagoblin/templates/mediagoblin/root.html:31
+msgid "Don't have one yet? It's easy!"
 msgstr ""
 
-#: mediagoblin/templates/mediagoblin/root.html:39
+#: mediagoblin/templates/mediagoblin/root.html:32
 #, 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"
-"          أو\n"
-"          <a class=\"header_submit\" href=\"http://wiki.mediagoblin.org/HackingHowto\">ركّب ميدياغوبلن على خادومك الخاص</a>"
 
-#: mediagoblin/templates/mediagoblin/root.html:53
+#: mediagoblin/templates/mediagoblin/root.html:44
 msgid "Most recent media"
 msgstr "أحدث الوسائط"
 
@@ -262,9 +265,13 @@ 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/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."
@@ -300,22 +307,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 "أنشئ حسابًا!"
@@ -361,9 +364,15 @@ 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 ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:19
+msgid "Original"
+msgstr ""
 
 #: mediagoblin/templates/mediagoblin/submit/start.html:26
 msgid "Submit yer media"
@@ -373,16 +382,16 @@ msgstr "انشر وسائطك"
 msgid "Submit"
 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_confirm_delete.html:30
 #, python-format
 msgid "Really delete %(title)s?"
@@ -413,35 +422,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 +469,35 @@ 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 "لا يبدو أنه توجد أي وسائط هنا حتى الآن..."
 
@@ -503,6 +517,14 @@ msgstr "الأحدث"
 msgid "Older"
 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 "علِّق"
@@ -511,15 +533,23 @@ msgstr "علِّق"
 msgid "I am sure I want to delete this"
 msgstr "أنا متأكد من رغبتي بحذف هذا العمل"
 
-#: mediagoblin/user_pages/views.py:142
+#: mediagoblin/user_pages/views.py:155
 msgid "Empty comments are not allowed."
 msgstr ""
 
-#: mediagoblin/user_pages/views.py:148
+#: mediagoblin/user_pages/views.py:161
 msgid "Comment 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 "أنت على وشك حذف وسائط مستخدم آخر. كن حذرًا أثناء العملية."
 
index e2cd83423abacf5c2a7fe41835fe98a7ad35c089..f07ab2d6fdcd12666326354fbf08b2ff82c4bfef 100644 (file)
@@ -3,13 +3,14 @@
 # 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: 2011-11-27 15:25-0600\n"
+"PO-Revision-Date: 2011-11-27 21:28+0000\n"
 "Last-Translator: cwebber <cwebber@dustycloud.org>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "MIME-Version: 1.0\n"
@@ -19,6 +20,10 @@ msgstr ""
 "Language: ca\n"
 "Plural-Forms: nplurals=2; plural=(n != 1)\n"
 
+#: 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:49
 msgid "Username"
 msgstr "Nom d'usuari"
@@ -52,8 +57,8 @@ 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
 msgid ""
@@ -68,11 +73,19 @@ 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: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 "Torna'm a enviar el correu de verificació"
 
-#: 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."
@@ -86,42 +99,62 @@ msgstr "Títol"
 msgid "Tags"
 msgstr "Etiquetes"
 
-#: mediagoblin/edit/forms.py:31
+#: mediagoblin/edit/forms.py:30 mediagoblin/submit/forms.py:34
+msgid "Seperate tags by commas or spaces."
+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 "Biografia"
 
-#: mediagoblin/edit/forms.py:43
+#: mediagoblin/edit/forms.py:45
 msgid "Website"
 msgstr "Lloc web"
 
-#: 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 "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:171
+msgid "Wrong password"
+msgstr ""
+
+#: mediagoblin/edit/views.py:192
+msgid "Profile edited!"
+msgstr ""
+
+#: mediagoblin/media_types/__init__.py:61
+msgid "Could not find any file extension in \"{filename}\""
+msgstr ""
 
 #: mediagoblin/submit/forms.py:25
 msgid "File"
@@ -131,18 +164,18 @@ msgstr "Fitxer"
 msgid "Description of this work"
 msgstr ""
 
-#: mediagoblin/submit/views.py:46
+#: mediagoblin/submit/views.py:49
 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:127
 msgid "Woohoo! Submitted!"
 msgstr "Visca! S'ha enviat!"
 
+#: mediagoblin/submit/views.py:133
+msgid "Invalid file type."
+msgstr ""
+
 #: mediagoblin/templates/mediagoblin/404.html:21
 msgid "Oops!"
 msgstr "Ups!"
@@ -161,31 +194,31 @@ 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"
+msgstr "Imatge de la pantalla 404, el goblin no sap què fer..."
 
-#: mediagoblin/templates/mediagoblin/base.html:47
+#: mediagoblin/templates/mediagoblin/base.html:49
 msgid "MediaGoblin logo"
 msgstr "Logo de mediagoblin"
 
-#: mediagoblin/templates/mediagoblin/base.html:52
+#: mediagoblin/templates/mediagoblin/base.html:54
 msgid "Submit media"
 msgstr "Envia fitxers"
 
-#: mediagoblin/templates/mediagoblin/base.html:63
-msgid "verify your email!"
-msgstr "verifiqueu el correu electrònic"
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "Verify your email!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:72
+msgid "log out"
+msgstr ""
 
-#: mediagoblin/templates/mediagoblin/base.html:73
+#: 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 "Entra"
 
-#: 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"
@@ -196,66 +229,32 @@ 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: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!"
-msgstr ""
-"Un lloc en el qual les persones poden col·laborar i mostrar les seves "
-"creacions originals o obres derivades."
-
-#: mediagoblin/templates/mediagoblin/root.html:31
-msgid ""
-"Free, as in freedom. (We’re a <a href=\"http://gnu.org\">GNU</a> project, "
-"after all.)"
+msgid "Hi there, welcome to this MediaGoblin site!"
 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!)"
+#: mediagoblin/templates/mediagoblin/root.html:28
+msgid "Your finest source for all goblin-related media."
 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
+#: mediagoblin/templates/mediagoblin/root.html:29
 msgid ""
-"Powered by people like you.  (<a "
-"href=\"http://mediagoblin.org/pages/join.html\">You can help us improve this"
-" software!</a>)"
+"To add your own media, place comments, save your favourites and more, you "
+"can log in with your MediaGoblin account."
 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?"
+#: mediagoblin/templates/mediagoblin/root.html:31
+msgid "Don't have one yet? It's easy!"
 msgstr ""
 
-#: mediagoblin/templates/mediagoblin/root.html:39
+#: mediagoblin/templates/mediagoblin/root.html:32
 #, 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 ""
 
-#: mediagoblin/templates/mediagoblin/root.html:53
+#: mediagoblin/templates/mediagoblin/root.html:44
 msgid "Most recent media"
 msgstr ""
 
@@ -263,8 +262,12 @@ msgstr ""
 msgid "Enter your new password"
 msgstr ""
 
-#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:29
-msgid "Enter your username or email"
+#: 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
@@ -294,22 +297,18 @@ 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
 msgid "Create an account!"
 msgstr "Creeu un compte!"
@@ -355,9 +354,15 @@ msgstr "Desa els canvis"
 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/video.html:19
+msgid "Original"
+msgstr ""
 
 #: mediagoblin/templates/mediagoblin/submit/start.html:26
 msgid "Submit yer media"
@@ -367,16 +372,16 @@ msgstr "Envieu els vostres fitxers"
 msgid "Submit"
 msgstr "Envia"
 
-#: 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_confirm_delete.html:30
 #, python-format
 msgid "Really delete %(title)s?"
@@ -397,7 +402,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 +410,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,46 +461,41 @@ 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:119
 msgid "Edit profile"
 msgstr "Edita el perfil"
 
-#: 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 "Aquest usuari encara no ha escrit res al seu perfil."
 
-#: 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 "View all of %(username)s's media"
 
-#: 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 ""
+msgstr "Tots els fitxers"
 
-#: 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 ""
 
 #: 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"
@@ -497,6 +509,14 @@ msgstr ""
 msgid "Older"
 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 "Comentari"
@@ -505,15 +525,23 @@ msgstr "Comentari"
 msgid "I am sure I want to delete this"
 msgstr ""
 
-#: mediagoblin/user_pages/views.py:142
+#: mediagoblin/user_pages/views.py:155
 msgid "Empty comments are not allowed."
 msgstr ""
 
-#: mediagoblin/user_pages/views.py:148
+#: mediagoblin/user_pages/views.py:161
 msgid "Comment 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 ""
 
index 5c4ef0d0b286a74dc2b6df35539d3fa47f1079a6..f5907eda71155586a03796cf50314129ac9ef9b0 100644 (file)
@@ -6,6 +6,7 @@
 #   <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.
 #   <kyoo@kyoo.ch>, 2011.
 #   <mediagoblin.org@samba-tng.org>, 2011.
@@ -15,9 +16,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 15:18+0000\n"
-"Last-Translator: piratenpanda <benjamin@lebsanft.org>\n"
+"POT-Creation-Date: 2011-11-27 15:25-0600\n"
+"PO-Revision-Date: 2011-11-27 21:28+0000\n"
+"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
 "Language-Team: German (http://www.transifex.net/projects/p/mediagoblin/team/de/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -26,6 +27,10 @@ msgstr ""
 "Language: de\n"
 "Plural-Forms: nplurals=2; plural=(n != 1)\n"
 
+#: 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:49
 msgid "Username"
 msgstr "Benutzername"
@@ -48,43 +53,52 @@ msgstr "Hier nochmal eintragen, um Tippfehler zu verhindern."
 
 #: mediagoblin/auth/forms.py:42
 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 ""
 
 #: mediagoblin/auth/views.py:179
 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
 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:203
+msgid "You must be logged in so we know who to send the email to!"
+msgstr ""
 
-#: mediagoblin/auth/views.py:207
+#: 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 "Bestätigungs-Email wurde erneut versandt."
+msgstr "Bestätigungs-E-Mail wurde erneut versandt."
 
-#: 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 ""
-"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/edit/forms.py:24 mediagoblin/submit/forms.py:27
 msgid "Title"
@@ -94,44 +108,64 @@ msgstr "Titel"
 msgid "Tags"
 msgstr "Markierungen"
 
-#: mediagoblin/edit/forms.py:31
+#: mediagoblin/edit/forms.py:30 mediagoblin/submit/forms.py:34
+msgid "Seperate tags by commas or spaces."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:33
 msgid "Slug"
 msgstr "Kurztitel"
 
-#: mediagoblin/edit/forms.py:32
+#: mediagoblin/edit/forms.py:34
 msgid "The slug can't be empty"
 msgstr "Bitte gib einen Kurztitel ein"
 
-#: 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 ""
 "Der Titelteil der Medienadresse. Normalerweise muss hier nichts geändert "
 "werden."
 
-#: mediagoblin/edit/forms.py:40
+#: mediagoblin/edit/forms.py:42
 msgid "Bio"
 msgstr "Biographie"
 
-#: mediagoblin/edit/forms.py:43
+#: mediagoblin/edit/forms.py:45
 msgid "Website"
 msgstr "Webseite"
 
-#: 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 "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:171
+msgid "Wrong password"
+msgstr ""
+
+#: mediagoblin/edit/views.py:192
+msgid "Profile edited!"
+msgstr ""
+
+#: mediagoblin/media_types/__init__.py:61
+msgid "Could not find any file extension in \"{filename}\""
+msgstr ""
 
 #: mediagoblin/submit/forms.py:25
 msgid "File"
@@ -141,18 +175,18 @@ msgstr "Datei"
 msgid "Description of this work"
 msgstr "Beschreibung des Werkes"
 
-#: mediagoblin/submit/views.py:46
+#: mediagoblin/submit/views.py:49
 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:127
 msgid "Woohoo! Submitted!"
 msgstr "Yeeeaaah! Geschafft!"
 
+#: mediagoblin/submit/views.py:133
+msgid "Invalid file type."
+msgstr ""
+
 #: mediagoblin/templates/mediagoblin/404.html:21
 msgid "Oops!"
 msgstr "Hoppla!"
@@ -173,29 +207,29 @@ msgstr ""
 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:49
 msgid "MediaGoblin logo"
 msgstr "MediaGoblin-Logo"
 
-#: mediagoblin/templates/mediagoblin/base.html:52
+#: mediagoblin/templates/mediagoblin/base.html:54
 msgid "Submit media"
 msgstr "Medien hochladen"
 
-#: mediagoblin/templates/mediagoblin/base.html:63
-msgid "verify your email!"
-msgstr "Bitte bestätige deine Email-Adresse!"
+#: 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 "Anmelden"
 
-#: 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"
@@ -208,71 +242,32 @@ 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: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!"
-msgstr ""
-"Ein Platz für Zusammenarbeit und um Originale und abgeleitete Werke zu "
-"präsentieren!"
-
-#: mediagoblin/templates/mediagoblin/root.html:31
-msgid ""
-"Free, as in freedom. (We’re a <a href=\"http://gnu.org\">GNU</a> project, "
-"after all.)"
+msgid "Hi there, welcome to this MediaGoblin site!"
 msgstr ""
-"Frei, wie in Freiheit. (Wir sind schließlich ein <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!"
+#: mediagoblin/templates/mediagoblin/root.html:28
+msgid "Your finest source for all goblin-related media."
 msgstr ""
-"Weltverbesserer durch Dezentralisierung und (hoffentlich bald!) unabhängige "
-"Kommunikation!"
 
-#: mediagoblin/templates/mediagoblin/root.html:33
+#: mediagoblin/templates/mediagoblin/root.html:29
 msgid ""
-"Built for extensibility.  (Multiple media types coming soon to the software,"
-" including video support!)"
+"To add your own media, place comments, save your favourites and more, you "
+"can log in with your MediaGoblin account."
 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>)"
+#: mediagoblin/templates/mediagoblin/root.html:31
+msgid "Don't have one yet? It's easy!"
 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 anzuschließen?"
-
-#: mediagoblin/templates/mediagoblin/root.html:39
+#: mediagoblin/templates/mediagoblin/root.html:32
 #, 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\">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:44
 msgid "Most recent media"
 msgstr "Neuste Medien"
 
@@ -280,9 +275,13 @@ msgstr "Neuste Medien"
 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/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."
@@ -292,8 +291,8 @@ msgstr "Dein Passwort wurde geändert. Versuche dich jetzt einzuloggen."
 msgid ""
 "Check your inbox. We sent an email with a URL for changing your password."
 msgstr ""
-"Prüfe deinen Posteingang. Wir haben dir eine Email mit einem Link geschickt,"
-" mit dem du dein Passwort ändern kannst."
+"Überprüfe deinen Posteingang. Wir haben dir eine E-Mail mit einem Link "
+"geschickt, mit dem du dein Passwort ändern kannst."
 
 #: mediagoblin/templates/mediagoblin/auth/fp_verification_email.txt:19
 #, python-format
@@ -314,28 +313,24 @@ 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
 msgid "Create an account!"
 msgstr "Neues Konto registrieren!"
@@ -356,7 +351,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"
 
@@ -380,9 +375,15 @@ msgstr "Änderungen speichern"
 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 ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:19
+msgid "Original"
+msgstr ""
 
 #: mediagoblin/templates/mediagoblin/submit/start.html:26
 msgid "Submit yer media"
@@ -392,16 +393,16 @@ msgstr "Medien hochladen"
 msgid "Submit"
 msgstr "Bestätigen"
 
-#: 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 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_confirm_delete.html:30
 #, python-format
 msgid "Really delete %(title)s?"
@@ -434,31 +435,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
+#: 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 "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 "Email-Bestätigung benötigt"
+msgstr "E-Mail-Bestätigung benötigt"
 
-#: 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 "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 +477,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 +487,35 @@ 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:119
 msgid "Edit profile"
 msgstr "Profil bearbeiten"
 
-#: 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 "Dieser Benutzer hat (noch) keine Daten in seinem 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 "Alle Medien von %(username)s anschauen"
 
-#: 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 "Hier erscheinen deine Medien. Sobald du etwas hochgeladen hast."
 
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:141
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:152
 msgid "Add media"
 msgstr "Medien hinzufügen"
 
-#: 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 "Scheinbar gibt es hier noch nichts …"
 
@@ -529,6 +535,14 @@ msgstr "Neuere"
 msgid "Older"
 msgstr "Ältere"
 
+#: 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 "Kommentar"
@@ -537,15 +551,23 @@ msgstr "Kommentar"
 msgid "I am sure I want to delete this"
 msgstr "Ja, wirklich löschen"
 
-#: mediagoblin/user_pages/views.py:142
+#: mediagoblin/user_pages/views.py:155
 msgid "Empty comments are not allowed."
 msgstr "Leere Kommentare sind nicht erlaubt."
 
-#: mediagoblin/user_pages/views.py:148
+#: mediagoblin/user_pages/views.py:161
 msgid "Comment posted!"
 msgstr "Kommentar hinzugefügt!"
 
-#: 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 versuchst Medien eines anderen Nutzers zu löschen. Sei vorsichtig."
 
index f3e0c100bb1d54843594a7814a762e7137ae667c..c1f3fd7fac46b522235f9c99608e14b0e3ee9358 100644 (file)
@@ -8,7 +8,7 @@ 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: 2011-11-27 15:25-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,6 +17,10 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Generated-By: Babel 0.9.6\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 ""
@@ -50,7 +54,7 @@ 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
@@ -89,40 +93,60 @@ msgstr ""
 msgid "Tags"
 msgstr ""
 
-#: mediagoblin/edit/forms.py:31
+#: mediagoblin/edit/forms.py:30 mediagoblin/submit/forms.py:34
+msgid "Seperate tags by commas or spaces."
+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."
+#: mediagoblin/edit/views.py:171
+msgid "Wrong password"
+msgstr ""
+
+#: mediagoblin/edit/views.py:192
+msgid "Profile edited!"
+msgstr ""
+
+#: mediagoblin/media_types/__init__.py:61
+msgid "Could not find any file extension in \"{filename}\""
 msgstr ""
 
 #: mediagoblin/submit/forms.py:25
@@ -133,16 +157,16 @@ 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!"
+#: mediagoblin/submit/views.py:127
+msgid "Woohoo! Submitted!"
 msgstr ""
 
-#: mediagoblin/submit/views.py:121
-msgid "Woohoo! Submitted!"
+#: mediagoblin/submit/views.py:133
+msgid "Invalid file type."
 msgstr ""
 
 #: mediagoblin/templates/mediagoblin/404.html:21
@@ -163,29 +187,29 @@ msgstr ""
 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:49
 msgid "MediaGoblin logo"
 msgstr ""
 
-#: 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!"
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "Verify your email!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:72
+msgid "log out"
 msgstr ""
 
-#: mediagoblin/templates/mediagoblin/base.html:73
+#: 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"
@@ -196,60 +220,35 @@ msgid "Explore"
 msgstr ""
 
 #: mediagoblin/templates/mediagoblin/root.html:27
-msgid "Hi there, media lover! MediaGoblin is..."
+msgid "Hi there, welcome to this MediaGoblin site!"
 msgstr ""
 
-#: mediagoblin/templates/mediagoblin/root.html:29
-msgid "The perfect place for your media!"
+#: mediagoblin/templates/mediagoblin/root.html:28
+msgid "Your finest source for all goblin-related media."
 msgstr ""
 
-#: mediagoblin/templates/mediagoblin/root.html:30
+#: mediagoblin/templates/mediagoblin/root.html:29
 msgid ""
-"A place for people to collaborate and show off original and derived "
-"creations!"
+"To add your own media, place comments, save your favourites and more, you"
+" can log in with your MediaGoblin account."
 msgstr ""
 
 #: mediagoblin/templates/mediagoblin/root.html:31
-msgid ""
-"Free, as in freedom. (We’re a <a href=\"http://gnu.org\">GNU</a> project,"
-" after all.)"
+msgid "Don't have one yet? It's easy!"
 msgstr ""
 
 #: mediagoblin/templates/mediagoblin/root.html:32
-msgid ""
-"Aiming to make the world a better place through decentralization and "
-"(eventually, coming soon!) federation!"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:33
-msgid ""
-"Built for extensibility.  (Multiple media types coming soon to the "
-"software, including video support!)"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:34
-msgid ""
-"Powered by people like you.  (<a "
-"href=\"http://mediagoblin.org/pages/join.html\">You can help us improve "
-"this software!</a>)"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:38
-msgid "Excited to join us?"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:39
 #, python-format
 msgid ""
-"<a class=\"header_submit_highlight\" href=\"%(register_url)s\">Create a "
-"free account</a>\n"
+"<a class=\"button_action_highlight\" href=\"%(register_url)s\">Create an "
+"account at this site</a>\n"
 "          or\n"
-"          <a class=\"header_submit\" "
+"          <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:44
 msgid "Most recent media"
 msgstr ""
 
@@ -257,8 +256,12 @@ msgstr ""
 msgid "Enter your new password"
 msgstr ""
 
-#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:29
-msgid "Enter your username or email"
+#: 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
@@ -287,22 +290,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 ""
@@ -342,8 +341,14 @@ msgstr ""
 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/video.html:19
+msgid "Original"
 msgstr ""
 
 #: mediagoblin/templates/mediagoblin/submit/start.html:26
@@ -354,14 +359,14 @@ msgstr ""
 msgid "Submit"
 msgstr ""
 
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
 #, python-format
-msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
+msgid "%(username)s'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/gallery.html:37
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
 msgstr ""
 
 #: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
@@ -393,74 +398,79 @@ 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: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 ""
 
-#: 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 ""
 
@@ -480,6 +490,14 @@ msgstr ""
 msgid "Older"
 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 ""
@@ -488,15 +506,23 @@ msgstr ""
 msgid "I am sure I want to delete this"
 msgstr ""
 
-#: mediagoblin/user_pages/views.py:142
+#: mediagoblin/user_pages/views.py:155
 msgid "Empty comments are not allowed."
 msgstr ""
 
-#: mediagoblin/user_pages/views.py:148
+#: mediagoblin/user_pages/views.py:161
 msgid "Comment 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 ""
 
index f6bb1cce1d9664939d324c6eb1716165957c8f13..2cffe874e1f75a26782cb3d28c37e95cd536ff44 100644 (file)
@@ -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: 2011-11-27 15:25-0600\n"
+"PO-Revision-Date: 2011-11-27 21:28+0000\n"
 "Last-Translator: cwebber <cwebber@dustycloud.org>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "MIME-Version: 1.0\n"
@@ -21,6 +21,10 @@ msgstr ""
 "Language: eo\n"
 "Plural-Forms: nplurals=2; plural=(n != 1)\n"
 
+#: 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:49
 msgid "Username"
 msgstr "Uzantnomo"
@@ -54,8 +58,8 @@ 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 ""
 
 #: mediagoblin/auth/views.py:179
 msgid ""
@@ -69,11 +73,19 @@ msgstr ""
 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: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 "Resendi vian kontrol-mesaĝon."
 
-#: 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."
@@ -89,44 +101,64 @@ msgstr "Titolo"
 msgid "Tags"
 msgstr "Etikedoj"
 
-#: mediagoblin/edit/forms.py:31
+#: mediagoblin/edit/forms.py:30 mediagoblin/submit/forms.py:34
+msgid "Seperate tags by commas or spaces."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:33
 msgid "Slug"
 msgstr "La distingiga adresparto"
 
-#: mediagoblin/edit/forms.py:32
+#: mediagoblin/edit/forms.py:34
 msgid "The slug can't be empty"
 msgstr "La distingiga adresparto ne povas esti malplena"
 
-#: mediagoblin/edit/forms.py:33
+#: mediagoblin/edit/forms.py:35
 msgid ""
 "The title part of this media's URL. 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:42
 msgid "Bio"
 msgstr "Bio"
 
-#: mediagoblin/edit/forms.py:43
+#: mediagoblin/edit/forms.py:45
 msgid "Website"
 msgstr "Retejo"
 
-#: 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 "Ĉ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:171
+msgid "Wrong password"
+msgstr ""
+
+#: mediagoblin/edit/views.py:192
+msgid "Profile edited!"
+msgstr ""
+
+#: mediagoblin/media_types/__init__.py:61
+msgid "Could not find any file extension in \"{filename}\""
+msgstr ""
 
 #: mediagoblin/submit/forms.py:25
 msgid "File"
@@ -136,18 +168,18 @@ msgstr "Dosiero"
 msgid "Description of this work"
 msgstr "Priskribo de ĉi tiu verko"
 
-#: mediagoblin/submit/views.py:46
+#: mediagoblin/submit/views.py:49
 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:127
 msgid "Woohoo! Submitted!"
 msgstr "Hura! Alŝutitas!"
 
+#: mediagoblin/submit/views.py:133
+msgid "Invalid file type."
+msgstr ""
+
 #: mediagoblin/templates/mediagoblin/404.html:21
 msgid "Oops!"
 msgstr "Oj!"
@@ -168,29 +200,29 @@ msgstr ""
 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:49
 msgid "MediaGoblin logo"
 msgstr "Emblemo de MediaGoblin"
 
-#: mediagoblin/templates/mediagoblin/base.html:52
+#: mediagoblin/templates/mediagoblin/base.html:54
 msgid "Submit media"
 msgstr "Alŝuti aŭd-vid-dosieron"
 
-#: mediagoblin/templates/mediagoblin/base.html:63
-msgid "verify your email!"
-msgstr "konfirmu vian retpoŝtadreson! "
+#: 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 "Ensaluti"
 
-#: 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"
@@ -203,69 +235,32 @@ msgid "Explore"
 msgstr ""
 
 #: mediagoblin/templates/mediagoblin/root.html:27
-msgid "Hi there, media lover! MediaGoblin is..."
-msgstr "Saluton, artemulo! MediaGoblin estas…"
-
-#: 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!"
-msgstr ""
-"Loko, kie homoj povas kunlabori, kaj elmeti originalajn kreaĵojn kaj "
-"derivaĵojn!"
-
-#: mediagoblin/templates/mediagoblin/root.html:31
-msgid ""
-"Free, as in freedom. (We’re a <a href=\"http://gnu.org\">GNU</a> project, "
-"after all.)"
+msgid "Hi there, welcome to this MediaGoblin site!"
 msgstr ""
-"Libera verko. (Ni ja estas projekto de <a href=\"http://gnu.org\">GNU</a>.)"
 
-#: mediagoblin/templates/mediagoblin/root.html:32
-msgid ""
-"Aiming to make the world a better place through decentralization and "
-"(eventually, coming soon!) federation!"
+#: mediagoblin/templates/mediagoblin/root.html:28
+msgid "Your finest source for all goblin-related media."
 msgstr ""
-"Celanta plibonigi la mondon per sencentreco kaj (iam, baldaŭ!) federateco!"
 
-#: mediagoblin/templates/mediagoblin/root.html:33
+#: mediagoblin/templates/mediagoblin/root.html:29
 msgid ""
-"Built for extensibility.  (Multiple media types coming soon to the software,"
-" including video support!)"
+"To add your own media, place comments, save your favourites and more, you "
+"can log in with your MediaGoblin account."
 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>)"
+#: mediagoblin/templates/mediagoblin/root.html:31
+msgid "Don't have one yet? It's easy!"
 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
+#: mediagoblin/templates/mediagoblin/root.html:32
 #, 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\">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:44
 msgid "Most recent media"
 msgstr "Plej nove aldonitaj dosieroj"
 
@@ -273,9 +268,13 @@ msgstr "Plej nove aldonitaj dosieroj"
 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/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."
@@ -313,22 +312,18 @@ 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
 msgid "Create an account!"
 msgstr "Kreu konton!"
@@ -373,9 +368,15 @@ msgstr "Konservi ŝanĝojn"
 msgid "Editing %(username)s's profile"
 msgstr "Redaktado de l’profilo de %(username)s'"
 
-#: mediagoblin/templates/mediagoblin/listings/tag.html:31
-msgid "Media tagged with:"
-msgstr "Dosieroj markitaj per:"
+#: mediagoblin/templates/mediagoblin/listings/tag.html:30
+#: mediagoblin/templates/mediagoblin/listings/tag.html:35
+#, python-format
+msgid "Media tagged with: %(tag_name)s"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:19
+msgid "Original"
+msgstr ""
 
 #: mediagoblin/templates/mediagoblin/submit/start.html:26
 msgid "Submit yer media"
@@ -385,16 +386,16 @@ msgstr "Alŝutu vian aŭd-vid-dosieron"
 msgid "Submit"
 msgstr "Alŝuti"
 
-#: 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 "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_confirm_delete.html:30
 #, python-format
 msgid "Really delete %(title)s?"
@@ -427,30 +428,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 +469,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 +478,36 @@ 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:119
 msgid "Edit profile"
 msgstr "Redakti profilon"
 
-#: 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 "Ĉi tiu uzanto ne jam aldonis informojn pri si."
 
-#: 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 "Rigardi ĉiujn dosierojn 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 ""
 "Ĝuste ĉi tie aperos viaj dosieroj, sed vi ŝajne ankoraŭ nenion alŝutis."
 
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:141
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:152
 msgid "Add media"
 msgstr "Aldoni dosieron"
 
-#: 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 "Ĉi tie ŝajne estas ankoraŭ neniuj dosieroj…"
 
@@ -521,6 +527,14 @@ msgstr "Plinovaj"
 msgid "Older"
 msgstr "Malplinovaj"
 
+#: 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 "Komento"
@@ -529,15 +543,23 @@ msgstr "Komento"
 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
+#: mediagoblin/user_pages/views.py:155
 msgid "Empty comments are not allowed."
-msgstr ""
+msgstr "Malplenaj komentoj ne estas afiŝeblaj."
 
-#: mediagoblin/user_pages/views.py:148
+#: mediagoblin/user_pages/views.py:161
 msgid "Comment posted!"
+msgstr "La komento estas afiŝita!"
+
+#: 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:181
+#: 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."
 
index a3c9939b00b8544160b6e5894420d29af6f9a9c3..6ab070afbcdc91f68944d17dfe18b0b366e3ae8c 100644 (file)
@@ -14,8 +14,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: 2011-11-27 15:25-0600\n"
+"PO-Revision-Date: 2011-11-27 21:28+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,6 +25,10 @@ msgstr ""
 "Language: es\n"
 "Plural-Forms: nplurals=2; plural=(n != 1)\n"
 
+#: 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:49
 msgid "Username"
 msgstr "Nombre de usuario"
@@ -59,8 +63,8 @@ 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 ""
 
 #: mediagoblin/auth/views.py:179
 msgid ""
@@ -75,11 +79,19 @@ 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: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 "Se reenvió tu correo electrónico de verificación."
 
-#: 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."
@@ -96,44 +108,64 @@ msgstr "Título"
 msgid "Tags"
 msgstr "Etiquetas"
 
-#: mediagoblin/edit/forms.py:31
+#: mediagoblin/edit/forms.py:30 mediagoblin/submit/forms.py:34
+msgid "Seperate tags by commas or spaces."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:33
 msgid "Slug"
 msgstr "Ficha"
 
-#: mediagoblin/edit/forms.py:32
+#: mediagoblin/edit/forms.py:34
 msgid "The slug can't be empty"
 msgstr "La ficha no puede estar vacía"
 
-#: mediagoblin/edit/forms.py:33
+#: mediagoblin/edit/forms.py:35
 msgid ""
 "The title part of this media's URL. 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:42
 msgid "Bio"
 msgstr "Bio"
 
-#: mediagoblin/edit/forms.py:43
+#: mediagoblin/edit/forms.py:45
 msgid "Website"
 msgstr "Sitio web"
 
-#: 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 "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:171
+msgid "Wrong password"
+msgstr ""
+
+#: mediagoblin/edit/views.py:192
+msgid "Profile edited!"
+msgstr ""
+
+#: mediagoblin/media_types/__init__.py:61
+msgid "Could not find any file extension in \"{filename}\""
+msgstr ""
 
 #: mediagoblin/submit/forms.py:25
 msgid "File"
@@ -143,18 +175,18 @@ msgstr "Archivo"
 msgid "Description of this work"
 msgstr "Descripción de esta obra"
 
-#: mediagoblin/submit/views.py:46
+#: mediagoblin/submit/views.py:49
 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:127
 msgid "Woohoo! Submitted!"
 msgstr "¡Woohoo! ¡Enviado!"
 
+#: mediagoblin/submit/views.py:133
+msgid "Invalid file type."
+msgstr ""
+
 #: mediagoblin/templates/mediagoblin/404.html:21
 msgid "Oops!"
 msgstr "Ups!"
@@ -175,29 +207,29 @@ msgstr ""
 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:49
 msgid "MediaGoblin logo"
 msgstr "Logo de MediaGoblin"
 
-#: mediagoblin/templates/mediagoblin/base.html:52
+#: mediagoblin/templates/mediagoblin/base.html:54
 msgid "Submit media"
 msgstr "Enviar contenido"
 
-#: mediagoblin/templates/mediagoblin/base.html:63
-msgid "verify your email!"
-msgstr "¡Verifica tu correo electrónico!"
+#: 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 "Conectarse"
 
-#: 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"
@@ -210,71 +242,32 @@ 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: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!"
-msgstr ""
-"¡Un lugar para colaborar y exhibir tus creaciones originales y derivadas!"
-
-#: mediagoblin/templates/mediagoblin/root.html:31
-msgid ""
-"Free, as in freedom. (We’re a <a href=\"http://gnu.org\">GNU</a> project, "
-"after all.)"
+msgid "Hi there, welcome to this MediaGoblin site!"
 msgstr ""
-"Libre, como en la libertad. (Somos parte del proyecto <a "
-"href=\"http://gnu.org\">GNU</a> después de todo.)"
 
-#: mediagoblin/templates/mediagoblin/root.html:32
-msgid ""
-"Aiming to make the world a better place through decentralization and "
-"(eventually, coming soon!) federation!"
+#: mediagoblin/templates/mediagoblin/root.html:28
+msgid "Your finest source for all goblin-related media."
 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
+#: mediagoblin/templates/mediagoblin/root.html:29
 msgid ""
-"Built for extensibility.  (Multiple media types coming soon to the software,"
-" including video support!)"
+"To add your own media, place comments, save your favourites and more, you "
+"can log in with your MediaGoblin account."
 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>)"
+#: mediagoblin/templates/mediagoblin/root.html:31
+msgid "Don't have one yet? It's easy!"
 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
+#: mediagoblin/templates/mediagoblin/root.html:32
 #, 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\">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:44
 msgid "Most recent media"
 msgstr "El contenido más reciente"
 
@@ -282,9 +275,13 @@ msgstr "El contenido más reciente"
 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/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."
@@ -319,22 +316,18 @@ msgstr ""
 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
 msgid "Create an account!"
 msgstr "¡Crea una cuenta!"
@@ -379,9 +372,15 @@ msgstr "Guardar cambios"
 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 ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:19
+msgid "Original"
+msgstr ""
 
 #: mediagoblin/templates/mediagoblin/submit/start.html:26
 msgid "Submit yer media"
@@ -391,16 +390,16 @@ msgstr "Envía tu contenido"
 msgid "Submit"
 msgstr "Enviar"
 
-#: 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 "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_confirm_delete.html:30
 #, python-format
 msgid "Really delete %(title)s?"
@@ -433,31 +432,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."
 
-#: 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 +474,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 +483,36 @@ 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:119
 msgid "Edit profile"
 msgstr "Editar perfil"
 
-#: 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 "Este usuario (todavia) no ha completado su perfil."
 
-#: 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 "Ver todo el contenido 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 ""
 "Aquí es donde tú contenido estará, pero parece que aún no has agregado nada."
 
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:141
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:152
 msgid "Add media"
 msgstr "Añadir contenido"
 
-#: 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 "Parece que aún no hay ningún contenido aquí..."
 
@@ -528,6 +532,14 @@ msgstr "Recientes"
 msgid "Older"
 msgstr "Antiguas"
 
+#: 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 "Comentario"
@@ -536,15 +548,23 @@ msgstr "Comentario"
 msgid "I am sure I want to delete this"
 msgstr "Estoy seguro de que quiero borrar esto"
 
-#: mediagoblin/user_pages/views.py:142
+#: mediagoblin/user_pages/views.py:155
 msgid "Empty comments are not allowed."
 msgstr ""
 
-#: mediagoblin/user_pages/views.py:148
+#: mediagoblin/user_pages/views.py:161
 msgid "Comment 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 ""
 "Estás a punto de eliminar un contenido de otro usuario. Proceder con "
index 0a6a5a40a9cf559e5d310dc1a28b53a42f571e7a..b37f5217e928760af2875a94ac9ca79db3a5f102 100644 (file)
@@ -13,9 +13,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-04 10:05+0000\n"
-"Last-Translator: chesuidayeur <chesuidayeur@yahoo.fr>\n"
+"POT-Creation-Date: 2011-11-27 15:25-0600\n"
+"PO-Revision-Date: 2011-11-27 21:28+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"
@@ -24,6 +24,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"
@@ -59,8 +63,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 ""
 
 #: mediagoblin/auth/views.py:179
 msgid ""
@@ -74,11 +78,19 @@ 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 ""
+
+#: 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 "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."
@@ -94,48 +106,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 or spaces."
+msgstr ""
+
+#: 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 ""
+
+#: 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 "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 "Le fichier envoyé  ne correspond pas au type de média."
+#: mediagoblin/edit/views.py:171
+msgid "Wrong password"
+msgstr ""
+
+#: mediagoblin/edit/views.py:192
+msgid "Profile edited!"
+msgstr ""
+
+#: mediagoblin/media_types/__init__.py:61
+msgid "Could not find any file extension in \"{filename}\""
+msgstr ""
 
 #: mediagoblin/submit/forms.py:25
 msgid "File"
@@ -145,18 +177,18 @@ msgstr "Fichier"
 msgid "Description of this work"
 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 ""
+
 #: mediagoblin/templates/mediagoblin/404.html:21
 msgid "Oops!"
 msgstr "Zut!"
@@ -177,29 +209,29 @@ msgstr ""
 msgid "Image of 404 goblin stressing out"
 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 ""
 
-#: 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 "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"
@@ -212,71 +244,32 @@ msgid "Explore"
 msgstr "Explorer"
 
 #: mediagoblin/templates/mediagoblin/root.html:27
-msgid "Hi there, media lover! MediaGoblin is..."
-msgstr "Salut à tous, amateur de médias! MediaGoblin est ..."
-
-#: 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!"
-msgstr ""
-"Un espace de création collaboratif : montrez vos œuvres, originales ou "
-"dérivées !"
-
-#: mediagoblin/templates/mediagoblin/root.html:31
-msgid ""
-"Free, as in freedom. (We’re a <a href=\"http://gnu.org\">GNU</a> project, "
-"after all.)"
+msgid "Hi there, welcome to this MediaGoblin site!"
 msgstr ""
-"Logiciel libre. (Nous sommes un projet <a href=\"http://gnu.org\">GNU</a> "
-"après tout.)"
 
-#: mediagoblin/templates/mediagoblin/root.html:32
-msgid ""
-"Aiming to make the world a better place through decentralization and "
-"(eventually, coming soon!) federation!"
+#: mediagoblin/templates/mediagoblin/root.html:28
+msgid "Your finest source for all goblin-related media."
 msgstr ""
-"Une tentative de rendre le monde meilleur grâce à la décentralisation et (à "
-"terme, et pour bientôt !) la fédération !"
 
-#: mediagoblin/templates/mediagoblin/root.html:33
+#: mediagoblin/templates/mediagoblin/root.html:29
 msgid ""
-"Built for extensibility.  (Multiple media types coming soon to the software,"
-" including video support!)"
+"To add your own media, place comments, save your favourites and more, you "
+"can log in with your MediaGoblin account."
 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>)"
+#: mediagoblin/templates/mediagoblin/root.html:31
+msgid "Don't have one yet? It's easy!"
 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 "Envi de vous joindre à nous ?"
-
-#: mediagoblin/templates/mediagoblin/root.html:39
+#: mediagoblin/templates/mediagoblin/root.html:32
 #, 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\">Créez gratuitement en compte</a>\n"
-"          ou\n"
-"          <a class=\"header_submit\" href=\"http://wiki.mediagoblin.org/HackingHowto\">Installez MediaGoblin sur votre propre serveur</a>"
 
-#: mediagoblin/templates/mediagoblin/root.html:53
+#: mediagoblin/templates/mediagoblin/root.html:44
 msgid "Most recent media"
 msgstr "Tout derniers media"
 
@@ -284,9 +277,13 @@ msgstr "Tout derniers media"
 msgid "Enter your new password"
 msgstr "Entrez un nouveau mot de passe"
 
-#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:29
-msgid "Enter your username or email"
-msgstr "Entrez votre nom d'utilisateur ou votre email"
+#: 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."
@@ -327,22 +324,18 @@ msgstr ""
 msgid "Logging in failed!"
 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?"
 
-#: mediagoblin/templates/mediagoblin/auth/login.html:46
+#: mediagoblin/templates/mediagoblin/auth/login.html:36
 msgid "Create one here!"
 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 "Vous avez oublié votre mot de passe ?"
 
-#: mediagoblin/templates/mediagoblin/auth/login.html:52
-msgid "Change it!"
-msgstr "Changez-le !"
-
 #: mediagoblin/templates/mediagoblin/auth/register.html:27
 msgid "Create an account!"
 msgstr "Créer un compte!"
@@ -387,9 +380,15 @@ 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 ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:19
+msgid "Original"
+msgstr ""
 
 #: mediagoblin/templates/mediagoblin/submit/start.html:26
 msgid "Submit yer media"
@@ -399,16 +398,16 @@ msgstr "Soumettez ce média"
 msgid "Submit"
 msgstr "Soumettre"
 
-#: 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é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_confirm_delete.html:30
 #, python-format
 msgid "Really delete %(title)s?"
@@ -441,31 +440,41 @@ msgstr "Aucun média en transformation"
 msgid "These uploads failed to 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é."
 
-#: 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."
@@ -473,7 +482,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 "
@@ -483,30 +492,25 @@ 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 (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."
@@ -514,11 +518,11 @@ msgstr ""
 "C'est là où vos médias apparaîssent, mais vous ne semblez pas avoir encore "
 "ajouté quoi que ce soit."
 
-#: mediagoblin/templates/mediagoblin/user_pages/user.html: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 y avoir de média là, pour l'instant ..."
 
@@ -538,6 +542,14 @@ msgstr "Nouveaux"
 msgid "Older"
 msgstr "Anciens"
 
+#: 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 "Commentaire"
@@ -546,15 +558,23 @@ msgstr "Commentaire"
 msgid "I am sure I want to delete this"
 msgstr "Je suis sûr de vouloir supprimer cela"
 
-#: mediagoblin/user_pages/views.py:142
+#: mediagoblin/user_pages/views.py:155
 msgid "Empty comments are not allowed."
 msgstr "Les commentaires vides ne sont pas autorisés."
 
-#: mediagoblin/user_pages/views.py:148
+#: mediagoblin/user_pages/views.py:161
 msgid "Comment 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 ""
+
+#: 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 ""
 "Vous êtes sur le point de supprimer des médias d'un autre utilisateur. "
index d9fdf8d6818559c975b1a40ca3a9ce54b0ff590f..a4f1f8d710f0125164ca7b5db8af7ce7bda34071 100644 (file)
@@ -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: 2011-11-27 15:25-0600\n"
+"PO-Revision-Date: 2011-11-27 21:28+0000\n"
 "Last-Translator: cwebber <cwebber@dustycloud.org>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "MIME-Version: 1.0\n"
@@ -19,6 +19,10 @@ msgstr ""
 "Language: ia\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:49
 msgid "Username"
 msgstr "Nomine de usator"
@@ -52,7 +56,7 @@ 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
@@ -65,11 +69,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."
@@ -83,41 +95,61 @@ msgstr "Titulo"
 msgid "Tags"
 msgstr ""
 
-#: mediagoblin/edit/forms.py:31
+#: mediagoblin/edit/forms.py:30 mediagoblin/submit/forms.py:34
+msgid "Seperate tags by commas or spaces."
+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 "Sito web"
 
-#: 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."
+#: mediagoblin/edit/views.py:171
+msgid "Wrong password"
+msgstr ""
+
+#: mediagoblin/edit/views.py:192
+msgid "Profile edited!"
+msgstr ""
+
+#: mediagoblin/media_types/__init__.py:61
+msgid "Could not find any file extension in \"{filename}\""
 msgstr ""
 
 #: mediagoblin/submit/forms.py:25
@@ -128,16 +160,16 @@ 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!"
+#: mediagoblin/submit/views.py:127
+msgid "Woohoo! Submitted!"
 msgstr ""
 
-#: mediagoblin/submit/views.py:121
-msgid "Woohoo! Submitted!"
+#: mediagoblin/submit/views.py:133
+msgid "Invalid file type."
 msgstr ""
 
 #: mediagoblin/templates/mediagoblin/404.html:21
@@ -158,29 +190,29 @@ msgstr ""
 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:49
 msgid "MediaGoblin logo"
 msgstr ""
 
-#: 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!"
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "Verify your email!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:72
+msgid "log out"
 msgstr ""
 
-#: mediagoblin/templates/mediagoblin/base.html:73
+#: 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 "Initiar session"
 
-#: 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"
@@ -191,57 +223,32 @@ msgid "Explore"
 msgstr ""
 
 #: mediagoblin/templates/mediagoblin/root.html:27
-msgid "Hi there, media lover! MediaGoblin is..."
+msgid "Hi there, welcome to this MediaGoblin site!"
 msgstr ""
 
-#: mediagoblin/templates/mediagoblin/root.html:29
-msgid "The perfect place for your media!"
+#: mediagoblin/templates/mediagoblin/root.html:28
+msgid "Your finest source for all goblin-related media."
 msgstr ""
 
-#: mediagoblin/templates/mediagoblin/root.html:30
+#: mediagoblin/templates/mediagoblin/root.html:29
 msgid ""
-"A place for people to collaborate and show off original and derived "
-"creations!"
+"To add your own media, place comments, save your favourites and more, you "
+"can log in with your MediaGoblin account."
 msgstr ""
 
 #: mediagoblin/templates/mediagoblin/root.html:31
-msgid ""
-"Free, as in freedom. (We’re a <a href=\"http://gnu.org\">GNU</a> project, "
-"after all.)"
+msgid "Don't have one yet? It's easy!"
 msgstr ""
 
 #: mediagoblin/templates/mediagoblin/root.html:32
-msgid ""
-"Aiming to make the world a better place through decentralization and "
-"(eventually, coming soon!) federation!"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:33
-msgid ""
-"Built for extensibility.  (Multiple media types coming soon to the software,"
-" including video support!)"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:34
-msgid ""
-"Powered by people like you.  (<a "
-"href=\"http://mediagoblin.org/pages/join.html\">You can help us improve this"
-" software!</a>)"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:38
-msgid "Excited to join us?"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:39
 #, python-format
 msgid ""
-"<a class=\"header_submit_highlight\" href=\"%(register_url)s\">Create a free account</a>\n"
+"<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 ""
 
-#: mediagoblin/templates/mediagoblin/root.html:53
+#: mediagoblin/templates/mediagoblin/root.html:44
 msgid "Most recent media"
 msgstr ""
 
@@ -249,8 +256,12 @@ msgstr ""
 msgid "Enter your new password"
 msgstr ""
 
-#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:29
-msgid "Enter your username or email"
+#: 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
@@ -280,22 +291,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 "Crear un conto!"
@@ -335,8 +342,14 @@ msgstr ""
 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/video.html:19
+msgid "Original"
 msgstr ""
 
 #: mediagoblin/templates/mediagoblin/submit/start.html:26
@@ -347,14 +360,14 @@ msgstr ""
 msgid "Submit"
 msgstr ""
 
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
 #, python-format
-msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
+msgid "%(username)s'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/gallery.html:37
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
 msgstr ""
 
 #: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
@@ -387,75 +400,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 "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: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 ""
 
-#: 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 ""
 
@@ -475,6 +493,14 @@ msgstr ""
 msgid "Older"
 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 "Commento"
@@ -483,15 +509,23 @@ msgstr "Commento"
 msgid "I am sure I want to delete this"
 msgstr ""
 
-#: mediagoblin/user_pages/views.py:142
+#: mediagoblin/user_pages/views.py:155
 msgid "Empty comments are not allowed."
 msgstr ""
 
-#: mediagoblin/user_pages/views.py:148
+#: mediagoblin/user_pages/views.py:161
 msgid "Comment 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 ""
 
index 183d09ed26a4d97842f2ea5ef05bb8dc4281e928..25700f8f77590c54571fbfa702c8b053fad51d88 100644 (file)
@@ -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: 2011-11-27 15:25-0600\n"
+"PO-Revision-Date: 2011-11-27 21:28+0000\n"
 "Last-Translator: cwebber <cwebber@dustycloud.org>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "MIME-Version: 1.0\n"
@@ -19,6 +19,10 @@ msgstr ""
 "Language: it\n"
 "Plural-Forms: nplurals=2; plural=(n != 1)\n"
 
+#: 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:49
 msgid "Username"
 msgstr "Nome utente"
@@ -52,8 +56,8 @@ 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 ""
 
 #: mediagoblin/auth/views.py:179
 msgid ""
@@ -67,11 +71,19 @@ msgstr ""
 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: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 "Rispedisci email di verifica"
 
-#: 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."
@@ -85,44 +97,64 @@ msgstr "Titolo"
 msgid "Tags"
 msgstr "Tags"
 
-#: mediagoblin/edit/forms.py:31
+#: mediagoblin/edit/forms.py:30 mediagoblin/submit/forms.py:34
+msgid "Seperate tags by commas or spaces."
+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 "Bio"
 
-#: mediagoblin/edit/forms.py:43
+#: mediagoblin/edit/forms.py:45
 msgid "Website"
 msgstr "Sito web"
 
-#: 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 ""
 "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:171
+msgid "Wrong password"
+msgstr ""
+
+#: mediagoblin/edit/views.py:192
+msgid "Profile edited!"
+msgstr ""
+
+#: mediagoblin/media_types/__init__.py:61
+msgid "Could not find any file extension in \"{filename}\""
+msgstr ""
 
 #: mediagoblin/submit/forms.py:25
 msgid "File"
@@ -132,18 +164,18 @@ msgstr "Documento"
 msgid "Description of this work"
 msgstr "Descrizione di questo lavoro"
 
-#: mediagoblin/submit/views.py:46
+#: mediagoblin/submit/views.py:49
 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:127
 msgid "Woohoo! Submitted!"
 msgstr "Evviva! "
 
+#: mediagoblin/submit/views.py:133
+msgid "Invalid file type."
+msgstr ""
+
 #: mediagoblin/templates/mediagoblin/404.html:21
 msgid "Oops!"
 msgstr "Oops!"
@@ -164,29 +196,29 @@ msgstr ""
 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:49
 msgid "MediaGoblin logo"
 msgstr "MediaGoblin logo"
 
-#: mediagoblin/templates/mediagoblin/base.html:52
+#: mediagoblin/templates/mediagoblin/base.html:54
 msgid "Submit media"
 msgstr "Inoltra file multimediale"
 
-#: mediagoblin/templates/mediagoblin/base.html:63
-msgid "verify your email!"
-msgstr "verifica il tuo indirizzo email!"
+#: 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 "Accedi"
 
-#: 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"
@@ -199,65 +231,32 @@ 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: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!"
+msgid "Hi there, welcome to this MediaGoblin site!"
 msgstr ""
-"Un posto per collaborare con altri e mostrare le proprie creazioni originali"
-" e derivate!"
 
-#: mediagoblin/templates/mediagoblin/root.html:31
-msgid ""
-"Free, as in freedom. (We’re a <a href=\"http://gnu.org\">GNU</a> project, "
-"after all.)"
+#: mediagoblin/templates/mediagoblin/root.html:28
+msgid "Your finest source for all goblin-related media."
 msgstr ""
-"Libero, come in libertà. (Siamo un progetto <a "
-"href=\"http://gnu.org\">GNU</a>, dopotutto.)"
 
-#: 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
+#: mediagoblin/templates/mediagoblin/root.html:29
 msgid ""
-"Built for extensibility.  (Multiple media types coming soon to the software,"
-" including video support!)"
+"To add your own media, place comments, save your favourites and more, you "
+"can log in with your MediaGoblin account."
 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>)"
+#: mediagoblin/templates/mediagoblin/root.html:31
+msgid "Don't have one yet? It's easy!"
 msgstr ""
 
-#: mediagoblin/templates/mediagoblin/root.html:38
-msgid "Excited to join us?"
-msgstr "Eccitato di unirti a noi?"
-
-#: mediagoblin/templates/mediagoblin/root.html:39
+#: mediagoblin/templates/mediagoblin/root.html:32
 #, 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 ""
 
-#: mediagoblin/templates/mediagoblin/root.html:53
+#: mediagoblin/templates/mediagoblin/root.html:44
 msgid "Most recent media"
 msgstr "Documenti multimediali più recenti"
 
@@ -265,9 +264,13 @@ msgstr "Documenti multimediali più recenti"
 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/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."
@@ -296,22 +299,18 @@ msgstr ""
 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
 msgid "Create an account!"
 msgstr "Crea un account!"
@@ -356,9 +355,15 @@ msgstr "Salva i cambiamenti"
 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 ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:19
+msgid "Original"
+msgstr ""
 
 #: mediagoblin/templates/mediagoblin/submit/start.html:26
 msgid "Submit yer media"
@@ -368,16 +373,16 @@ msgstr "Inoltra documento multimediale"
 msgid "Submit"
 msgstr "Conferma"
 
-#: 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 "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_confirm_delete.html:30
 #, python-format
 msgid "Really delete %(title)s?"
@@ -408,30 +413,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 +454,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 +463,25 @@ 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:119
 msgid "Edit profile"
 msgstr "Modifica profilo"
 
-#: 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 "Questo utente non ha (ancora) compilato il proprio profilo."
 
-#: 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 "Visualizza tutti i file multimediali di %(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."
@@ -479,11 +489,11 @@ 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
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:152
 msgid "Add media"
 msgstr "Aggiungi documenti multimediali"
 
-#: 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 "Non sembra ci sia ancora nessun documento multimediali qui.."
 
@@ -503,6 +513,14 @@ msgstr "Più nuovo"
 msgid "Older"
 msgstr "Più vecchio"
 
+#: 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 "Commento"
@@ -511,15 +529,23 @@ msgstr "Commento"
 msgid "I am sure I want to delete this"
 msgstr "Sono sicuro di volerlo cancellare"
 
-#: mediagoblin/user_pages/views.py:142
+#: mediagoblin/user_pages/views.py:155
 msgid "Empty comments are not allowed."
 msgstr ""
 
-#: mediagoblin/user_pages/views.py:148
+#: mediagoblin/user_pages/views.py:161
 msgid "Comment 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 ""
 "Stai cancellando un documento multimediale di un altro utente. Procedi con "
index 59262d829ba14536ca4c5900c4ec59420bde7fb2..f2989e0ee9f4444f8e91fdfe3d9409a0a9ad612b 100644 (file)
@@ -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: 2011-11-27 15:25-0600\n"
+"PO-Revision-Date: 2011-11-27 21:28+0000\n"
 "Last-Translator: cwebber <cwebber@dustycloud.org>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "MIME-Version: 1.0\n"
@@ -19,6 +19,10 @@ msgstr ""
 "Language: ja\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 "ユーザネーム"
@@ -52,7 +56,7 @@ 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
@@ -65,11 +69,19 @@ msgstr "メアドが確認されています。これで、ログインしてプ
 msgid "The verification key or user id is incorrect"
 msgstr "検証キーまたはユーザーIDが間違っています"
 
-#: 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."
@@ -83,41 +95,61 @@ msgstr "タイトル"
 msgid "Tags"
 msgstr "タグ"
 
-#: mediagoblin/edit/forms.py:31
+#: mediagoblin/edit/forms.py:30 mediagoblin/submit/forms.py:34
+msgid "Seperate tags by commas or spaces."
+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 "URL"
 
-#: 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."
+#: mediagoblin/edit/views.py:171
+msgid "Wrong password"
+msgstr ""
+
+#: mediagoblin/edit/views.py:192
+msgid "Profile edited!"
+msgstr ""
+
+#: mediagoblin/media_types/__init__.py:61
+msgid "Could not find any file extension in \"{filename}\""
 msgstr ""
 
 #: mediagoblin/submit/forms.py:25
@@ -128,18 +160,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 ""
@@ -158,29 +190,29 @@ msgstr ""
 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:49
 msgid "MediaGoblin logo"
 msgstr ""
 
-#: 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:72
+msgid "log out"
+msgstr ""
 
-#: mediagoblin/templates/mediagoblin/base.html:73
+#: 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"
@@ -191,57 +223,32 @@ msgid "Explore"
 msgstr ""
 
 #: mediagoblin/templates/mediagoblin/root.html:27
-msgid "Hi there, media lover! MediaGoblin is..."
+msgid "Hi there, welcome to this MediaGoblin site!"
 msgstr ""
 
-#: mediagoblin/templates/mediagoblin/root.html:29
-msgid "The perfect place for your media!"
+#: mediagoblin/templates/mediagoblin/root.html:28
+msgid "Your finest source for all goblin-related media."
 msgstr ""
 
-#: mediagoblin/templates/mediagoblin/root.html:30
+#: mediagoblin/templates/mediagoblin/root.html:29
 msgid ""
-"A place for people to collaborate and show off original and derived "
-"creations!"
+"To add your own media, place comments, save your favourites and more, you "
+"can log in with your MediaGoblin account."
 msgstr ""
 
 #: mediagoblin/templates/mediagoblin/root.html:31
-msgid ""
-"Free, as in freedom. (We’re a <a href=\"http://gnu.org\">GNU</a> project, "
-"after all.)"
+msgid "Don't have one yet? It's easy!"
 msgstr ""
 
 #: mediagoblin/templates/mediagoblin/root.html:32
-msgid ""
-"Aiming to make the world a better place through decentralization and "
-"(eventually, coming soon!) federation!"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:33
-msgid ""
-"Built for extensibility.  (Multiple media types coming soon to the software,"
-" including video support!)"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:34
-msgid ""
-"Powered by people like you.  (<a "
-"href=\"http://mediagoblin.org/pages/join.html\">You can help us improve this"
-" software!</a>)"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:38
-msgid "Excited to join us?"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:39
 #, python-format
 msgid ""
-"<a class=\"header_submit_highlight\" href=\"%(register_url)s\">Create a free account</a>\n"
+"<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 ""
 
-#: mediagoblin/templates/mediagoblin/root.html:53
+#: mediagoblin/templates/mediagoblin/root.html:44
 msgid "Most recent media"
 msgstr ""
 
@@ -249,8 +256,12 @@ msgstr ""
 msgid "Enter your new password"
 msgstr ""
 
-#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:29
-msgid "Enter your username or email"
+#: 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
@@ -280,22 +291,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 "アカウントを作成!"
@@ -340,9 +347,15 @@ 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 ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:19
+msgid "Original"
+msgstr ""
 
 #: mediagoblin/templates/mediagoblin/submit/start.html:26
 msgid "Submit yer media"
@@ -352,16 +365,16 @@ msgstr "コンテンツを投稿"
 msgid "Submit"
 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_confirm_delete.html:30
 #, python-format
 msgid "Really delete %(title)s?"
@@ -392,75 +405,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 ""
 
@@ -480,6 +498,14 @@ msgstr ""
 msgid "Older"
 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 ""
@@ -488,15 +514,23 @@ msgstr ""
 msgid "I am sure I want to delete this"
 msgstr ""
 
-#: mediagoblin/user_pages/views.py:142
+#: mediagoblin/user_pages/views.py:155
 msgid "Empty comments are not allowed."
 msgstr ""
 
-#: mediagoblin/user_pages/views.py:148
+#: mediagoblin/user_pages/views.py:161
 msgid "Comment 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 ""
 
index 618daf6f427eb0963a8bf6266c935d980be8f1c3..849570149a12047c7ea6eb271fc4464f492ea766 100644 (file)
@@ -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: 2011-11-27 15:25-0600\n"
+"PO-Revision-Date: 2011-11-27 21:28+0000\n"
 "Last-Translator: cwebber <cwebber@dustycloud.org>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "MIME-Version: 1.0\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 ""
+
 #: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:49
 msgid "Username"
 msgstr "Gebruikersnaam"
@@ -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 ""
 
 #: mediagoblin/auth/views.py:179
 msgid ""
@@ -67,11 +71,19 @@ 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 ""
+
+#: 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 "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."
@@ -85,44 +97,64 @@ msgstr "Titel"
 msgid "Tags"
 msgstr "Etiket"
 
-#: mediagoblin/edit/forms.py:31
+#: mediagoblin/edit/forms.py:30 mediagoblin/submit/forms.py:34
+msgid "Seperate tags by commas or spaces."
+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 "Bio"
 
-#: mediagoblin/edit/forms.py:43
+#: mediagoblin/edit/forms.py:45
 msgid "Website"
 msgstr "Website"
 
-#: 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 ""
 "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."
+#: mediagoblin/edit/views.py:171
+msgid "Wrong password"
+msgstr ""
+
+#: mediagoblin/edit/views.py:192
+msgid "Profile edited!"
+msgstr ""
+
+#: mediagoblin/media_types/__init__.py:61
+msgid "Could not find any file extension in \"{filename}\""
 msgstr ""
 
 #: mediagoblin/submit/forms.py:25
@@ -133,18 +165,18 @@ msgstr "Bestand"
 msgid "Description of this work"
 msgstr ""
 
-#: 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 ""
+
 #: mediagoblin/templates/mediagoblin/404.html:21
 msgid "Oops!"
 msgstr ""
@@ -163,29 +195,29 @@ msgstr ""
 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:49
 msgid "MediaGoblin logo"
 msgstr ""
 
-#: 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 ""
+
+#: mediagoblin/templates/mediagoblin/base.html:72
+msgid "log out"
+msgstr ""
 
-#: mediagoblin/templates/mediagoblin/base.html:73
+#: 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"
@@ -196,57 +228,32 @@ msgid "Explore"
 msgstr ""
 
 #: mediagoblin/templates/mediagoblin/root.html:27
-msgid "Hi there, media lover! MediaGoblin is..."
+msgid "Hi there, welcome to this MediaGoblin site!"
 msgstr ""
 
-#: mediagoblin/templates/mediagoblin/root.html:29
-msgid "The perfect place for your media!"
+#: mediagoblin/templates/mediagoblin/root.html:28
+msgid "Your finest source for all goblin-related media."
 msgstr ""
 
-#: mediagoblin/templates/mediagoblin/root.html:30
+#: mediagoblin/templates/mediagoblin/root.html:29
 msgid ""
-"A place for people to collaborate and show off original and derived "
-"creations!"
+"To add your own media, place comments, save your favourites and more, you "
+"can log in with your MediaGoblin account."
 msgstr ""
 
 #: mediagoblin/templates/mediagoblin/root.html:31
-msgid ""
-"Free, as in freedom. (We’re a <a href=\"http://gnu.org\">GNU</a> project, "
-"after all.)"
+msgid "Don't have one yet? It's easy!"
 msgstr ""
 
 #: mediagoblin/templates/mediagoblin/root.html:32
-msgid ""
-"Aiming to make the world a better place through decentralization and "
-"(eventually, coming soon!) federation!"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:33
-msgid ""
-"Built for extensibility.  (Multiple media types coming soon to the software,"
-" including video support!)"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:34
-msgid ""
-"Powered by people like you.  (<a "
-"href=\"http://mediagoblin.org/pages/join.html\">You can help us improve this"
-" software!</a>)"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:38
-msgid "Excited to join us?"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:39
 #, python-format
 msgid ""
-"<a class=\"header_submit_highlight\" href=\"%(register_url)s\">Create a free account</a>\n"
+"<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 ""
 
-#: mediagoblin/templates/mediagoblin/root.html:53
+#: mediagoblin/templates/mediagoblin/root.html:44
 msgid "Most recent media"
 msgstr ""
 
@@ -254,8 +261,12 @@ msgstr ""
 msgid "Enter your new password"
 msgstr ""
 
-#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:29
-msgid "Enter your username or email"
+#: 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
@@ -285,22 +296,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 "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 ""
-
 #: mediagoblin/templates/mediagoblin/auth/register.html:27
 msgid "Create an account!"
 msgstr "Maak een account aan!"
@@ -342,9 +349,15 @@ 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 ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:19
+msgid "Original"
+msgstr ""
 
 #: mediagoblin/templates/mediagoblin/submit/start.html:26
 msgid "Submit yer media"
@@ -354,16 +367,16 @@ msgstr "Voeg media toe"
 msgid "Submit"
 msgstr "Voeg toe"
 
-#: 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 "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_confirm_delete.html:30
 #, python-format
 msgid "Really delete %(title)s?"
@@ -394,37 +407,47 @@ 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 "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 ""
 
-#: 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 ""
 "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 ""
 
-#: 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,40 +456,35 @@ 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 ""
 
-#: 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 ""
 
-#: 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 ""
 
-#: 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 ""
 
@@ -486,6 +504,14 @@ msgstr ""
 msgid "Older"
 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 "Commentaar"
@@ -494,15 +520,23 @@ msgstr "Commentaar"
 msgid "I am sure I want to delete this"
 msgstr ""
 
-#: mediagoblin/user_pages/views.py:142
+#: mediagoblin/user_pages/views.py:155
 msgid "Empty comments are not allowed."
 msgstr ""
 
-#: mediagoblin/user_pages/views.py:148
+#: mediagoblin/user_pages/views.py:161
 msgid "Comment 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 ""
 
index c74e1dd0700b79a558d4f2bd3591e4da9f3e0662..21cfdda54f1808be1bb94151a5559de2b6d1460a 100644 (file)
@@ -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: 2011-11-27 15:25-0600\n"
+"PO-Revision-Date: 2011-11-27 21:28+0000\n"
 "Last-Translator: cwebber <cwebber@dustycloud.org>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "MIME-Version: 1.0\n"
@@ -19,6 +19,10 @@ msgstr ""
 "Language: nn_NO\n"
 "Plural-Forms: nplurals=2; plural=(n != 1)\n"
 
+#: 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:49
 msgid "Username"
 msgstr "Brukarnamn"
@@ -52,8 +56,8 @@ 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
 msgid ""
@@ -67,11 +71,19 @@ msgstr ""
 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: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 "Send ein ny stadfestingsepost."
 
-#: 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."
@@ -86,42 +98,62 @@ msgstr "Tittel"
 msgid "Tags"
 msgstr "Merkelappar"
 
-#: mediagoblin/edit/forms.py:31
+#: mediagoblin/edit/forms.py:30 mediagoblin/submit/forms.py:34
+msgid "Seperate tags by commas or spaces."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:33
 msgid "Slug"
 msgstr "Nettnamn"
 
-#: mediagoblin/edit/forms.py:32
+#: mediagoblin/edit/forms.py:34
 msgid "The slug can't be empty"
 msgstr "Nettnamnet kan ikkje vera tomt"
 
-#: 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 "Nettnamnet (adressetittel) for mediefila di. Trengst ikkje endrast."
 
-#: mediagoblin/edit/forms.py:40
+#: mediagoblin/edit/forms.py:42
 msgid "Bio"
 msgstr "Presentasjon"
 
-#: mediagoblin/edit/forms.py:43
+#: mediagoblin/edit/forms.py:45
 msgid "Website"
 msgstr "Heimeside"
 
-#: 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 "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:171
+msgid "Wrong password"
+msgstr ""
+
+#: mediagoblin/edit/views.py:192
+msgid "Profile edited!"
+msgstr ""
+
+#: mediagoblin/media_types/__init__.py:61
+msgid "Could not find any file extension in \"{filename}\""
+msgstr ""
 
 #: mediagoblin/submit/forms.py:25
 msgid "File"
@@ -131,18 +163,18 @@ msgstr "Fil"
 msgid "Description of this work"
 msgstr "Skildring av mediefila"
 
-#: mediagoblin/submit/views.py:46
+#: mediagoblin/submit/views.py:49
 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:127
 msgid "Woohoo! Submitted!"
 msgstr "Johoo! Opplasta!"
 
+#: mediagoblin/submit/views.py:133
+msgid "Invalid file type."
+msgstr ""
+
 #: mediagoblin/templates/mediagoblin/404.html:21
 msgid "Oops!"
 msgstr "Oops."
@@ -163,29 +195,29 @@ msgstr ""
 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:49
 msgid "MediaGoblin logo"
 msgstr "MediaGoblin"
 
-#: mediagoblin/templates/mediagoblin/base.html:52
+#: mediagoblin/templates/mediagoblin/base.html:54
 msgid "Submit media"
 msgstr "Last opp"
 
-#: mediagoblin/templates/mediagoblin/base.html:63
-msgid "verify your email!"
-msgstr "Stadfest epostadressa di"
+#: 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 "Logg inn"
 
-#: 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"
@@ -198,69 +230,32 @@ 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: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!"
+msgid "Hi there, welcome to this MediaGoblin site!"
 msgstr ""
-"Er ein plass for folk å samarbeida og visa fram sjølvlaga og vidarebygde "
-"verk."
-
-#: mediagoblin/templates/mediagoblin/root.html:31
-msgid ""
-"Free, as in freedom. (We’re a <a href=\"http://gnu.org\">GNU</a> project, "
-"after all.)"
-msgstr "Fri som i fridom (me er eit <a href=\"http://gnu.org\">GNU</a>-prosjekt)."
 
-#: mediagoblin/templates/mediagoblin/root.html:32
-msgid ""
-"Aiming to make the world a better place through decentralization and "
-"(eventually, coming soon!) federation!"
+#: mediagoblin/templates/mediagoblin/root.html:28
+msgid "Your finest source for all goblin-related media."
 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
+#: mediagoblin/templates/mediagoblin/root.html:29
 msgid ""
-"Powered by people like you.  (<a "
-"href=\"http://mediagoblin.org/pages/join.html\">You can help us improve this"
-" software!</a>)"
+"To add your own media, place comments, save your favourites and more, you "
+"can log in with your MediaGoblin account."
 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:31
+msgid "Don't have one yet? It's easy!"
+msgstr ""
 
-#: mediagoblin/templates/mediagoblin/root.html:39
+#: mediagoblin/templates/mediagoblin/root.html:32
 #, 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\">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:44
 msgid "Most recent media"
 msgstr "Nyaste mediefiler"
 
@@ -268,9 +263,13 @@ msgstr "Nyaste mediefiler"
 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/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."
@@ -308,22 +307,18 @@ 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
 msgid "Create an account!"
 msgstr "Lag ein konto."
@@ -368,9 +363,15 @@ msgstr "Lagra"
 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/video.html:19
+msgid "Original"
+msgstr ""
 
 #: mediagoblin/templates/mediagoblin/submit/start.html:26
 msgid "Submit yer media"
@@ -380,16 +381,16 @@ msgstr "Last opp"
 msgid "Submit"
 msgstr "Send"
 
-#: 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_confirm_delete.html:30
 #, python-format
 msgid "Really delete %(title)s?"
@@ -420,35 +421,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 +468,35 @@ 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:119
 msgid "Edit profile"
 msgstr "Endra 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 "Brukaren har ikkje fylt ut profilen sin (enno)."
 
-#: 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 "Sjå alle %(username)s sine mediefiler"
 
-#: 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 "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
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:152
 msgid "Add media"
 msgstr "Legg til mediefiler"
 
-#: 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 "Ser ikkje ut til at det finst nokon mediefiler her nett no."
 
@@ -510,6 +516,14 @@ msgstr "Nyare"
 msgid "Older"
 msgstr "Eldre"
 
+#: 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 "Innspel"
@@ -518,15 +532,23 @@ msgstr "Innspel"
 msgid "I am sure I want to delete this"
 msgstr "Eg er sikker eg vil sletta dette"
 
-#: mediagoblin/user_pages/views.py:142
+#: mediagoblin/user_pages/views.py:155
 msgid "Empty comments are not allowed."
-msgstr ""
+msgstr "Du må skriva noko i innspelet."
 
-#: mediagoblin/user_pages/views.py:148
+#: mediagoblin/user_pages/views.py:161
 msgid "Comment posted!"
+msgstr "Innspel lagt til."
+
+#: 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:181
+#: 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."
index 047e598b646a85285f2760b788e55472cf52432d..c4f77f8aa94189738923347390a77e29027c280b 100644 (file)
@@ -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: 2011-11-27 15:25-0600\n"
+"PO-Revision-Date: 2011-11-27 21:28+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,6 +20,10 @@ msgstr ""
 "Language: pt_BR\n"
 "Plural-Forms: nplurals=2; plural=(n > 1)\n"
 
+#: 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:49
 msgid "Username"
 msgstr "Nome de Usuário"
@@ -54,8 +58,8 @@ 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 ""
 
 #: mediagoblin/auth/views.py:179
 msgid ""
@@ -69,11 +73,19 @@ msgstr ""
 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: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 "O email de verificação foi reenviado."
 
-#: 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."
@@ -89,43 +101,63 @@ msgstr "Título"
 msgid "Tags"
 msgstr "Etiquetas"
 
-#: mediagoblin/edit/forms.py:31
+#: mediagoblin/edit/forms.py:30 mediagoblin/submit/forms.py:34
+msgid "Seperate tags by commas or spaces."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:33
 msgid "Slug"
 msgstr "Arquivo"
 
-#: mediagoblin/edit/forms.py:32
+#: mediagoblin/edit/forms.py:34
 msgid "The slug can't be empty"
 msgstr "O arquivo não pode estar vazio"
 
-#: 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 ""
 "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:42
 msgid "Bio"
 msgstr "Biografia"
 
-#: mediagoblin/edit/forms.py:43
+#: mediagoblin/edit/forms.py:45
 msgid "Website"
 msgstr "Website"
 
-#: 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 "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:171
+msgid "Wrong password"
+msgstr ""
+
+#: mediagoblin/edit/views.py:192
+msgid "Profile edited!"
+msgstr ""
+
+#: mediagoblin/media_types/__init__.py:61
+msgid "Could not find any file extension in \"{filename}\""
+msgstr ""
 
 #: mediagoblin/submit/forms.py:25
 msgid "File"
@@ -135,18 +167,18 @@ msgstr "Arquivo"
 msgid "Description of this work"
 msgstr "Descrição desse trabalho"
 
-#: mediagoblin/submit/views.py:46
+#: mediagoblin/submit/views.py:49
 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:127
 msgid "Woohoo! Submitted!"
 msgstr "Eba! Enviado!"
 
+#: mediagoblin/submit/views.py:133
+msgid "Invalid file type."
+msgstr ""
+
 #: mediagoblin/templates/mediagoblin/404.html:21
 msgid "Oops!"
 msgstr "Oops"
@@ -167,29 +199,29 @@ msgstr ""
 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:49
 msgid "MediaGoblin logo"
 msgstr "Logo MediaGoblin"
 
-#: mediagoblin/templates/mediagoblin/base.html:52
+#: mediagoblin/templates/mediagoblin/base.html:54
 msgid "Submit media"
 msgstr "Enviar mídia"
 
-#: mediagoblin/templates/mediagoblin/base.html:63
-msgid "verify your email!"
-msgstr "Verifique seu email!"
+#: 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 "Entrar"
 
-#: 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"
@@ -202,71 +234,32 @@ 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: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!"
-
-#: mediagoblin/templates/mediagoblin/root.html:31
-msgid ""
-"Free, as in freedom. (We’re a <a href=\"http://gnu.org\">GNU</a> project, "
-"after all.)"
+msgid "Hi there, welcome to this MediaGoblin site!"
 msgstr ""
-"Livre como a liberdade. (Afinal, somos um projeto <a "
-"href=\"http://gnu.org\">GNU</a>)"
 
-#: mediagoblin/templates/mediagoblin/root.html:32
-msgid ""
-"Aiming to make the world a better place through decentralization and "
-"(eventually, coming soon!) federation!"
+#: mediagoblin/templates/mediagoblin/root.html:28
+msgid "Your finest source for all goblin-related media."
 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
+#: mediagoblin/templates/mediagoblin/root.html:29
 msgid ""
-"Built for extensibility.  (Multiple media types coming soon to the software,"
-" including video support!)"
+"To add your own media, place comments, save your favourites and more, you "
+"can log in with your MediaGoblin account."
 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>)"
+#: mediagoblin/templates/mediagoblin/root.html:31
+msgid "Don't have one yet? It's easy!"
 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
+#: mediagoblin/templates/mediagoblin/root.html:32
 #, 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\"> 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:44
 msgid "Most recent media"
 msgstr "Mídia mais recente"
 
@@ -274,9 +267,13 @@ msgstr "Mídia mais recente"
 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/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."
@@ -315,22 +312,18 @@ 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
 msgid "Create an account!"
 msgstr "Criar uma conta!"
@@ -375,9 +368,15 @@ msgstr "Salvar mudanças"
 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/video.html:19
+msgid "Original"
+msgstr ""
 
 #: mediagoblin/templates/mediagoblin/submit/start.html:26
 msgid "Submit yer media"
@@ -387,16 +386,16 @@ msgstr "Envie sua mídia"
 msgid "Submit"
 msgstr "Enviar"
 
-#: 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_confirm_delete.html:30
 #, python-format
 msgid "Really delete %(title)s?"
@@ -428,29 +427,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 +467,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 +476,25 @@ 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:119
 msgid "Edit profile"
 msgstr "Editar perfil"
 
-#: 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 "Esse usuário não preencheu seu perfil (ainda)."
 
-#: 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 "Ver todas as 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."
@@ -498,11 +502,11 @@ 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
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:152
 msgid "Add media"
 msgstr "Adicionar mídia"
 
-#: 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 "Aparentemente não há nenhuma mídia aqui ainda..."
 
@@ -522,6 +526,14 @@ msgstr "Mais novo"
 msgid "Older"
 msgstr "Mais velho"
 
+#: 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 "Comentário"
@@ -530,15 +542,23 @@ msgstr "Comentário"
 msgid "I am sure I want to delete this"
 msgstr "Eu tenho certeza de que quero pagar isso"
 
-#: mediagoblin/user_pages/views.py:142
+#: mediagoblin/user_pages/views.py:155
 msgid "Empty comments are not allowed."
 msgstr ""
 
-#: mediagoblin/user_pages/views.py:148
+#: mediagoblin/user_pages/views.py:161
 msgid "Comment 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 "Você vai apagar uma mídia de outro usuário. Tenha cuidado."
 
index 01fe5c489b10ef0fa4877f234be7e74f7d085f39..96fd46d83b00f58ac49bf3f021157170263fed9b 100644 (file)
@@ -8,9 +8,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 20:49+0000\n"
-"Last-Translator: gap <gapop@hotmail.com>\n"
+"POT-Creation-Date: 2011-11-27 15:25-0600\n"
+"PO-Revision-Date: 2011-11-27 21:28+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"
@@ -19,6 +19,10 @@ msgstr ""
 "Language: ro\n"
 "Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1))\n"
 
+#: 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:49
 msgid "Username"
 msgstr "Nume de utilizator"
@@ -52,8 +56,8 @@ 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 ""
 
 #: mediagoblin/auth/views.py:179
 msgid ""
@@ -67,11 +71,19 @@ msgstr ""
 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: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 "E-mail-ul de verificare a fost retrimis."
 
-#: 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."
@@ -87,45 +99,65 @@ msgstr "Titlu"
 msgid "Tags"
 msgstr "Etichete"
 
-#: mediagoblin/edit/forms.py:31
+#: mediagoblin/edit/forms.py:30 mediagoblin/submit/forms.py:34
+msgid "Seperate tags by commas or spaces."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:33
 msgid "Slug"
 msgstr "Identificator"
 
-#: mediagoblin/edit/forms.py:32
+#: mediagoblin/edit/forms.py:34
 msgid "The slug can't be empty"
 msgstr "Identificatorul nu poate să lipsească"
 
-#: 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 ""
 "Partea din adresa acestui fișier corespunzătoare titlului. De regulă nu "
 "trebuie modificată."
 
-#: mediagoblin/edit/forms.py:40
+#: mediagoblin/edit/forms.py:42
 msgid "Bio"
 msgstr "Biografie"
 
-#: mediagoblin/edit/forms.py:43
+#: mediagoblin/edit/forms.py:45
 msgid "Website"
 msgstr "Sit Web"
 
-#: 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 ""
 "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:171
+msgid "Wrong password"
+msgstr ""
+
+#: mediagoblin/edit/views.py:192
+msgid "Profile edited!"
+msgstr ""
+
+#: mediagoblin/media_types/__init__.py:61
+msgid "Could not find any file extension in \"{filename}\""
+msgstr ""
 
 #: mediagoblin/submit/forms.py:25
 msgid "File"
@@ -135,18 +167,18 @@ msgstr "Fișier"
 msgid "Description of this work"
 msgstr "Descrierea acestui fișier"
 
-#: mediagoblin/submit/views.py:46
+#: mediagoblin/submit/views.py:49
 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:127
 msgid "Woohoo! Submitted!"
 msgstr "Gata, trimis!"
 
+#: mediagoblin/submit/views.py:133
+msgid "Invalid file type."
+msgstr ""
+
 #: mediagoblin/templates/mediagoblin/404.html:21
 msgid "Oops!"
 msgstr "Oops!"
@@ -167,29 +199,29 @@ msgstr ""
 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:49
 msgid "MediaGoblin logo"
 msgstr "logo MediaGoblin"
 
-#: mediagoblin/templates/mediagoblin/base.html:52
+#: mediagoblin/templates/mediagoblin/base.html:54
 msgid "Submit media"
 msgstr "Transmite un fișier media"
 
-#: mediagoblin/templates/mediagoblin/base.html:63
-msgid "verify your email!"
-msgstr "verifică e-mail-ul!"
+#: 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 "Autentificare"
 
-#: 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"
@@ -202,70 +234,32 @@ 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: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!"
-msgstr ""
-"Un loc unde oamenii colaborează și își expun creațiile originale și "
-"derivate!"
-
-#: mediagoblin/templates/mediagoblin/root.html:31
-msgid ""
-"Free, as in freedom. (We’re a <a href=\"http://gnu.org\">GNU</a> project, "
-"after all.)"
+msgid "Hi there, welcome to this MediaGoblin site!"
 msgstr ""
-"Liber. (Suntem un proiect <a href=\"http://gnu.org\">GNU</a>, până la urmă.)"
 
-#: mediagoblin/templates/mediagoblin/root.html:32
-msgid ""
-"Aiming to make the world a better place through decentralization and "
-"(eventually, coming soon!) federation!"
+#: mediagoblin/templates/mediagoblin/root.html:28
+msgid "Your finest source for all goblin-related media."
 msgstr ""
-"Un pas spre o lume mai bună prin descentralizare și (în curând) "
-"federalizare!"
 
-#: mediagoblin/templates/mediagoblin/root.html:33
+#: mediagoblin/templates/mediagoblin/root.html:29
 msgid ""
-"Built for extensibility.  (Multiple media types coming soon to the software,"
-" including video support!)"
+"To add your own media, place comments, save your favourites and more, you "
+"can log in with your MediaGoblin account."
 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>)"
+#: mediagoblin/templates/mediagoblin/root.html:31
+msgid "Don't have one yet? It's easy!"
 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
+#: mediagoblin/templates/mediagoblin/root.html:32
 #, 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\">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:44
 msgid "Most recent media"
 msgstr "Cele mai recente fișiere"
 
@@ -273,9 +267,13 @@ msgstr "Cele mai recente fișiere"
 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/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."
@@ -313,22 +311,18 @@ 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
 msgid "Create an account!"
 msgstr "Creează un cont!"
@@ -373,9 +367,15 @@ msgstr "Salvează modificările"
 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 ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:19
+msgid "Original"
+msgstr ""
 
 #: mediagoblin/templates/mediagoblin/submit/start.html:26
 msgid "Submit yer media"
@@ -385,16 +385,16 @@ msgstr "Trimite fișierele tale media"
 msgid "Submit"
 msgstr "Trimite"
 
-#: 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 "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_confirm_delete.html:30
 #, python-format
 msgid "Really delete %(title)s?"
@@ -425,29 +425,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
+#: 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 "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ă confirmarea adresei de e-mail"
 
-#: 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 "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 +465,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 +474,25 @@ 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:119
 msgid "Edit profile"
 msgstr "Editare 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 "Acest utilizator nu și-a completat (încă) profilul."
 
-#: 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 "Vezi toate fișierele media ale lui %(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."
@@ -495,11 +500,11 @@ 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
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:152
 msgid "Add media"
 msgstr "Trimite fișier"
 
-#: 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 "Nu pare să existe niciun fișier media deocamdată..."
 
@@ -519,6 +524,14 @@ msgstr "Mai noi"
 msgid "Older"
 msgstr "Mai vechi"
 
+#: 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 "Scrie un comentariu"
@@ -527,15 +540,23 @@ msgstr "Scrie un comentariu"
 msgid "I am sure I want to delete this"
 msgstr "Sunt sigur că doresc să șterg"
 
-#: mediagoblin/user_pages/views.py:142
+#: mediagoblin/user_pages/views.py:155
 msgid "Empty comments are not allowed."
 msgstr "Comentariul trebuie să aibă un conținut."
 
-#: mediagoblin/user_pages/views.py:148
+#: mediagoblin/user_pages/views.py:161
 msgid "Comment posted!"
 msgstr "Comentariul a fost transmis."
 
-#: 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 ""
 "Urmează să ștergi fișierele media ale unui alt utilizator. Se recomandă "
index f4bfbd67402782a5eb31c802d707e30224772243..9fb1ce0844d174a5157baa00ed0fb62f5dd3221a 100644 (file)
@@ -8,9 +8,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-04 11:13+0000\n"
-"Last-Translator: aleksejrs <deletesoftware@yandex.ru>\n"
+"POT-Creation-Date: 2011-11-27 15:25-0600\n"
+"PO-Revision-Date: 2011-11-27 21:28+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"
@@ -19,6 +19,10 @@ 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/processing.py:143
+msgid "Invalid file given for media type."
+msgstr "Неправильный формат файла."
+
 #: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:49
 msgid "Username"
 msgstr "Логин"
@@ -52,8 +56,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 ""
@@ -67,11 +71,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."
@@ -88,45 +100,65 @@ msgstr "Название"
 msgid "Tags"
 msgstr "Метки"
 
-#: mediagoblin/edit/forms.py:31
+#: mediagoblin/edit/forms.py:30 mediagoblin/submit/forms.py:34
+msgid "Seperate tags by commas or spaces."
+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:61
+msgid "Could not find any file extension in \"{filename}\""
+msgstr ""
 
 #: mediagoblin/submit/forms.py:25
 msgid "File"
@@ -136,18 +168,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 "Ой!"
@@ -160,35 +192,35 @@ 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: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:72
+msgid "log out"
+msgstr ""
 
-#: mediagoblin/templates/mediagoblin/base.html:73
+#: 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"
@@ -201,66 +233,32 @@ msgid "Explore"
 msgstr ""
 
 #: mediagoblin/templates/mediagoblin/root.html:27
-msgid "Hi there, media lover! MediaGoblin is..."
-msgstr "Привет, любитель мультимедиа! MediaGoblin…"
-
-#: 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!"
+msgid "Hi there, welcome to this MediaGoblin site!"
 msgstr ""
-"Место для того, чтобы совместно работать или просто показать свои "
-"оригинальные и/или заимствованные создания!"
-
-#: mediagoblin/templates/mediagoblin/root.html:31
-msgid ""
-"Free, as in freedom. (We’re a <a href=\"http://gnu.org\">GNU</a> project, "
-"after all.)"
-msgstr "Свободное ПО. (Мы же проект <a href=\"http://gnu.org\">GNU</a>.)"
 
-#: 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!)"
+#: mediagoblin/templates/mediagoblin/root.html:28
+msgid "Your finest source for all goblin-related media."
 msgstr ""
-"Рассчитан на расширяемость.  (В программе скоро должна появиться поддержка "
-"других видов мультимедиа, таких как видео!)"
 
-#: mediagoblin/templates/mediagoblin/root.html:34
+#: mediagoblin/templates/mediagoblin/root.html:29
 msgid ""
-"Powered by people like you.  (<a "
-"href=\"http://mediagoblin.org/pages/join.html\">You can help us improve this"
-" software!</a>)"
+"To add your own media, place comments, save your favourites and more, you "
+"can log in with your MediaGoblin account."
 msgstr ""
-"Поддерживается такими же, как и ты.  (<a "
-"href=\"http://mediagoblin.org/pages/join.html\">Ты можешь помочь сделать это"
-" ПО лучше!</a>)"
 
-#: mediagoblin/templates/mediagoblin/root.html:38
-msgid "Excited to join us?"
+#: mediagoblin/templates/mediagoblin/root.html:31
+msgid "Don't have one yet? It's easy!"
 msgstr ""
 
-#: mediagoblin/templates/mediagoblin/root.html:39
+#: mediagoblin/templates/mediagoblin/root.html:32
 #, 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 ""
 
-#: mediagoblin/templates/mediagoblin/root.html:53
+#: mediagoblin/templates/mediagoblin/root.html:44
 msgid "Most recent media"
 msgstr "Самые новые файлы"
 
@@ -268,18 +266,24 @@ 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/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."
-msgstr ""
+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/fp_verification_email.txt:19
 #, python-format
@@ -294,27 +298,32 @@ 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
 msgid "Create an account!"
 msgstr "Создать аккаунт!"
@@ -359,9 +368,15 @@ 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 ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:19
+msgid "Original"
+msgstr ""
 
 #: mediagoblin/templates/mediagoblin/submit/start.html:26
 msgid "Submit yer media"
@@ -371,16 +386,16 @@ msgstr "Загрузить файл(ы)"
 msgid "Submit"
 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_confirm_delete.html:30
 #, python-format
 msgid "Really delete %(title)s?"
@@ -412,38 +427,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 +477,35 @@ 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 "Пока что тут файлов нет…"
 
@@ -505,6 +525,14 @@ msgstr "Более новые"
 msgid "Older"
 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 "Комментарий"
@@ -513,15 +541,23 @@ msgstr "Комментарий"
 msgid "I am sure I want to delete this"
 msgstr "Я уверен, что хочу удалить это"
 
-#: mediagoblin/user_pages/views.py:142
+#: mediagoblin/user_pages/views.py:155
 msgid "Empty comments are not allowed."
 msgstr "Empty comments are not allowed."
 
-#: mediagoblin/user_pages/views.py:148
+#: mediagoblin/user_pages/views.py:161
 msgid "Comment 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:181
+#: mediagoblin/user_pages/views.py:198
 msgid "You are about to delete another user's media. Proceed with caution."
 msgstr "Вы на пороге удаления файла другого пользователя. Будьте осторожны."
 
index d3196b9c9b1f842a79898a4f6775529f824baf4c..bee7b3b59bf3d71ffafcb1d32755b8b315f65340 100644 (file)
@@ -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: 2011-11-27 15:25-0600\n"
+"PO-Revision-Date: 2011-11-27 21:28+0000\n"
 "Last-Translator: cwebber <cwebber@dustycloud.org>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "MIME-Version: 1.0\n"
@@ -19,6 +19,10 @@ msgstr ""
 "Language: sk\n"
 "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n"
 
+#: 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:49
 msgid "Username"
 msgstr "Prihlasovacie meno"
@@ -52,8 +56,8 @@ msgid "Sorry, a user with that name already exists."
 msgstr "Prepáč, rovnaké prihlasovacie meno už niekto používa."
 
 #: mediagoblin/auth/views.py:77
-msgid "Sorry, that email address has already been taken."
-msgstr "Prepáč, daná e-mailová adresa už bola pri registrácii využitá."
+msgid "Sorry, a user with that email address already exists."
+msgstr ""
 
 #: mediagoblin/auth/views.py:179
 msgid ""
@@ -67,11 +71,19 @@ msgstr ""
 msgid "The verification key or user id is incorrect"
 msgstr "Nesprávny overovací kľúč alebo používateľské ID"
 
-#: 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 "Opätovne zaslať overovaciu správu."
 
-#: 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."
@@ -87,42 +99,62 @@ msgstr "Nadpis"
 msgid "Tags"
 msgstr "Štítky"
 
-#: mediagoblin/edit/forms.py:31
+#: mediagoblin/edit/forms.py:30 mediagoblin/submit/forms.py:34
+msgid "Seperate tags by commas or spaces."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:33
 msgid "Slug"
 msgstr "Unikátna časť adresy"
 
-#: mediagoblin/edit/forms.py:32
+#: mediagoblin/edit/forms.py:34
 msgid "The slug can't be empty"
 msgstr "Unikátna časť adresy musí byť vyplnená"
 
-#: 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 "Titulná časť URL odkazu média. Zvyčajne to meniť nemusíš."
 
-#: 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 "Webstránka"
 
-#: 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 "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."
 
-#: 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."
 
-#: 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:171
+msgid "Wrong password"
+msgstr ""
+
+#: mediagoblin/edit/views.py:192
+msgid "Profile edited!"
+msgstr ""
+
+#: mediagoblin/media_types/__init__.py:61
+msgid "Could not find any file extension in \"{filename}\""
+msgstr ""
 
 #: mediagoblin/submit/forms.py:25
 msgid "File"
@@ -132,18 +164,18 @@ msgstr "Súbor"
 msgid "Description of this work"
 msgstr "Charakteristika diela"
 
-#: mediagoblin/submit/views.py:46
+#: mediagoblin/submit/views.py:49
 msgid "You must provide a file."
 msgstr "Poskytni 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:127
 msgid "Woohoo! Submitted!"
 msgstr "Juchú! Úspešne vložené!"
 
+#: mediagoblin/submit/views.py:133
+msgid "Invalid file type."
+msgstr ""
+
 #: mediagoblin/templates/mediagoblin/404.html:21
 msgid "Oops!"
 msgstr "Ajaj!"
@@ -164,29 +196,29 @@ msgstr ""
 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:49
 msgid "MediaGoblin logo"
 msgstr "MediaGoblin logo"
 
-#: mediagoblin/templates/mediagoblin/base.html:52
+#: mediagoblin/templates/mediagoblin/base.html:54
 msgid "Submit media"
 msgstr "Vložiť výtvor"
 
-#: mediagoblin/templates/mediagoblin/base.html:63
-msgid "verify your email!"
-msgstr "over si svoj e-mail!"
+#: 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 "Prihlásenie"
 
-#: 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"
@@ -199,71 +231,32 @@ 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: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!"
-msgstr ""
-"Miesto pre ľudí, vhodné na spoluprácu a vystavovanie tak originálnych, ako "
-"aj odvodených kreácií!"
-
-#: mediagoblin/templates/mediagoblin/root.html:31
-msgid ""
-"Free, as in freedom. (We’re a <a href=\"http://gnu.org\">GNU</a> project, "
-"after all.)"
+msgid "Hi there, welcome to this MediaGoblin site!"
 msgstr ""
-"Voľné, vo význame slobody. (Koniec-koncov, sme predsa <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!"
+#: mediagoblin/templates/mediagoblin/root.html:28
+msgid "Your finest source for all goblin-related media."
 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
+#: mediagoblin/templates/mediagoblin/root.html:29
 msgid ""
-"Built for extensibility.  (Multiple media types coming soon to the software,"
-" including video support!)"
+"To add your own media, place comments, save your favourites and more, you "
+"can log in with your MediaGoblin account."
 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>)"
+#: mediagoblin/templates/mediagoblin/root.html:31
+msgid "Don't have one yet? It's easy!"
 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
+#: mediagoblin/templates/mediagoblin/root.html:32
 #, 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\">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:44
 msgid "Most recent media"
 msgstr "Najčerstvejšie výtvory"
 
@@ -271,9 +264,13 @@ msgstr "Najčerstvejšie výtvory"
 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/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."
@@ -312,22 +309,18 @@ msgstr ""
 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!"
 
-#: 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
 msgid "Create an account!"
 msgstr "Vytvoriť účet!"
@@ -373,9 +366,15 @@ msgstr "Uložiť zmeny"
 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 ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:19
+msgid "Original"
+msgstr ""
 
 #: mediagoblin/templates/mediagoblin/submit/start.html:26
 msgid "Submit yer media"
@@ -385,16 +384,16 @@ msgstr "Vlož svoj výtvor"
 msgid "Submit"
 msgstr "Vložiť"
 
-#: 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\">Výtvory, ktoré vlastní %(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_confirm_delete.html:30
 #, python-format
 msgid "Really delete %(title)s?"
@@ -425,29 +424,39 @@ msgstr "Žiadne médiá v procese spracovania"
 msgid "These uploads failed to process:"
 msgstr "Nasledovné vloženia 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áč, 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ť."
 
-#: 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"
 
-#: 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 +464,7 @@ 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 "
@@ -464,41 +473,36 @@ msgstr ""
 "Pokiaľ si to ty, ale už nemáš overovaciu 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."
 
-#: 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 "Upraviť 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 "Dotyčná osoba ešte nevyplnila svoj profil (zatiaľ)."
 
-#: 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 "Zhliadnuť všetky výtvory, ktoré vlastní %(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 ""
 "Všetky tvoje výtvory sa objavia práve tu, ale zatiaľ nemáš nič pridané."
 
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:141
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:152
 msgid "Add media"
 msgstr "Pridať výtvor"
 
-#: 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 "Najskôr tu ešte nebudú žiadne výtvory..."
 
@@ -518,6 +522,14 @@ msgstr "Novšie"
 msgid "Older"
 msgstr "Staršie"
 
+#: 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 "Komentár"
@@ -526,15 +538,23 @@ msgstr "Komentár"
 msgid "I am sure I want to delete this"
 msgstr "Jednoznačne to chcem odstrániť"
 
-#: mediagoblin/user_pages/views.py:142
+#: mediagoblin/user_pages/views.py:155
 msgid "Empty comments are not allowed."
-msgstr ""
+msgstr "Komentáre bez obsahu nepovolené."
 
-#: mediagoblin/user_pages/views.py:148
+#: mediagoblin/user_pages/views.py:161
 msgid "Comment posted!"
+msgstr "Komentár odoslaný!"
+
+#: 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:181
+#: 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."
 
index cba4fdd0f1fed1f4a8e0331fff84b769d081ee98..77273ebed69b38e43ddeb1e5c308c9c69c71aa64 100644 (file)
@@ -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: 2011-11-27 15:25-0600\n"
+"PO-Revision-Date: 2011-11-27 21:28+0000\n"
 "Last-Translator: cwebber <cwebber@dustycloud.org>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "MIME-Version: 1.0\n"
@@ -19,6 +19,10 @@ 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/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:49
 msgid "Username"
 msgstr "Uporabniško ime"
@@ -52,8 +56,8 @@ 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
 msgid ""
@@ -67,11 +71,19 @@ msgstr ""
 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: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 "Ponovno pošiljanje potrditvene e-pošte."
 
-#: 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."
@@ -85,42 +97,62 @@ msgstr "Naslov"
 msgid "Tags"
 msgstr "Oznake"
 
-#: mediagoblin/edit/forms.py:31
+#: mediagoblin/edit/forms.py:30 mediagoblin/submit/forms.py:34
+msgid "Seperate tags by commas or spaces."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:33
 msgid "Slug"
 msgstr "Oznaka"
 
-#: mediagoblin/edit/forms.py:32
+#: mediagoblin/edit/forms.py:34
 msgid "The slug can't be empty"
 msgstr "Oznaka ne sme biti prazna"
 
-#: 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 "Biografija"
 
-#: mediagoblin/edit/forms.py:43
+#: mediagoblin/edit/forms.py:45
 msgid "Website"
 msgstr "Spletna stran"
 
-#: 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 "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:171
+msgid "Wrong password"
+msgstr ""
+
+#: mediagoblin/edit/views.py:192
+msgid "Profile edited!"
+msgstr ""
+
+#: mediagoblin/media_types/__init__.py:61
+msgid "Could not find any file extension in \"{filename}\""
+msgstr ""
 
 #: mediagoblin/submit/forms.py:25
 msgid "File"
@@ -130,18 +162,18 @@ msgstr "Datoteka"
 msgid "Description of this work"
 msgstr ""
 
-#: mediagoblin/submit/views.py:46
+#: mediagoblin/submit/views.py:49
 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:127
 msgid "Woohoo! Submitted!"
 msgstr "Juhej! Poslano."
 
+#: mediagoblin/submit/views.py:133
+msgid "Invalid file type."
+msgstr ""
+
 #: mediagoblin/templates/mediagoblin/404.html:21
 msgid "Oops!"
 msgstr "Opa!"
@@ -162,29 +194,29 @@ msgstr ""
 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:49
 msgid "MediaGoblin logo"
 msgstr "Logotip MediaGoblin"
 
-#: mediagoblin/templates/mediagoblin/base.html:52
+#: mediagoblin/templates/mediagoblin/base.html:54
 msgid "Submit media"
 msgstr "Pošlji vsebino"
 
-#: mediagoblin/templates/mediagoblin/base.html:63
-msgid "verify your email!"
-msgstr "Preverite svojo e-pošto."
+#: 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 "Prijava"
 
-#: 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"
@@ -195,66 +227,32 @@ 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: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!"
+msgid "Hi there, welcome to this MediaGoblin site!"
 msgstr ""
-"Mesto, kjer ljudje lahko sodelujejo in razkazujejo originalne in predelane "
-"stvaritve."
 
-#: mediagoblin/templates/mediagoblin/root.html:31
-msgid ""
-"Free, as in freedom. (We’re a <a href=\"http://gnu.org\">GNU</a> project, "
-"after all.)"
+#: mediagoblin/templates/mediagoblin/root.html:28
+msgid "Your finest source for all goblin-related media."
 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
+#: mediagoblin/templates/mediagoblin/root.html:29
 msgid ""
-"Powered by people like you.  (<a "
-"href=\"http://mediagoblin.org/pages/join.html\">You can help us improve this"
-" software!</a>)"
+"To add your own media, place comments, save your favourites and more, you "
+"can log in with your MediaGoblin account."
 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?"
+#: mediagoblin/templates/mediagoblin/root.html:31
+msgid "Don't have one yet? It's easy!"
 msgstr ""
 
-#: mediagoblin/templates/mediagoblin/root.html:39
+#: mediagoblin/templates/mediagoblin/root.html:32
 #, 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 ""
 
-#: mediagoblin/templates/mediagoblin/root.html:53
+#: mediagoblin/templates/mediagoblin/root.html:44
 msgid "Most recent media"
 msgstr ""
 
@@ -262,8 +260,12 @@ msgstr ""
 msgid "Enter your new password"
 msgstr ""
 
-#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:29
-msgid "Enter your username or email"
+#: 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
@@ -293,22 +295,18 @@ 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
 msgid "Create an account!"
 msgstr "Ustvarite račun."
@@ -354,9 +352,15 @@ msgstr "Shrani spremembe"
 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/video.html:19
+msgid "Original"
+msgstr ""
 
 #: mediagoblin/templates/mediagoblin/submit/start.html:26
 msgid "Submit yer media"
@@ -366,16 +370,16 @@ msgstr "Pošljite svojo vsebino"
 msgid "Submit"
 msgstr "Pošlji"
 
-#: 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_confirm_delete.html:30
 #, python-format
 msgid "Really delete %(title)s?"
@@ -406,29 +410,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 +450,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 +459,35 @@ 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:119
 msgid "Edit profile"
 msgstr "Uredi 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 "Ta uporabnik še ni izpolnil svojega profila."
 
-#: 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 "Prikaži vso vsebino uporabnika %(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 "Tu bo prikazana vaša vsebina, a trenutno še niste dodali nič."
 
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:141
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:152
 msgid "Add media"
 msgstr "Dodaj vsebino"
 
-#: 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 "Videti je, da tu še ni nobene vsebine ..."
 
@@ -498,6 +507,14 @@ msgstr ""
 msgid "Older"
 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 "Komentar"
@@ -506,15 +523,23 @@ msgstr "Komentar"
 msgid "I am sure I want to delete this"
 msgstr ""
 
-#: mediagoblin/user_pages/views.py:142
+#: mediagoblin/user_pages/views.py:155
 msgid "Empty comments are not allowed."
 msgstr ""
 
-#: mediagoblin/user_pages/views.py:148
+#: mediagoblin/user_pages/views.py:161
 msgid "Comment 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 ""
 
index b4b2fb7b3c7319e01b021a597ac0b014967b10dc..0bdfc21cc02bc919188125cd42ac1504e8d7c8d7 100644 (file)
@@ -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: 2011-11-27 15:25-0600\n"
+"PO-Revision-Date: 2011-11-27 21:28+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,6 +18,10 @@ 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/processing.py:143
+msgid "Invalid file given for media type."
+msgstr ""
+
 #: mediagoblin/auth/forms.py:25 mediagoblin/auth/forms.py:49
 msgid "Username"
 msgstr ""
@@ -51,7 +55,7 @@ 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
@@ -64,11 +68,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."
@@ -82,41 +94,61 @@ msgstr ""
 msgid "Tags"
 msgstr ""
 
-#: mediagoblin/edit/forms.py:31
+#: mediagoblin/edit/forms.py:30 mediagoblin/submit/forms.py:34
+msgid "Seperate tags by commas or spaces."
+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."
+#: mediagoblin/edit/views.py:171
+msgid "Wrong password"
+msgstr ""
+
+#: mediagoblin/edit/views.py:192
+msgid "Profile edited!"
+msgstr ""
+
+#: mediagoblin/media_types/__init__.py:61
+msgid "Could not find any file extension in \"{filename}\""
 msgstr ""
 
 #: mediagoblin/submit/forms.py:25
@@ -127,16 +159,16 @@ 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!"
+#: mediagoblin/submit/views.py:127
+msgid "Woohoo! Submitted!"
 msgstr ""
 
-#: mediagoblin/submit/views.py:121
-msgid "Woohoo! Submitted!"
+#: mediagoblin/submit/views.py:133
+msgid "Invalid file type."
 msgstr ""
 
 #: mediagoblin/templates/mediagoblin/404.html:21
@@ -157,29 +189,29 @@ msgstr ""
 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:49
 msgid "MediaGoblin logo"
 msgstr ""
 
-#: 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!"
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "Verify your email!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:72
+msgid "log out"
 msgstr ""
 
-#: mediagoblin/templates/mediagoblin/base.html:73
+#: 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"
@@ -190,57 +222,32 @@ msgid "Explore"
 msgstr ""
 
 #: mediagoblin/templates/mediagoblin/root.html:27
-msgid "Hi there, media lover! MediaGoblin is..."
+msgid "Hi there, welcome to this MediaGoblin site!"
 msgstr ""
 
-#: mediagoblin/templates/mediagoblin/root.html:29
-msgid "The perfect place for your media!"
+#: mediagoblin/templates/mediagoblin/root.html:28
+msgid "Your finest source for all goblin-related media."
 msgstr ""
 
-#: mediagoblin/templates/mediagoblin/root.html:30
+#: mediagoblin/templates/mediagoblin/root.html:29
 msgid ""
-"A place for people to collaborate and show off original and derived "
-"creations!"
+"To add your own media, place comments, save your favourites and more, you "
+"can log in with your MediaGoblin account."
 msgstr ""
 
 #: mediagoblin/templates/mediagoblin/root.html:31
-msgid ""
-"Free, as in freedom. (We’re a <a href=\"http://gnu.org\">GNU</a> project, "
-"after all.)"
+msgid "Don't have one yet? It's easy!"
 msgstr ""
 
 #: mediagoblin/templates/mediagoblin/root.html:32
-msgid ""
-"Aiming to make the world a better place through decentralization and "
-"(eventually, coming soon!) federation!"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:33
-msgid ""
-"Built for extensibility.  (Multiple media types coming soon to the software,"
-" including video support!)"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:34
-msgid ""
-"Powered by people like you.  (<a "
-"href=\"http://mediagoblin.org/pages/join.html\">You can help us improve this"
-" software!</a>)"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:38
-msgid "Excited to join us?"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:39
 #, python-format
 msgid ""
-"<a class=\"header_submit_highlight\" href=\"%(register_url)s\">Create a free account</a>\n"
+"<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 ""
 
-#: mediagoblin/templates/mediagoblin/root.html:53
+#: mediagoblin/templates/mediagoblin/root.html:44
 msgid "Most recent media"
 msgstr ""
 
@@ -248,8 +255,12 @@ msgstr ""
 msgid "Enter your new password"
 msgstr ""
 
-#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:29
-msgid "Enter your username or email"
+#: 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
@@ -279,22 +290,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 ""
@@ -334,8 +341,14 @@ msgstr ""
 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/video.html:19
+msgid "Original"
 msgstr ""
 
 #: mediagoblin/templates/mediagoblin/submit/start.html:26
@@ -346,14 +359,14 @@ msgstr ""
 msgid "Submit"
 msgstr ""
 
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
 #, python-format
-msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
+msgid "%(username)s'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/gallery.html:37
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
 msgstr ""
 
 #: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
@@ -386,75 +399,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: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 ""
 
-#: 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 ""
 
@@ -474,6 +492,14 @@ msgstr ""
 msgid "Older"
 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 ""
@@ -482,15 +508,23 @@ msgstr ""
 msgid "I am sure I want to delete this"
 msgstr ""
 
-#: mediagoblin/user_pages/views.py:142
+#: mediagoblin/user_pages/views.py:155
 msgid "Empty comments are not allowed."
 msgstr ""
 
-#: mediagoblin/user_pages/views.py:148
+#: mediagoblin/user_pages/views.py:161
 msgid "Comment 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 ""
 
index 3ee44b180aff12e37a14934c3fa5f567855cef91..37bd36c17cdae9e530169e33073a9f5c752e9020 100644 (file)
@@ -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: 2011-11-27 15:25-0600\n"
+"PO-Revision-Date: 2011-11-27 21:28+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,6 +20,10 @@ msgstr ""
 "Language: sv\n"
 "Plural-Forms: nplurals=2; plural=(n != 1)\n"
 
+#: 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:49
 msgid "Username"
 msgstr "Användarnamn"
@@ -53,8 +57,8 @@ 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
 msgid ""
@@ -68,11 +72,19 @@ msgstr ""
 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: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 "Skickade ett nytt verifierings-email."
 
-#: 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."
@@ -88,42 +100,62 @@ msgstr "Titel"
 msgid "Tags"
 msgstr "Taggar"
 
-#: mediagoblin/edit/forms.py:31
+#: mediagoblin/edit/forms.py:30 mediagoblin/submit/forms.py:34
+msgid "Seperate tags by commas or spaces."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:33
 msgid "Slug"
 msgstr "Sökvägsnamn"
 
-#: mediagoblin/edit/forms.py:32
+#: mediagoblin/edit/forms.py:34
 msgid "The slug can't be empty"
 msgstr "Sökvägsnamnet kan inte vara tomt"
 
-#: mediagoblin/edit/forms.py:33
+#: mediagoblin/edit/forms.py:35
 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."
 
-#: mediagoblin/edit/forms.py:40
+#: mediagoblin/edit/forms.py:42
 msgid "Bio"
 msgstr "Presentation"
 
-#: mediagoblin/edit/forms.py:43
+#: mediagoblin/edit/forms.py:45
 msgid "Website"
 msgstr "Hemsida"
 
-#: 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 "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:171
+msgid "Wrong password"
+msgstr ""
+
+#: mediagoblin/edit/views.py:192
+msgid "Profile edited!"
+msgstr ""
+
+#: mediagoblin/media_types/__init__.py:61
+msgid "Could not find any file extension in \"{filename}\""
+msgstr ""
 
 #: mediagoblin/submit/forms.py:25
 msgid "File"
@@ -133,18 +165,18 @@ msgstr "Fil"
 msgid "Description of this work"
 msgstr "Beskrivning av verket"
 
-#: mediagoblin/submit/views.py:46
+#: mediagoblin/submit/views.py:49
 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:127
 msgid "Woohoo! Submitted!"
 msgstr "Tjohoo! Upladdat!"
 
+#: mediagoblin/submit/views.py:133
+msgid "Invalid file type."
+msgstr ""
+
 #: mediagoblin/templates/mediagoblin/404.html:21
 msgid "Oops!"
 msgstr "Ojoj!"
@@ -165,29 +197,29 @@ msgstr ""
 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:49
 msgid "MediaGoblin logo"
 msgstr "MediaGoblin-logotyp"
 
-#: mediagoblin/templates/mediagoblin/base.html:52
+#: mediagoblin/templates/mediagoblin/base.html:54
 msgid "Submit media"
 msgstr "Ladda upp"
 
-#: mediagoblin/templates/mediagoblin/base.html:63
-msgid "verify your email!"
-msgstr "Verifiera din e-postadress!"
+#: 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 "Logga in"
 
-#: 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"
@@ -200,75 +232,32 @@ 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: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!"
+msgid "Hi there, welcome to this MediaGoblin site!"
 msgstr ""
-"Är ett ställe för människor att samarbeta och visa upp originella och "
-"härrörande verk."
 
-#: mediagoblin/templates/mediagoblin/root.html:31
-msgid ""
-"Free, as in freedom. (We’re a <a href=\"http://gnu.org\">GNU</a> project, "
-"after all.)"
+#: mediagoblin/templates/mediagoblin/root.html:28
+msgid "Your finest source for all goblin-related media."
 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
+#: mediagoblin/templates/mediagoblin/root.html:29
 msgid ""
-"Built for extensibility.  (Multiple media types coming soon to the software,"
-" including video support!)"
+"To add your own media, place comments, save your favourites and more, you "
+"can log in with your MediaGoblin account."
 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>)"
+#: mediagoblin/templates/mediagoblin/root.html:31
+msgid "Don't have one yet? It's easy!"
 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
+#: mediagoblin/templates/mediagoblin/root.html:32
 #, 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\">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:44
 msgid "Most recent media"
 msgstr "Senast medier"
 
@@ -276,9 +265,13 @@ msgstr "Senast medier"
 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/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."
@@ -317,22 +310,18 @@ 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
 msgid "Create an account!"
 msgstr "Skapa ett konto!"
@@ -377,9 +366,15 @@ msgstr "Spara ändringar"
 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/video.html:19
+msgid "Original"
+msgstr ""
 
 #: mediagoblin/templates/mediagoblin/submit/start.html:26
 msgid "Submit yer media"
@@ -389,16 +384,16 @@ msgstr "Ladda upp"
 msgid "Submit"
 msgstr "Skicka"
 
-#: 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_confirm_delete.html:30
 #, python-format
 msgid "Really delete %(title)s?"
@@ -429,30 +424,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 +465,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 +475,25 @@ 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:119
 msgid "Edit profile"
 msgstr "Redigera 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 "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:133
 #, 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:146
 msgid ""
 "This is where your media will appear, but you don't seem to have added "
 "anything yet."
@@ -501,11 +501,11 @@ 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
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:152
 msgid "Add media"
 msgstr "Lägg till media"
 
-#: 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 "Det verkar inte finnas någon media här ännu."
 
@@ -525,6 +525,14 @@ msgstr "Nyare"
 msgid "Older"
 msgstr "Äldre"
 
+#: 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 "Kommentar"
@@ -533,15 +541,23 @@ msgstr "Kommentar"
 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
+#: mediagoblin/user_pages/views.py:155
 msgid "Empty comments are not allowed."
 msgstr ""
 
-#: mediagoblin/user_pages/views.py:148
+#: mediagoblin/user_pages/views.py:161
 msgid "Comment 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."
 
index 289bddb555566cdd1558ddca4f4205f44362d12f..064fa7d17921e0b7dc6d9578eeede940ebd57dff 100644 (file)
@@ -8,9 +8,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-03 14:08+0000\n"
-"Last-Translator: veeven <veeven@gmail.com>\n"
+"POT-Creation-Date: 2011-11-27 15:25-0600\n"
+"PO-Revision-Date: 2011-11-27 21:28+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"
@@ -19,6 +19,10 @@ msgstr ""
 "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:49
 msgid "Username"
 msgstr "వాడుకరి పేరు"
@@ -52,7 +56,7 @@ 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
@@ -65,11 +69,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."
@@ -83,41 +95,61 @@ msgstr "శీర్షిక"
 msgid "Tags"
 msgstr ""
 
-#: mediagoblin/edit/forms.py:31
+#: mediagoblin/edit/forms.py:30 mediagoblin/submit/forms.py:34
+msgid "Seperate tags by commas or spaces."
+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."
+#: mediagoblin/edit/views.py:171
+msgid "Wrong password"
+msgstr ""
+
+#: mediagoblin/edit/views.py:192
+msgid "Profile edited!"
+msgstr ""
+
+#: mediagoblin/media_types/__init__.py:61
+msgid "Could not find any file extension in \"{filename}\""
 msgstr ""
 
 #: mediagoblin/submit/forms.py:25
@@ -128,16 +160,16 @@ 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!"
+#: mediagoblin/submit/views.py:127
+msgid "Woohoo! Submitted!"
 msgstr ""
 
-#: mediagoblin/submit/views.py:121
-msgid "Woohoo! Submitted!"
+#: mediagoblin/submit/views.py:133
+msgid "Invalid file type."
 msgstr ""
 
 #: mediagoblin/templates/mediagoblin/404.html:21
@@ -158,29 +190,29 @@ msgstr ""
 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:49
 msgid "MediaGoblin logo"
 msgstr ""
 
-#: 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!"
+#: mediagoblin/templates/mediagoblin/base.html:65
+msgid "Verify your email!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:72
+msgid "log out"
 msgstr ""
 
-#: mediagoblin/templates/mediagoblin/base.html:73
+#: 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"
@@ -191,57 +223,32 @@ msgid "Explore"
 msgstr ""
 
 #: mediagoblin/templates/mediagoblin/root.html:27
-msgid "Hi there, media lover! MediaGoblin is..."
+msgid "Hi there, welcome to this MediaGoblin site!"
 msgstr ""
 
-#: mediagoblin/templates/mediagoblin/root.html:29
-msgid "The perfect place for your media!"
+#: mediagoblin/templates/mediagoblin/root.html:28
+msgid "Your finest source for all goblin-related media."
 msgstr ""
 
-#: mediagoblin/templates/mediagoblin/root.html:30
+#: mediagoblin/templates/mediagoblin/root.html:29
 msgid ""
-"A place for people to collaborate and show off original and derived "
-"creations!"
+"To add your own media, place comments, save your favourites and more, you "
+"can log in with your MediaGoblin account."
 msgstr ""
 
 #: mediagoblin/templates/mediagoblin/root.html:31
-msgid ""
-"Free, as in freedom. (We’re a <a href=\"http://gnu.org\">GNU</a> project, "
-"after all.)"
+msgid "Don't have one yet? It's easy!"
 msgstr ""
 
 #: mediagoblin/templates/mediagoblin/root.html:32
-msgid ""
-"Aiming to make the world a better place through decentralization and "
-"(eventually, coming soon!) federation!"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:33
-msgid ""
-"Built for extensibility.  (Multiple media types coming soon to the software,"
-" including video support!)"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:34
-msgid ""
-"Powered by people like you.  (<a "
-"href=\"http://mediagoblin.org/pages/join.html\">You can help us improve this"
-" software!</a>)"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:38
-msgid "Excited to join us?"
-msgstr ""
-
-#: mediagoblin/templates/mediagoblin/root.html:39
 #, python-format
 msgid ""
-"<a class=\"header_submit_highlight\" href=\"%(register_url)s\">Create a free account</a>\n"
+"<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 ""
 
-#: mediagoblin/templates/mediagoblin/root.html:53
+#: mediagoblin/templates/mediagoblin/root.html:44
 msgid "Most recent media"
 msgstr ""
 
@@ -249,8 +256,12 @@ msgstr ""
 msgid "Enter your new password"
 msgstr ""
 
-#: mediagoblin/templates/mediagoblin/auth/forgot_password.html:29
-msgid "Enter your username or email"
+#: 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
@@ -280,22 +291,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 ""
@@ -335,8 +342,14 @@ msgstr "మార్పులను భద్రపరచు"
 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/video.html:19
+msgid "Original"
 msgstr ""
 
 #: mediagoblin/templates/mediagoblin/submit/start.html:26
@@ -347,14 +360,14 @@ msgstr ""
 msgid "Submit"
 msgstr "దాఖలు చెయ్యి"
 
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:32
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
 #, python-format
-msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
+msgid "%(username)s'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/gallery.html:37
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
 msgstr ""
 
 #: mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html:30
@@ -387,75 +400,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: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 ""
 
-#: 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 ""
 
@@ -475,6 +493,14 @@ msgstr ""
 msgid "Older"
 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 "వ్యాఖ్య"
@@ -483,15 +509,23 @@ msgstr "వ్యాఖ్య"
 msgid "I am sure I want to delete this"
 msgstr ""
 
-#: mediagoblin/user_pages/views.py:142
+#: mediagoblin/user_pages/views.py:155
 msgid "Empty comments are not allowed."
 msgstr ""
 
-#: mediagoblin/user_pages/views.py:148
+#: mediagoblin/user_pages/views.py:161
 msgid "Comment 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 ""
 
index c664adbe0b6173ac5ec427b0e01d02adcaa9903a..5e406b41f33c192eea7705710cb764b347274186 100644 (file)
@@ -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: 2011-11-27 15:25-0600\n"
+"PO-Revision-Date: 2011-11-27 21:28+0000\n"
 "Last-Translator: cwebber <cwebber@dustycloud.org>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "MIME-Version: 1.0\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 or spaces."
+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:61
+msgid "Could not find any file extension in \"{filename}\""
+msgstr ""
 
 #: 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,32 @@ 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/templates/mediagoblin/root.html:29
-msgid "The perfect place for your media!"
-msgstr "你的媒體檔案的最佳所在!"
+#: mediagoblin/templates/mediagoblin/root.html:28
+msgid "Your finest source for all goblin-related media."
+msgstr ""
 
-#: mediagoblin/templates/mediagoblin/root.html:30
+#: mediagoblin/templates/mediagoblin/root.html:29
 msgid ""
-"A place for people to collaborate and show off original and derived "
-"creations!"
-msgstr "這是一個可以讓人們共同展示他們的創作、衍生作品的地方!"
+"To add your own media, place comments, save your favourites and more, you "
+"can log in with your MediaGoblin account."
+msgstr ""
 
 #: mediagoblin/templates/mediagoblin/root.html:31
-msgid ""
-"Free, as in freedom. (We’re a <a href=\"http://gnu.org\">GNU</a> project, "
-"after all.)"
-msgstr "免費但是我們更重視自由 (畢竟我們是個 <a href=\"http://gnu.org\">GNU</a> 專案)"
-
-#: 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>)"
+msgid "Don't have one yet? It's easy!"
 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
+#: mediagoblin/templates/mediagoblin/root.html:32
 #, 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"
-"          或是\n"
-"          <a class=\"header_submit\" href=\"http://wiki.mediagoblin.org/HackingHowto\">在你的伺服器上設立 MediaGoblin</a>"
 
-#: mediagoblin/templates/mediagoblin/root.html:53
+#: mediagoblin/templates/mediagoblin/root.html:44
 msgid "Most recent media"
 msgstr "最新的媒體"
 
@@ -257,9 +259,13 @@ 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/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 +301,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,9 +357,15 @@ 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 ""
+
+#: mediagoblin/templates/mediagoblin/media_displays/video.html:19
+msgid "Original"
+msgstr ""
 
 #: mediagoblin/templates/mediagoblin/submit/start.html:26
 msgid "Submit yer media"
@@ -367,16 +375,16 @@ msgstr "遞交你的媒體檔案"
 msgid "Submit"
 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_confirm_delete.html:30
 #, python-format
 msgid "Really delete %(title)s?"
@@ -407,75 +415,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 +508,14 @@ msgstr "新一點"
 msgid "Older"
 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 +524,23 @@ msgstr "評論"
 msgid "I am sure I want to delete this"
 msgstr "我確定我想要刪除"
 
-#: mediagoblin/user_pages/views.py:142
+#: mediagoblin/user_pages/views.py:155
 msgid "Empty comments are not allowed."
-msgstr ""
+msgstr "評論不能空白。"
 
-#: mediagoblin/user_pages/views.py:148
+#: mediagoblin/user_pages/views.py:161
 msgid "Comment 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:181
+#: mediagoblin/user_pages/views.py:198
 msgid "You are about to delete another user's media. Proceed with caution."
 msgstr "你在刪除其他人的媒體檔案。請小心處理喔。"
 
index f7ef9f3972344f5dc4a4bb02e31f3b1559603066..1eb21d7aa53e5cee4d845cac6acdf5a6f6ce7420 100644 (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'
 
similarity index 70%
rename from mediagoblin/middleware/__init__.py
rename to mediagoblin/meddleware/__init__.py
index 05325ee52c089e3232b802299a33aef24d1f787c..729a020d12e81b35b5ff84bb3483c5d487ac8b2c 100644 (file)
 # You should have received a copy of the GNU Affero General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-ENABLED_MIDDLEWARE = (
-    'mediagoblin.middleware.noop:NoOpMiddleware',
-    'mediagoblin.middleware.csrf:CsrfMiddleware',
+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):
+        pass
+
+    def process_response(self, request, response):
+        pass
similarity index 97%
rename from mediagoblin/middleware/csrf.py
rename to mediagoblin/meddleware/csrf.py
index 8275c18ee88d3c8055d5e44ec3591e5e10ef4680..ca2eca5fe6665af9f8af3753daab8a41c8639dc6 100644 (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
@@ -47,8 +48,8 @@ def render_csrf_form_token(request):
     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,9 +58,6 @@ 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):
         """For non-safe requests, confirm that the tokens are present
         and match.
similarity index 91%
rename from mediagoblin/middleware/noop.py
rename to mediagoblin/meddleware/noop.py
index 820b5d9e49adce4bce5d91b95f16309266d7b988..b43053de15dfcbb92107be928e0945197778adc0 100644 (file)
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 
-class NoOpMiddleware(object):
+from mediagoblin.meddleware import BaseMeddleware
 
-    def __init__(self, mg_app):
-        self.app = mg_app
 
+class NoOpMeddleware(BaseMeddleware):
     def process_request(self, request):
         pass
 
diff --git a/mediagoblin/media_types/__init__.py b/mediagoblin/media_types/__init__.py
new file mode 100644 (file)
index 0000000..6178656
--- /dev/null
@@ -0,0 +1,65 @@
+# 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 that returns the available media types
+    """
+    for media_type in mg_globals.app_config['media_types']:
+        yield media_type
+
+
+def get_media_managers():
+    '''
+    Generator that returns all available 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 = None):
+    for media_type, manager in get_media_managers():
+        if media_type in _media_type:
+            return manager
+
+
+def get_media_type_and_manager(filename):
+    for media_type, manager in get_media_managers():
+        if filename.find('.') > 0:
+            ext = os.path.splitext(filename)[1].lower()
+        else:
+            raise InvalidFileType(
+                _('Could not find any file extension in "{filename}"').format(
+                    filename=filename))
+
+        if ext[1:] in manager['accepted_extensions']:
+            return media_type, manager
diff --git a/mediagoblin/media_types/image/__init__.py b/mediagoblin/media_types/image/__init__.py
new file mode 100644 (file)
index 0000000..3b63d8e
--- /dev/null
@@ -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"]}
diff --git a/mediagoblin/media_types/image/processing.py b/mediagoblin/media_types/image/processing.py
new file mode 100644 (file)
index 0000000..5b8259f
--- /dev/null
@@ -0,0 +1,114 @@
+# 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 celery.task import Task
+from celery import registry
+
+from mediagoblin.db.util import ObjectId
+from mediagoblin import mg_globals as mgg
+
+from mediagoblin.processing import BaseProcessingFail, \
+    mark_entry_failed, 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()
diff --git a/mediagoblin/media_types/video/__init__.py b/mediagoblin/media_types/video/__init__.py
new file mode 100644 (file)
index 0000000..a970ab0
--- /dev/null
@@ -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"]}
diff --git a/mediagoblin/media_types/video/devices/web-advanced.json b/mediagoblin/media_types/video/devices/web-advanced.json
new file mode 100644 (file)
index 0000000..ce1d22f
--- /dev/null
@@ -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"
+                ]
+            }
+        }
+    ]
+}
diff --git a/mediagoblin/media_types/video/devices/web-flv.png b/mediagoblin/media_types/video/devices/web-flv.png
new file mode 100644 (file)
index 0000000..b75699f
Binary files /dev/null and b/mediagoblin/media_types/video/devices/web-flv.png differ
diff --git a/mediagoblin/media_types/video/devices/web-webm.svg b/mediagoblin/media_types/video/devices/web-webm.svg
new file mode 100644 (file)
index 0000000..4e5b3e9
--- /dev/null
@@ -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>
diff --git a/mediagoblin/media_types/video/devices/web.svg b/mediagoblin/media_types/video/devices/web.svg
new file mode 100644 (file)
index 0000000..c0c6824
--- /dev/null
@@ -0,0 +1,982 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
+<!-- Created with Inkscape (http://www.inkscape.org/) -->\r
+<svg\r
+   xmlns:dc="http://purl.org/dc/elements/1.1/"\r
+   xmlns:cc="http://creativecommons.org/ns#"\r
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"\r
+   xmlns:svg="http://www.w3.org/2000/svg"\r
+   xmlns="http://www.w3.org/2000/svg"\r
+   xmlns:xlink="http://www.w3.org/1999/xlink"\r
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"\r
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"\r
+   width="48px"\r
+   height="48px"\r
+   id="svg3440"\r
+   sodipodi:version="0.32"\r
+   inkscape:version="0.46"\r
+   sodipodi:docbase="/home/jimmac/src/cvs/tango-icon-theme/scalable/apps"\r
+   sodipodi:docname="internet-web-browser.svg"\r
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">\r
+  <defs\r
+     id="defs3">\r
+    <inkscape:perspective\r
+       sodipodi:type="inkscape:persp3d"\r
+       inkscape:vp_x="0 : 24 : 1"\r
+       inkscape:vp_y="0 : 1000 : 0"\r
+       inkscape:vp_z="48 : 24 : 1"\r
+       inkscape:persp3d-origin="24 : 16 : 1"\r
+       id="perspective156" />\r
+    <linearGradient\r
+       id="linearGradient4750">\r
+      <stop\r
+         style="stop-color:#ffffff;stop-opacity:1;"\r
+         offset="0"\r
+         id="stop4752" />\r
+      <stop\r
+         style="stop-color:#fefefe;stop-opacity:1.0000000;"\r
+         offset="0.37931034"\r
+         id="stop4758" />\r
+      <stop\r
+         style="stop-color:#1d1d1d;stop-opacity:1.0000000;"\r
+         offset="1.0000000"\r
+         id="stop4754" />\r
+    </linearGradient>\r
+    <linearGradient\r
+       inkscape:collect="always"\r
+       id="linearGradient4350">\r
+      <stop\r
+         style="stop-color:#ffffff;stop-opacity:1;"\r
+         offset="0"\r
+         id="stop4352" />\r
+      <stop\r
+         style="stop-color:#ffffff;stop-opacity:0;"\r
+         offset="1"\r
+         id="stop4354" />\r
+    </linearGradient>\r
+    <linearGradient\r
+       id="linearGradient4126">\r
+      <stop\r
+         style="stop-color:#ffffff;stop-opacity:1.0000000;"\r
+         offset="0.0000000"\r
+         id="stop4128" />\r
+      <stop\r
+         style="stop-color:#ffffff;stop-opacity:0.16494845;"\r
+         offset="1.0000000"\r
+         id="stop4130" />\r
+    </linearGradient>\r
+    <linearGradient\r
+       inkscape:collect="always"\r
+       id="linearGradient4114">\r
+      <stop\r
+         style="stop-color:#000000;stop-opacity:1;"\r
+         offset="0"\r
+         id="stop4116" />\r
+      <stop\r
+         style="stop-color:#000000;stop-opacity:0;"\r
+         offset="1"\r
+         id="stop4118" />\r
+    </linearGradient>\r
+    <linearGradient\r
+       id="linearGradient3962">\r
+      <stop\r
+         style="stop-color:#d3e9ff;stop-opacity:1.0000000;"\r
+         offset="0.0000000"\r
+         id="stop3964" />\r
+      <stop\r
+         style="stop-color:#d3e9ff;stop-opacity:1.0000000;"\r
+         offset="0.15517241"\r
+         id="stop4134" />\r
+      <stop\r
+         style="stop-color:#4074ae;stop-opacity:1.0000000;"\r
+         offset="0.75000000"\r
+         id="stop4346" />\r
+      <stop\r
+         style="stop-color:#36486c;stop-opacity:1.0000000;"\r
+         offset="1.0000000"\r
+         id="stop3966" />\r
+    </linearGradient>\r
+    <radialGradient\r
+       inkscape:collect="always"\r
+       xlink:href="#linearGradient3962"\r
+       id="radialGradient3968"\r
+       gradientTransform="scale(0.999989,1.000011)"\r
+       cx="18.247644"\r
+       cy="15.716079"\r
+       fx="18.247644"\r
+       fy="15.716079"\r
+       r="29.993349"\r
+       gradientUnits="userSpaceOnUse" />\r
+    <radialGradient\r
+       inkscape:collect="always"\r
+       xlink:href="#linearGradient4114"\r
+       id="radialGradient4120"\r
+       gradientTransform="scale(1.643990,0.608276)"\r
+       cx="15.115514"\r
+       cy="63.965388"\r
+       fx="15.115514"\r
+       fy="63.965388"\r
+       r="12.289036"\r
+       gradientUnits="userSpaceOnUse" />\r
+    <radialGradient\r
+       inkscape:collect="always"\r
+       xlink:href="#linearGradient4126"\r
+       id="radialGradient4132"\r
+       gradientTransform="scale(0.999989,1.000011)"\r
+       cx="15.601279"\r
+       cy="12.142302"\r
+       fx="15.601279"\r
+       fy="12.142302"\r
+       r="43.526714"\r
+       gradientUnits="userSpaceOnUse" />\r
+    <radialGradient\r
+       inkscape:collect="always"\r
+       xlink:href="#linearGradient4350"\r
+       id="radialGradient4356"\r
+       gradientTransform="scale(1.179536,0.847791)"\r
+       cx="11.826907"\r
+       cy="10.476453"\r
+       fx="11.826907"\r
+       fy="10.476453"\r
+       r="32.664848"\r
+       gradientUnits="userSpaceOnUse" />\r
+    <radialGradient\r
+       inkscape:collect="always"\r
+       xlink:href="#linearGradient4750"\r
+       id="radialGradient4756"\r
+       gradientTransform="scale(1.036822,0.964486)"\r
+       cx="18.633780"\r
+       cy="17.486208"\r
+       fx="18.934305"\r
+       fy="17.810213"\r
+       r="40.692665"\r
+       gradientUnits="userSpaceOnUse" />\r
+    <radialGradient\r
+       r="40.692665"\r
+       fy="17.810213"\r
+       fx="18.934305"\r
+       cy="17.486208"\r
+       cx="18.633780"\r
+       gradientTransform="scale(1.036822,0.964486)"\r
+       gradientUnits="userSpaceOnUse"\r
+       id="radialGradient1460"\r
+       xlink:href="#linearGradient4750"\r
+       inkscape:collect="always" />\r
+    <radialGradient\r
+       r="40.692665"\r
+       fy="17.810213"\r
+       fx="18.934305"\r
+       cy="17.486208"\r
+       cx="18.633780"\r
+       gradientTransform="scale(1.036822,0.964486)"\r
+       gradientUnits="userSpaceOnUse"\r
+       id="radialGradient1462"\r
+       xlink:href="#linearGradient4750"\r
+       inkscape:collect="always" />\r
+    <radialGradient\r
+       r="40.692665"\r
+       fy="17.810213"\r
+       fx="18.934305"\r
+       cy="17.486208"\r
+       cx="18.633780"\r
+       gradientTransform="scale(1.036822,0.964486)"\r
+       gradientUnits="userSpaceOnUse"\r
+       id="radialGradient1466"\r
+       xlink:href="#linearGradient4750"\r
+       inkscape:collect="always" />\r
+    <radialGradient\r
+       r="40.692665"\r
+       fy="17.810213"\r
+       fx="18.934305"\r
+       cy="17.486208"\r
+       cx="18.633780"\r
+       gradientTransform="scale(1.036822,0.964486)"\r
+       gradientUnits="userSpaceOnUse"\r
+       id="radialGradient1468"\r
+       xlink:href="#linearGradient4750"\r
+       inkscape:collect="always" />\r
+    <radialGradient\r
+       r="40.692665"\r
+       fy="17.810213"\r
+       fx="18.934305"\r
+       cy="17.486208"\r
+       cx="18.633780"\r
+       gradientTransform="scale(1.036822,0.964486)"\r
+       gradientUnits="userSpaceOnUse"\r
+       id="radialGradient1470"\r
+       xlink:href="#linearGradient4750"\r
+       inkscape:collect="always" />\r
+    <radialGradient\r
+       r="40.692665"\r
+       fy="17.810213"\r
+       fx="18.934305"\r
+       cy="17.486208"\r
+       cx="18.633780"\r
+       gradientTransform="scale(1.036822,0.964486)"\r
+       gradientUnits="userSpaceOnUse"\r
+       id="radialGradient1474"\r
+       xlink:href="#linearGradient4750"\r
+       inkscape:collect="always" />\r
+    <radialGradient\r
+       r="40.692665"\r
+       fy="17.810213"\r
+       fx="18.934305"\r
+       cy="17.486208"\r
+       cx="18.633780"\r
+       gradientTransform="scale(1.036822,0.964486)"\r
+       gradientUnits="userSpaceOnUse"\r
+       id="radialGradient1476"\r
+       xlink:href="#linearGradient4750"\r
+       inkscape:collect="always" />\r
+    <radialGradient\r
+       r="40.692665"\r
+       fy="17.810213"\r
+       fx="18.934305"\r
+       cy="17.486208"\r
+       cx="18.633780"\r
+       gradientTransform="scale(1.036822,0.964486)"\r
+       gradientUnits="userSpaceOnUse"\r
+       id="radialGradient1478"\r
+       xlink:href="#linearGradient4750"\r
+       inkscape:collect="always" />\r
+    <radialGradient\r
+       r="40.692665"\r
+       fy="17.810213"\r
+       fx="18.934305"\r
+       cy="17.486208"\r
+       cx="18.633780"\r
+       gradientTransform="scale(1.036822,0.964486)"\r
+       gradientUnits="userSpaceOnUse"\r
+       id="radialGradient1482"\r
+       xlink:href="#linearGradient4750"\r
+       inkscape:collect="always" />\r
+    <radialGradient\r
+       r="40.692665"\r
+       fy="17.810213"\r
+       fx="18.934305"\r
+       cy="17.486208"\r
+       cx="18.633780"\r
+       gradientTransform="scale(1.036822,0.964486)"\r
+       gradientUnits="userSpaceOnUse"\r
+       id="radialGradient1484"\r
+       xlink:href="#linearGradient4750"\r
+       inkscape:collect="always" />\r
+    <radialGradient\r
+       r="40.692665"\r
+       fy="17.810213"\r
+       fx="18.934305"\r
+       cy="17.486208"\r
+       cx="18.633780"\r
+       gradientTransform="scale(1.036822,0.964486)"\r
+       gradientUnits="userSpaceOnUse"\r
+       id="radialGradient1486"\r
+       xlink:href="#linearGradient4750"\r
+       inkscape:collect="always" />\r
+    <radialGradient\r
+       r="40.692665"\r
+       fy="17.810213"\r
+       fx="18.934305"\r
+       cy="17.486208"\r
+       cx="18.633780"\r
+       gradientTransform="scale(1.036822,0.964486)"\r
+       gradientUnits="userSpaceOnUse"\r
+       id="radialGradient1490"\r
+       xlink:href="#linearGradient4750"\r
+       inkscape:collect="always" />\r
+    <radialGradient\r
+       r="40.692665"\r
+       fy="17.810213"\r
+       fx="18.934305"\r
+       cy="17.486208"\r
+       cx="18.633780"\r
+       gradientTransform="scale(1.036822,0.964486)"\r
+       gradientUnits="userSpaceOnUse"\r
+       id="radialGradient1492"\r
+       xlink:href="#linearGradient4750"\r
+       inkscape:collect="always" />\r
+    <radialGradient\r
+       r="40.692665"\r
+       fy="17.810213"\r
+       fx="18.934305"\r
+       cy="17.486208"\r
+       cx="18.633780"\r
+       gradientTransform="scale(1.036822,0.964486)"\r
+       gradientUnits="userSpaceOnUse"\r
+       id="radialGradient1494"\r
+       xlink:href="#linearGradient4750"\r
+       inkscape:collect="always" />\r
+    <radialGradient\r
+       r="40.692665"\r
+       fy="17.810213"\r
+       fx="18.934305"\r
+       cy="17.486208"\r
+       cx="18.633780"\r
+       gradientTransform="scale(1.036822,0.964486)"\r
+       gradientUnits="userSpaceOnUse"\r
+       id="radialGradient1498"\r
+       xlink:href="#linearGradient4750"\r
+       inkscape:collect="always" />\r
+    <radialGradient\r
+       r="40.692665"\r
+       fy="17.810213"\r
+       fx="18.934305"\r
+       cy="17.486208"\r
+       cx="18.633780"\r
+       gradientTransform="scale(1.036822,0.964486)"\r
+       gradientUnits="userSpaceOnUse"\r
+       id="radialGradient1500"\r
+       xlink:href="#linearGradient4750"\r
+       inkscape:collect="always" />\r
+    <radialGradient\r
+       r="40.692665"\r
+       fy="17.810213"\r
+       fx="18.934305"\r
+       cy="17.486208"\r
+       cx="18.633780"\r
+       gradientTransform="scale(1.036822,0.964486)"\r
+       gradientUnits="userSpaceOnUse"\r
+       id="radialGradient1502"\r
+       xlink:href="#linearGradient4750"\r
+       inkscape:collect="always" />\r
+    <radialGradient\r
+       r="40.692665"\r
+       fy="17.810213"\r
+       fx="18.934305"\r
+       cy="17.486208"\r
+       cx="18.633780"\r
+       gradientTransform="scale(1.036822,0.964486)"\r
+       gradientUnits="userSpaceOnUse"\r
+       id="radialGradient1506"\r
+       xlink:href="#linearGradient4750"\r
+       inkscape:collect="always" />\r
+    <radialGradient\r
+       r="40.692665"\r
+       fy="17.810213"\r
+       fx="18.934305"\r
+       cy="17.486208"\r
+       cx="18.633780"\r
+       gradientTransform="scale(1.036822,0.964486)"\r
+       gradientUnits="userSpaceOnUse"\r
+       id="radialGradient1508"\r
+       xlink:href="#linearGradient4750"\r
+       inkscape:collect="always" />\r
+    <radialGradient\r
+       r="40.692665"\r
+       fy="17.810213"\r
+       fx="18.934305"\r
+       cy="17.486208"\r
+       cx="18.633780"\r
+       gradientTransform="scale(1.036822,0.964486)"\r
+       gradientUnits="userSpaceOnUse"\r
+       id="radialGradient1510"\r
+       xlink:href="#linearGradient4750"\r
+       inkscape:collect="always" />\r
+    <radialGradient\r
+       r="40.692665"\r
+       fy="17.810213"\r
+       fx="18.934305"\r
+       cy="17.486208"\r
+       cx="18.633780"\r
+       gradientTransform="scale(1.036822,0.964486)"\r
+       gradientUnits="userSpaceOnUse"\r
+       id="radialGradient1514"\r
+       xlink:href="#linearGradient4750"\r
+       inkscape:collect="always" />\r
+    <radialGradient\r
+       r="40.692665"\r
+       fy="17.810213"\r
+       fx="18.934305"\r
+       cy="17.486208"\r
+       cx="18.633780"\r
+       gradientTransform="scale(1.036822,0.964486)"\r
+       gradientUnits="userSpaceOnUse"\r
+       id="radialGradient1516"\r
+       xlink:href="#linearGradient4750"\r
+       inkscape:collect="always" />\r
+    <radialGradient\r
+       r="40.692665"\r
+       fy="17.810213"\r
+       fx="18.934305"\r
+       cy="17.486208"\r
+       cx="18.633780"\r
+       gradientTransform="scale(1.036822,0.964486)"\r
+       gradientUnits="userSpaceOnUse"\r
+       id="radialGradient1518"\r
+       xlink:href="#linearGradient4750"\r
+       inkscape:collect="always" />\r
+    <radialGradient\r
+       r="40.692665"\r
+       fy="17.810213"\r
+       fx="18.934305"\r
+       cy="17.486208"\r
+       cx="18.633780"\r
+       gradientTransform="scale(1.036822,0.964486)"\r
+       gradientUnits="userSpaceOnUse"\r
+       id="radialGradient1522"\r
+       xlink:href="#linearGradient4750"\r
+       inkscape:collect="always" />\r
+    <radialGradient\r
+       r="40.692665"\r
+       fy="17.810213"\r
+       fx="18.934305"\r
+       cy="17.486208"\r
+       cx="18.633780"\r
+       gradientTransform="scale(1.036822,0.964486)"\r
+       gradientUnits="userSpaceOnUse"\r
+       id="radialGradient1524"\r
+       xlink:href="#linearGradient4750"\r
+       inkscape:collect="always" />\r
+    <radialGradient\r
+       r="40.692665"\r
+       fy="17.810213"\r
+       fx="18.934305"\r
+       cy="17.486208"\r
+       cx="18.633780"\r
+       gradientTransform="scale(1.036822,0.964486)"\r
+       gradientUnits="userSpaceOnUse"\r
+       id="radialGradient1526"\r
+       xlink:href="#linearGradient4750"\r
+       inkscape:collect="always" />\r
+    <radialGradient\r
+       r="40.692665"\r
+       fy="17.810213"\r
+       fx="18.934305"\r
+       cy="17.486208"\r
+       cx="18.633780"\r
+       gradientTransform="scale(1.036822,0.964486)"\r
+       gradientUnits="userSpaceOnUse"\r
+       id="radialGradient1528"\r
+       xlink:href="#linearGradient4750"\r
+       inkscape:collect="always" />\r
+    <radialGradient\r
+       r="40.692665"\r
+       fy="17.810213"\r
+       fx="18.934305"\r
+       cy="17.486208"\r
+       cx="18.633780"\r
+       gradientTransform="scale(1.036822,0.964486)"\r
+       gradientUnits="userSpaceOnUse"\r
+       id="radialGradient1530"\r
+       xlink:href="#linearGradient4750"\r
+       inkscape:collect="always" />\r
+    <radialGradient\r
+       r="40.692665"\r
+       fy="17.810213"\r
+       fx="18.934305"\r
+       cy="17.486208"\r
+       cx="18.633780"\r
+       gradientTransform="scale(1.036822,0.964486)"\r
+       gradientUnits="userSpaceOnUse"\r
+       id="radialGradient1532"\r
+       xlink:href="#linearGradient4750"\r
+       inkscape:collect="always" />\r
+    <radialGradient\r
+       r="40.692665"\r
+       fy="17.810213"\r
+       fx="18.934305"\r
+       cy="17.486208"\r
+       cx="18.633780"\r
+       gradientTransform="scale(1.036822,0.964486)"\r
+       gradientUnits="userSpaceOnUse"\r
+       id="radialGradient1534"\r
+       xlink:href="#linearGradient4750"\r
+       inkscape:collect="always" />\r
+    <radialGradient\r
+       r="40.692665"\r
+       fy="17.810213"\r
+       fx="18.934305"\r
+       cy="17.486208"\r
+       cx="18.633780"\r
+       gradientTransform="scale(1.036822,0.964486)"\r
+       gradientUnits="userSpaceOnUse"\r
+       id="radialGradient1536"\r
+       xlink:href="#linearGradient4750"\r
+       inkscape:collect="always" />\r
+    <radialGradient\r
+       r="40.692665"\r
+       fy="17.810213"\r
+       fx="18.934305"\r
+       cy="17.486208"\r
+       cx="18.633780"\r
+       gradientTransform="scale(1.036822,0.964486)"\r
+       gradientUnits="userSpaceOnUse"\r
+       id="radialGradient1538"\r
+       xlink:href="#linearGradient4750"\r
+       inkscape:collect="always" />\r
+    <radialGradient\r
+       r="40.692665"\r
+       fy="17.810213"\r
+       fx="18.934305"\r
+       cy="17.486208"\r
+       cx="18.633780"\r
+       gradientTransform="scale(1.036822,0.964486)"\r
+       gradientUnits="userSpaceOnUse"\r
+       id="radialGradient1540"\r
+       xlink:href="#linearGradient4750"\r
+       inkscape:collect="always" />\r
+    <radialGradient\r
+       r="40.692665"\r
+       fy="17.810213"\r
+       fx="18.934305"\r
+       cy="17.486208"\r
+       cx="18.633780"\r
+       gradientTransform="scale(1.036822,0.964486)"\r
+       gradientUnits="userSpaceOnUse"\r
+       id="radialGradient1542"\r
+       xlink:href="#linearGradient4750"\r
+       inkscape:collect="always" />\r
+    <radialGradient\r
+       r="40.692665"\r
+       fy="17.810213"\r
+       fx="18.934305"\r
+       cy="17.486208"\r
+       cx="18.633780"\r
+       gradientTransform="scale(1.036822,0.964486)"\r
+       gradientUnits="userSpaceOnUse"\r
+       id="radialGradient1544"\r
+       xlink:href="#linearGradient4750"\r
+       inkscape:collect="always" />\r
+    <radialGradient\r
+       r="40.692665"\r
+       fy="17.810213"\r
+       fx="18.934305"\r
+       cy="17.486208"\r
+       cx="18.633780"\r
+       gradientTransform="scale(1.036822,0.964486)"\r
+       gradientUnits="userSpaceOnUse"\r
+       id="radialGradient1546"\r
+       xlink:href="#linearGradient4750"\r
+       inkscape:collect="always" />\r
+    <radialGradient\r
+       r="40.692665"\r
+       fy="17.810213"\r
+       fx="18.934305"\r
+       cy="17.486208"\r
+       cx="18.633780"\r
+       gradientTransform="scale(1.036822,0.964486)"\r
+       gradientUnits="userSpaceOnUse"\r
+       id="radialGradient1550"\r
+       xlink:href="#linearGradient4750"\r
+       inkscape:collect="always" />\r
+    <radialGradient\r
+       r="40.692665"\r
+       fy="17.810213"\r
+       fx="18.934305"\r
+       cy="17.486208"\r
+       cx="18.633780"\r
+       gradientTransform="scale(1.036822,0.964486)"\r
+       gradientUnits="userSpaceOnUse"\r
+       id="radialGradient1552"\r
+       xlink:href="#linearGradient4750"\r
+       inkscape:collect="always" />\r
+    <radialGradient\r
+       r="40.692665"\r
+       fy="17.810213"\r
+       fx="18.934305"\r
+       cy="17.486208"\r
+       cx="18.633780"\r
+       gradientTransform="scale(1.036822,0.964486)"\r
+       gradientUnits="userSpaceOnUse"\r
+       id="radialGradient1554"\r
+       xlink:href="#linearGradient4750"\r
+       inkscape:collect="always" />\r
+    <radialGradient\r
+       r="40.692665"\r
+       fy="17.810213"\r
+       fx="18.934305"\r
+       cy="17.486208"\r
+       cx="18.633780"\r
+       gradientTransform="scale(1.036822,0.964486)"\r
+       gradientUnits="userSpaceOnUse"\r
+       id="radialGradient1558"\r
+       xlink:href="#linearGradient4750"\r
+       inkscape:collect="always" />\r
+  </defs>\r
+  <sodipodi:namedview\r
+     id="base"\r
+     pagecolor="#ffffff"\r
+     bordercolor="#666666"\r
+     borderopacity="0.17254902"\r
+     inkscape:pageopacity="0.0"\r
+     inkscape:pageshadow="2"\r
+     inkscape:zoom="9.8994949"\r
+     inkscape:cx="25.799661"\r
+     inkscape:cy="24.622653"\r
+     inkscape:current-layer="layer1"\r
+     showgrid="false"\r
+     inkscape:grid-bbox="true"\r
+     inkscape:document-units="px"\r
+     inkscape:window-width="1440"\r
+     inkscape:window-height="823"\r
+     inkscape:window-x="0"\r
+     inkscape:window-y="30"\r
+     inkscape:showpageshadow="false" />\r
+  <metadata\r
+     id="metadata4">\r
+    <rdf:RDF>\r
+      <cc:Work\r
+         rdf:about="">\r
+        <dc:format>image/svg+xml</dc:format>\r
+        <dc:type\r
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />\r
+        <dc:title>Globe</dc:title>\r
+        <dc:creator>\r
+          <cc:Agent>\r
+            <dc:title>Jakub Steiner</dc:title>\r
+          </cc:Agent>\r
+        </dc:creator>\r
+        <dc:contributor>\r
+          <cc:Agent>\r
+            <dc:title>Tuomas Kuosmanen</dc:title>\r
+          </cc:Agent>\r
+        </dc:contributor>\r
+        <cc:license\r
+           rdf:resource="http://creativecommons.org/licenses/publicdomain/" />\r
+        <dc:source>http://jimmac.musichall.cz</dc:source>\r
+        <dc:subject>\r
+          <rdf:Bag>\r
+            <rdf:li>globe</rdf:li>\r
+            <rdf:li>international</rdf:li>\r
+            <rdf:li>web</rdf:li>\r
+            <rdf:li>www</rdf:li>\r
+            <rdf:li>internet</rdf:li>\r
+            <rdf:li>network</rdf:li>\r
+          </rdf:Bag>\r
+        </dc:subject>\r
+      </cc:Work>\r
+      <cc:License\r
+         rdf:about="http://creativecommons.org/licenses/publicdomain/">\r
+        <cc:permits\r
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />\r
+        <cc:permits\r
+           rdf:resource="http://creativecommons.org/ns#Distribution" />\r
+        <cc:permits\r
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />\r
+      </cc:License>\r
+    </rdf:RDF>\r
+  </metadata>\r
+  <g\r
+     id="layer1"\r
+     inkscape:label="Layer 1"\r
+     inkscape:groupmode="layer">\r
+    <path\r
+       sodipodi:type="arc"\r
+       style="fill:url(#radialGradient4120);fill-opacity:1.0000000;stroke:none;stroke-opacity:1.0000000"\r
+       id="path4112"\r
+       sodipodi:cx="24.849752"\r
+       sodipodi:cy="38.908627"\r
+       sodipodi:rx="20.203051"\r
+       sodipodi:ry="7.4751287"\r
+       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"\r
+       transform="matrix(1.000000,0.000000,0.000000,1.243244,0.000000,-10.27241)" />\r
+    <path\r
+       style="fill:url(#radialGradient3968);fill-opacity:1.0000000;fill-rule:nonzero;stroke:#39396c;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"\r
+       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 "\r
+       id="path3214" />\r
+    <path\r
+       sodipodi:type="arc"\r
+       style="opacity:0.42159382;fill:url(#radialGradient4356);fill-opacity:1.0000000;stroke:none;stroke-opacity:1.0000000"\r
+       id="path4348"\r
+       sodipodi:cx="17.778685"\r
+       sodipodi:cy="15.271057"\r
+       sodipodi:rx="12.929953"\r
+       sodipodi:ry="9.2934036"\r
+       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"\r
+       transform="matrix(0.835938,0.000000,0.000000,1.000000,9.886868,0.000000)" />\r
+    <g\r
+       id="g4136"\r
+       style="fill:#000000;fill-opacity:0.71345031;fill-rule:nonzero;stroke:none;stroke-miterlimit:4.0000000"\r
+       transform="matrix(0.982371,0.000000,0.000000,0.982371,0.121079,0.232914)">\r
+      <g\r
+         id="g4138">\r
+        <g\r
+           id="g4142">\r
+          <path\r
+             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 "\r
+             id="path4144" />\r
+        </g>\r
+      </g>\r
+      <g\r
+         id="g4146">\r
+        <g\r
+           id="g4150">\r
+          <path\r
+             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"\r
+             id="path4152" />\r
+        </g>\r
+      </g>\r
+      <g\r
+         id="g4154">\r
+        <g\r
+           id="g4158">\r
+          <path\r
+             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"\r
+             id="path4160" />\r
+        </g>\r
+      </g>\r
+      <g\r
+         id="g4162">\r
+        <g\r
+           id="g4166">\r
+          <path\r
+             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"\r
+             id="path4168" />\r
+        </g>\r
+      </g>\r
+      <g\r
+         id="g4170">\r
+        <g\r
+           id="g4174">\r
+          <path\r
+             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"\r
+             id="path4176" />\r
+        </g>\r
+      </g>\r
+      <g\r
+         id="g4178">\r
+        <g\r
+           id="g4182">\r
+          <path\r
+             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"\r
+             id="path4184" />\r
+        </g>\r
+      </g>\r
+      <g\r
+         id="g4186">\r
+        <g\r
+           id="g4190">\r
+          <path\r
+             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"\r
+             id="path4192" />\r
+        </g>\r
+      </g>\r
+      <g\r
+         id="g4194">\r
+        <g\r
+           id="g4198">\r
+          <path\r
+             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"\r
+             id="path4200" />\r
+        </g>\r
+      </g>\r
+      <g\r
+         id="g4202">\r
+        <g\r
+           style="opacity:0.75000000"\r
+           id="g4204">\r
+          <path\r
+             id="path4206"\r
+             d="" />\r
+        </g>\r
+        <g\r
+           id="g4208">\r
+          <path\r
+             id="path4210"\r
+             d="" />\r
+        </g>\r
+      </g>\r
+      <g\r
+         id="g4212">\r
+        <g\r
+           style="opacity:0.75000000"\r
+           id="g4214">\r
+          <path\r
+             id="path4216"\r
+             d="" />\r
+        </g>\r
+        <g\r
+           id="g4218">\r
+          <path\r
+             id="path4220"\r
+             d="" />\r
+        </g>\r
+      </g>\r
+      <g\r
+         id="g4222">\r
+        <g\r
+           id="g4226">\r
+          <path\r
+             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"\r
+             id="path4228" />\r
+        </g>\r
+      </g>\r
+      <g\r
+         id="g4230">\r
+        <g\r
+           id="g4234">\r
+          <path\r
+             d="M 18.728500,14.666500 L 19.165000,14.008300 L 18.510200,13.515100 L 18.728500,14.666500"\r
+             id="path4236" />\r
+        </g>\r
+      </g>\r
+    </g>\r
+    <g\r
+       id="g3216"\r
+       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"\r
+       transform="matrix(0.982371,0.000000,0.000000,0.982371,-8.095179e-2,3.088300e-2)">\r
+      <g\r
+         id="g3218"\r
+         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">\r
+        <g\r
+           id="g3222"\r
+           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">\r
+          <path\r
+             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 "\r
+             id="path3224"\r
+             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" />\r
+        </g>\r
+      </g>\r
+      <g\r
+         id="g3226"\r
+         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">\r
+        <g\r
+           id="g3230"\r
+           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">\r
+          <path\r
+             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"\r
+             id="path3232"\r
+             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" />\r
+        </g>\r
+      </g>\r
+      <g\r
+         id="g3234"\r
+         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">\r
+        <g\r
+           id="g3238"\r
+           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">\r
+          <path\r
+             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"\r
+             id="path3240"\r
+             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" />\r
+        </g>\r
+      </g>\r
+      <g\r
+         id="g3242"\r
+         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">\r
+        <g\r
+           id="g3246"\r
+           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">\r
+          <path\r
+             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"\r
+             id="path3248"\r
+             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" />\r
+        </g>\r
+      </g>\r
+      <g\r
+         id="g3250"\r
+         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">\r
+        <g\r
+           id="g3254"\r
+           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">\r
+          <path\r
+             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"\r
+             id="path3256"\r
+             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" />\r
+        </g>\r
+      </g>\r
+      <g\r
+         id="g3258"\r
+         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">\r
+        <g\r
+           id="g3262"\r
+           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">\r
+          <path\r
+             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"\r
+             id="path3264"\r
+             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" />\r
+        </g>\r
+      </g>\r
+      <g\r
+         id="g3266"\r
+         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">\r
+        <g\r
+           id="g3270"\r
+           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">\r
+          <path\r
+             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"\r
+             id="path3272"\r
+             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" />\r
+        </g>\r
+      </g>\r
+      <g\r
+         id="g3274"\r
+         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">\r
+        <g\r
+           id="g3278"\r
+           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">\r
+          <path\r
+             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"\r
+             id="path3280"\r
+             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" />\r
+        </g>\r
+      </g>\r
+      <g\r
+         id="g3282"\r
+         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">\r
+        <g\r
+           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"\r
+           id="g3284">\r
+          <path\r
+             d=""\r
+             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"\r
+             id="path3286" />\r
+        </g>\r
+        <g\r
+           id="g3288"\r
+           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">\r
+          <path\r
+             d=""\r
+             id="path3290"\r
+             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" />\r
+        </g>\r
+      </g>\r
+      <g\r
+         id="g3292"\r
+         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">\r
+        <g\r
+           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"\r
+           id="g3294">\r
+          <path\r
+             d=""\r
+             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"\r
+             id="path3296" />\r
+        </g>\r
+        <g\r
+           id="g3298"\r
+           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">\r
+          <path\r
+             d=""\r
+             id="path3300"\r
+             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" />\r
+        </g>\r
+      </g>\r
+      <g\r
+         id="g3302"\r
+         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">\r
+        <g\r
+           id="g3306"\r
+           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">\r
+          <path\r
+             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"\r
+             id="path3308"\r
+             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" />\r
+        </g>\r
+      </g>\r
+      <g\r
+         id="g3310"\r
+         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">\r
+        <g\r
+           id="g3314"\r
+           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">\r
+          <path\r
+             d="M 18.728500,14.666500 L 19.165000,14.008300 L 18.510200,13.515100 L 18.728500,14.666500"\r
+             id="path3316"\r
+             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" />\r
+        </g>\r
+      </g>\r
+    </g>\r
+    <path\r
+       style="fill:none;fill-opacity:1.0000000;fill-rule:nonzero;stroke:url(#radialGradient4132);stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"\r
+       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 "\r
+       id="path4122" />\r
+  </g>\r
+</svg>\r
diff --git a/mediagoblin/media_types/video/processing.py b/mediagoblin/media_types/video/processing.py
new file mode 100644 (file)
index 0000000..6125e49
--- /dev/null
@@ -0,0 +1,118 @@
+# 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.
+    """
+    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
+
+
+    # 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()
diff --git a/mediagoblin/media_types/video/transcoders.py b/mediagoblin/media_types/video/transcoders.py
new file mode 100644 (file)
index 0000000..d7ed14c
--- /dev/null
@@ -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 = {}
+
+    errors = []
+
+    def __init__(self, source_path, dest_path):
+        '''
+        Set up playbin pipeline in order to get video properties.
+
+        Initializes and runs the gobject.MainLoop()
+        '''
+        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)
diff --git a/mediagoblin/process_media/errors.py b/mediagoblin/process_media/errors.py
deleted file mode 100644 (file)
index 4224a3e..0000000
+++ /dev/null
@@ -1,45 +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.')
similarity index 56%
rename from mediagoblin/process_media/__init__.py
rename to mediagoblin/processing.py
index 54c0c493d97d9e4f21f55cc51bedccdd51693a81..89c4ac89f190a4cadecf468f12a1eb6558481cdf 100644 (file)
 # 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 Image
 from celery.task import Task
-from celery import registry
 
 from mediagoblin.db.util import ObjectId
 from mediagoblin import mg_globals as mgg
-from mediagoblin.process_media.errors import BaseProcessingFail, BadMediaFail
+
+from mediagoblin.tools.translate import lazy_pass_to_ugettext as _
+
+from mediagoblin.media_types import get_media_manager
 
 
 THUMB_SIZE = 180, 180
@@ -42,6 +41,8 @@ def create_pub_filepath(entry, filename):
 
 class ProcessMedia(Task):
     """
+    DEPRECATED -- This now resides in the individual media plugins
+
     Pass this entry off for processing.
     """
     def run(self, media_id):
@@ -54,10 +55,14 @@ class ProcessMedia(Task):
 
         # Try to process, and handle expected errors.
         try:
-            process_image(entry)
+            #__import__(entry['media_type'])
+            manager = get_media_manager(entry['media_type'])
+            manager['processor'](entry)
         except BaseProcessingFail, exc:
             mark_entry_failed(entry._id, exc)
             return
+        except ImportError, exc:
+            mark_entry_failed(entry[u'_id'], exc)
 
         entry['state'] = u'processed'
         entry.save()
@@ -75,9 +80,6 @@ class ProcessMedia(Task):
         mark_entry_failed(entry_id, exc)
 
 
-process_media = registry.tasks[ProcessMedia.name]
-
-
 def mark_entry_failed(entry_id, exc):
     """
     Mark a media entry as having failed in its conversion.
@@ -113,80 +115,29 @@ def mark_entry_failed(entry_id, exc):
                       u'fail_metadata': {}}})
 
 
-def process_image(entry):
+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):
     """
-    Code to process an image
+    Error that should be raised when an inappropriate file was given
+    for the media type specified.
     """
-    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')
-
-    extension = os.path.splitext(queued_filename)[1]
-
-    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:
-        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())
-
-    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()
+    general_message = _(u'Invalid file given for media type.')
diff --git a/mediagoblin/static/images/media_thumbs/video.jpg b/mediagoblin/static/images/media_thumbs/video.jpg
new file mode 100644 (file)
index 0000000..841dc79
Binary files /dev/null and b/mediagoblin/static/images/media_thumbs/video.jpg differ
index 0d3cc3df6756ab751bdbeec0553d519cfb7e1e45..51b735794db2d970050910dcbc65d6aac28e2ce9 100644 (file)
@@ -98,8 +98,14 @@ class CloudFilesStorage(StorageInterface):
     def delete_file(self, filepath):
         # TODO: Also delete unused directories if empty (safely, with
         # checks to avoid race conditions).
-        self.container.delete_object(
-            self._resolve_filepath(filepath))
+        try:
+            self.container.delete_object(
+                self._resolve_filepath(filepath))
+        except cloudfiles.container.ResponseError:
+            pass
+        finally:
+            pass
+        
 
     def file_url(self, filepath):
         return '/'.join([
index 139b1d1d53ac33531f00b87b280134fcd3ee3f34..3def44ceeb773d7a189dd5595d5b204099b27a76 100644 (file)
@@ -19,6 +19,8 @@ import uuid
 from os.path import splitext
 from cgi import FieldStorage
 
+from celery import registry
+
 from werkzeug.utils import secure_filename
 
 from mediagoblin.db.util import ObjectId
@@ -27,8 +29,9 @@ from mediagoblin.tools.translate import pass_to_ugettext as _
 from mediagoblin.tools.response import render_to_response, redirect
 from mediagoblin.decorators import require_active_login
 from mediagoblin.submit import forms as submit_forms, security
-from mediagoblin.process_media import process_media, mark_entry_failed
+from mediagoblin.processing import mark_entry_failed, ProcessMedia
 from mediagoblin.messages import add_message, SUCCESS
+from mediagoblin.media_types import get_media_type_and_manager, InvalidFileType
 
 
 @require_active_login
@@ -44,86 +47,90 @@ def submit_start(request):
                 and request.POST['file'].file):
             submit_form.file.errors.append(
                 _(u'You must provide a file.'))
-        elif not security.check_filetype(request.POST['file']):
-            submit_form.file.errors.append(
-                _(u"The file doesn't seem to be an image!"))
         else:
-            filename = request.POST['file'].filename
+            try:
+                filename = request.POST['file'].filename
+                media_type, media_manager = get_media_type_and_manager(filename)
 
-            # create entry and save in database
-            entry = request.db.MediaEntry()
-            entry['_id'] = ObjectId()
-            entry['title'] = (
-                unicode(request.POST['title'])
-                or unicode(splitext(filename)[0]))
+                # create entry and save in database
+                entry = request.db.MediaEntry()
+                entry['_id'] = ObjectId()
+                entry['media_type'] = unicode(media_type)
+                entry['title'] = (
+                    unicode(request.POST['title'])
+                    or unicode(splitext(filename)[0]))
 
-            entry['description'] = unicode(request.POST.get('description'))
-            entry['description_html'] = cleaned_markdown_conversion(
-                entry['description'])
+                entry['description'] = unicode(request.POST.get('description'))
+                entry['description_html'] = cleaned_markdown_conversion(
+                    entry['description'])
 
-            entry['media_type'] = u'image'  # heh
-            entry['uploader'] = request.user._id
+                entry['uploader'] = request.user['_id']
 
-            # Process the user's folksonomy "tags"
-            entry['tags'] = convert_to_tag_list_of_dicts(
-                                request.POST.get('tags'))
+                # Process the user's folksonomy "tags"
+                entry['tags'] = convert_to_tag_list_of_dicts(
+                    request.POST.get('tags'))
 
-            # Generate a slug from the title
-            entry.generate_slug()
+                # Generate a slug from the title
+                entry.generate_slug()
 
-            # Now store generate the queueing related filename
-            queue_filepath = request.app.queue_store.get_unique_filepath(
-                ['media_entries',
-                 unicode(entry._id),
-                 secure_filename(filename)])
 
-            # queue appropriately
-            queue_file = request.app.queue_store.get_file(
-                queue_filepath, 'wb')
+                # Now store generate the queueing related filename
+                queue_filepath = request.app.queue_store.get_unique_filepath(
+                    ['media_entries',
+                     unicode(entry._id),
+                     secure_filename(filename)])
 
-            with queue_file:
-                queue_file.write(request.POST['file'].file.read())
+                # queue appropriately
+                queue_file = request.app.queue_store.get_file(
+                    queue_filepath, 'wb')
 
-            # Add queued filename to the entry
-            entry['queued_media_file'] = queue_filepath
+                with queue_file:
+                    queue_file.write(request.POST['file'].file.read())
 
-            # We generate this ourselves so we know what the taks id is for
-            # retrieval later.
+                # Add queued filename to the entry
+                entry['queued_media_file'] = queue_filepath
 
-            # (If we got it off the task's auto-generation, there'd be
-            # a risk of a race condition when we'd save after sending
-            # off the task)
-            task_id = unicode(uuid.uuid4())
-            entry['queued_task_id'] = task_id
+                # We generate this ourselves so we know what the taks id is for
+                # retrieval later.
 
-            # Save now so we have this data before kicking off processing
-            entry.save(validate=True)
+                # (If we got it off the task's auto-generation, there'd be
+                # a risk of a race condition when we'd save after sending
+                # off the task)
+                task_id = unicode(uuid.uuid4())
+                entry['queued_task_id'] = task_id
 
-            # Pass off to processing
-            #
-            # (... don't change entry after this point to avoid race
-            # conditions with changes to the document via processing code)
-            try:
-                process_media.apply_async(
-                    [unicode(entry._id)], {},
-                    task_id=task_id)
-            except BaseException as exc:
-                # The purpose of this section is because when running in "lazy"
-                # or always-eager-with-exceptions-propagated celery mode that
-                # the failure handling won't happen on Celery end.  Since we
-                # expect a lot of users to run things in this way we have to
-                # capture stuff here.
-                #
-                # ... not completely the diaper pattern because the
-                # exception is re-raised :)
-                mark_entry_failed(entry._id, exc)
-                # re-raise the exception
-                raise
-
-            add_message(request, SUCCESS, _('Woohoo! Submitted!'))
+                # Save now so we have this data before kicking off processing
+                entry.save(validate=True)
 
-            return redirect(request, "mediagoblin.user_pages.user_home",
-                            user=request.user['username'])
+                # Pass off to processing
+                #
+                # (... don't change entry after this point to avoid race
+                # conditions with changes to the document via processing code)
+                process_media = registry.tasks[ProcessMedia.name]
+                try:
+                    process_media.apply_async(
+                        [unicode(entry._id)], {},
+                        task_id=task_id)
+                except BaseException as exc:
+                    # The purpose of this section is because when running in "lazy"
+                    # or always-eager-with-exceptions-propagated celery mode that
+                    # the failure handling won't happen on Celery end.  Since we
+                    # expect a lot of users to run things in this way we have to
+                    # capture stuff here.
+                    #
+                    # ... not completely the diaper pattern because the
+                    # exception is re-raised :)
+                    mark_entry_failed(entry._id, exc)
+                    # re-raise the exception
+                    raise
+
+                add_message(request, SUCCESS, _('Woohoo! Submitted!'))
+
+                return redirect(request, "mediagoblin.user_pages.user_home",
+                                user=request.user['username'])
+            except InvalidFileType, exc:
+                submit_form.file.errors.append(
+                    _(u'Invalid file type.'))
 
     return render_to_response(
         request,
index ede5f5c61d97cc6b55db4b16302a8e9a396667fc..29639026573ce77a3d75b8398eee14aa5478576c 100644 (file)
@@ -28,6 +28,8 @@
           href="{{ request.staticdirect('/css/extlib/960_16_col.css') }}"/>
     <link rel="stylesheet" type="text/css"
           href="{{ request.staticdirect('/css/base.css') }}"/>
+    <link rel="stylesheet" type="text/css"
+          href="{{ request.staticdirect('/css/video-js.css') }}"/>
     <link rel="shortcut icon"
           href="{{ request.staticdirect('/images/goblin.ico') }}" />
     {% block mediagoblin_head %}
diff --git a/mediagoblin/templates/mediagoblin/media_displays/image.html b/mediagoblin/templates/mediagoblin/media_displays/image.html
new file mode 100644 (file)
index 0000000..ad60fa9
--- /dev/null
@@ -0,0 +1 @@
+{% extends 'mediagoblin/user_pages/media.html' %}
diff --git a/mediagoblin/templates/mediagoblin/media_displays/video.html b/mediagoblin/templates/mediagoblin/media_displays/video.html
new file mode 100644 (file)
index 0000000..5b8ec78
--- /dev/null
@@ -0,0 +1,25 @@
+{% extends 'mediagoblin/user_pages/media.html' %}
+{% block mediagoblin_media %}
+  <div class="video-player" style="position: relative;">
+    <video class="video-js vjs-default-skin"
+          width="{{ media.media_data.video.width }}"
+          height="{{ media.media_data.video.height }}"
+          controls="controls"
+          preload="auto"
+          data-setup="">
+      <source src="{{ request.app.public_store.file_url(
+                  media['media_files']['webm_640']) }}" 
+             type="video/webm; codecs=&quot;vp8, vorbis&quot;" />
+    </video>
+  </div>
+  {% if 'original' in media.media_files %}
+  <p>
+    <a href="{{ request.app.public_store.file_url(
+            media['media_files']['original']) }}">
+      {%- trans -%}
+        Original
+      {%- endtrans -%}
+    </a>
+  </p>
+  {% endif %}    
+{% endblock %}
index adbb66db2010afa4c90beec98e5130b5befefb4d..7434664c4b2980a13c49dbef2a6bc2c20a52f71b 100644 (file)
   {% if media %}
     <div class="grid_11 alpha">
       <div class="media_image_container">
-        {% set display_media = request.app.public_store.file_url(
-                 media.get_display_media(media.media_files)) %}
+       {% block mediagoblin_media %}
+          {% set display_media = request.app.public_store.file_url(
+                   media.get_display_media(media.media_files)) %}
 
-        {# if there's a medium file size, that means the medium size
-         #  isn't the original... so link to the original!
-         #}
-        {% if media['media_files'].has_key('medium') %}
-          <a href="{{ request.app.public_store.file_url(
-                        media['media_files']['original']) }}">
+          {# if there's a medium file size, that means the medium size
+           #  isn't the original... so link to the original!
+           #}
+          {% if media['media_files'].has_key('medium') %}
+            <a href="{{ request.app.public_store.file_url(
+                          media['media_files']['original']) }}">
+              <img class="media_image"
+                   src="{{ display_media }}"
+                   alt="Image for {{ media.title }}" />
+            </a>
+          {% else %}
             <img class="media_image"
                  src="{{ display_media }}"
                  alt="Image for {{ media.title }}" />
-          </a>
-        {% else %}
-          <img class="media_image"
-               src="{{ display_media }}"
-               alt="Image for {{ media.title }}" />
-        {% endif %}
+          {% endif %}
+       {% endblock %}
       </div>
 
       <h2 class="media_title">
index 348a43577bc0474c1c08852a5a9be9130d1e4885..19a9b899de917d0a32ac3e46194aeb21f60d42a7 100644 (file)
@@ -50,7 +50,7 @@ def test_setup_celery_from_config():
     assert isinstance(fake_celery_module.CELERYD_ETA_SCHEDULER_PRECISION, float)
     assert fake_celery_module.CELERY_RESULT_PERSISTENT is True
     assert fake_celery_module.CELERY_IMPORTS == [
-        'foo.bar.baz', 'this.is.an.import', 'mediagoblin.process_media']
+        'foo.bar.baz', 'this.is.an.import', 'mediagoblin.processing']
     assert fake_celery_module.CELERY_MONGODB_BACKEND_SETTINGS == {
         'database': 'mediagoblin'}
     assert fake_celery_module.CELERY_RESULT_BACKEND == 'mongodb'
@@ -74,7 +74,7 @@ def test_setup_celery_from_config():
     assert isinstance(fake_celery_module.CELERYD_ETA_SCHEDULER_PRECISION, float)
     assert fake_celery_module.CELERY_RESULT_PERSISTENT is False
     assert fake_celery_module.CELERY_IMPORTS == [
-        'baz.bar.foo', 'import.is.a.this', 'mediagoblin.process_media']
+        'baz.bar.foo', 'import.is.a.this', 'mediagoblin.processing']
     assert fake_celery_module.CELERY_MONGODB_BACKEND_SETTINGS == {
         'database': 'captain_lollerskates',
         'host': 'mongodb.example.org',
index dec7118b76281ebef4d63b981f19c4c88e33b9bc..eea5747fb102c9a01b38c1f5a92cf2468416c6d3 100644 (file)
@@ -222,7 +222,7 @@ class TestSubmission:
 
         context = template.TEMPLATE_TEST_CONTEXT['mediagoblin/submit/start.html']
         form = context['submit_form']
-        assert form.file.errors == ['The file doesn\'t seem to be an image!']
+        assert form.file.errors == [u'Invalid file type.']
 
         # NOTE: The following 2 tests will ultimately fail, but they
         #   *will* pass the initial form submission step.  Instead,
@@ -246,7 +246,7 @@ class TestSubmission:
         assert_equal(entry['state'], 'failed')
         assert_equal(
             entry['fail_error'],
-            u'mediagoblin.process_media.errors:BadMediaFail')
+            u'mediagoblin.processing:BadMediaFail')
 
         # Test non-supported file with .png extension
         # -------------------------------------------
@@ -266,4 +266,4 @@ class TestSubmission:
         assert_equal(entry['state'], 'failed')
         assert_equal(
             entry['fail_error'],
-            u'mediagoblin.process_media.errors:BadMediaFail')
+            u'mediagoblin.processing:BadMediaFail')
index 420d9ba87b50c3998f5204e26d4558d167aec9fa..01813e96ea4887e4882a1d2a87e755fd1fa2e993 100644 (file)
@@ -26,6 +26,7 @@ from mediagoblin.tools import testing
 from mediagoblin.init.config import read_mediagoblin_config
 from mediagoblin.decorators import _make_safe
 from mediagoblin.db.open import setup_connection_and_db_from_config
+from mediagoblin.meddleware import BaseMeddleware
 
 
 MEDIAGOBLIN_TEST_DB_NAME = u'__mediagoblin_tests__'
@@ -50,9 +51,9 @@ $ CELERY_CONFIG_MODULE=mediagoblin.init.celery.from_tests ./bin/nosetests"""
 class BadCeleryEnviron(Exception): pass
 
 
-class TestingMiddleware(object):
+class TestingMeddleware(BaseMeddleware):
     """
-    Middleware for the Unit tests
+    Meddleware for the Unit tests
     
     It might make sense to perform some tests on all
     requests/responses. Or prepare them in a special
@@ -60,7 +61,7 @@ class TestingMiddleware(object):
     for being valid html *after* being rendered.
 
     This module is getting inserted at the front of the
-    middleware list, which means: requests are handed here
+    meddleware list, which means: requests are handed here
     first, responses last. So this wraps up the "normal"
     app.
 
@@ -69,12 +70,6 @@ class TestingMiddleware(object):
     create a new method and call it from process_*.
     """
 
-    def __init__(self, mg_app):
-        self.app = mg_app
-
-    def process_request(self, request):
-        pass
-
     def process_response(self, request, response):
         # All following tests should be for html only!
         if response.content_type != "text/html":
@@ -149,11 +144,11 @@ def get_test_app(dump_old_app=True):
     test_app = loadapp(
         'config:' + TEST_SERVER_CONFIG)
 
-    # Insert the TestingMiddleware, which can do some
+    # Insert the TestingMeddleware, which can do some
     # sanity checks on every request/response.
     # Doing it this way is probably not the cleanest way.
     # We'll fix it, when we have plugins!
-    mg_globals.app.middleware.insert(0, TestingMiddleware(mg_globals.app))
+    mg_globals.app.meddleware.insert(0, TestingMeddleware(mg_globals.app))
 
     app = TestApp(test_app)
     MGOBLIN_APP = app
index 0986761b7e4539acd09f72b77e7cc82c47d1a511..f48b7c2ed371521f8fe79c385645393b27b009ff 100644 (file)
@@ -21,7 +21,7 @@ from mediagoblin import mg_globals
 from mediagoblin import messages
 from mediagoblin.tools import common
 from mediagoblin.tools.translate import setup_gettext
-from mediagoblin.middleware.csrf import render_csrf_form_token
+from mediagoblin.meddleware.csrf import render_csrf_form_token
 
 
 SETUP_JINJA_ENVS = {}
index 61cae7752dfcf6d56814d8f59dd6b1fb6f582701..3d9735f7230d352e0f99488e5f21d37074afbe87 100644 (file)
@@ -30,6 +30,8 @@ from mediagoblin.decorators import (uses_pagination, get_user_media_entry,
 
 from werkzeug.contrib.atom import AtomFeed
 
+from mediagoblin.media_types import get_media_manager
+
 
 @uses_pagination
 def user_home(request, page):
@@ -120,9 +122,11 @@ def media_home(request, media, page, **kwargs):
 
     comment_form = user_forms.MediaCommentForm(request.POST)
 
+    media_template_name = get_media_manager(media['media_type'])['display_template']
+
     return render_to_response(
         request,
-        'mediagoblin/user_pages/media.html',
+        media_template_name,
         {'media': media,
          'comments': comments,
          'pagination': pagination,
index ecf5b7239b6d8109014647185033eefd2c5474af..cd6aba9b8fdc6a6608ee51ef63376193b96ffab8 100644 (file)
 # 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 sys
+
 from mediagoblin import mg_globals
 from mediagoblin.tools.pagination import Pagination
 from mediagoblin.tools.response import render_to_response
 from mediagoblin.db.util import DESCENDING
 from mediagoblin.decorators import uses_pagination
+from mediagoblin import media_types
+
 
 
 @uses_pagination
@@ -28,12 +32,12 @@ def root_view(request, page):
 
     pagination = Pagination(page, cursor)
     media_entries = pagination()
-
     return render_to_response(
         request, 'mediagoblin/root.html',
         {'media_entries': media_entries,
          'allow_registration': mg_globals.app_config["allow_registration"],
-         'pagination': pagination})
+         'pagination': pagination,
+         'sys': sys})
 
 
 def simple_template_render(request):
index 60a79f470aace36f0b69c1a881d8fbffa3c29293..9578494c8ae297248432996d728740bddaea333b 100644 (file)
@@ -47,7 +47,10 @@ class Workbench(object):
         return str(self.dir)
 
     def __repr__(self):
-        return repr(self.dir)
+        try:
+            return str(self)
+        except AttributeError:
+            return 'None'
 
     def joinpath(self, *args):
         return os.path.join(self.dir, *args)
index 7333f974782c8d9be310353e38c0ea778c0f397a..ec672dd2a8e4468e5f2e2911b8b0385771fef19c 100644 (file)
--- a/setup.py
+++ b/setup.py
@@ -66,6 +66,7 @@ setup(
         ## their package managers.
         # 'lxml',
         ],
+    # requires=['gst'],
     test_suite='nose.collector',
     entry_points="""\
         [console_scripts]