aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--docs/source/about_mediagoblin.rst79
-rw-r--r--docs/source/contributinghowto.rst262
-rw-r--r--docs/source/foreword.rst64
-rw-r--r--docs/source/git.rst224
-rw-r--r--docs/source/index.rst10
-rw-r--r--docs/source/mediagoblin.rst70
-rw-r--r--mediagoblin.ini10
-rw-r--r--mediagoblin/auth/forms.py16
-rw-r--r--mediagoblin/auth/views.py11
-rw-r--r--mediagoblin/config_spec.ini23
-rw-r--r--mediagoblin/decorators.py17
-rw-r--r--mediagoblin/edit/forms.py8
-rw-r--r--mediagoblin/edit/views.py112
-rw-r--r--mediagoblin/errormiddleware.py60
-rw-r--r--mediagoblin/gmg_commands/__init__.py8
-rw-r--r--mediagoblin/gmg_commands/import_export.py250
-rw-r--r--mediagoblin/i18n/ar/LC_MESSAGES/mediagoblin.mobin0 -> 8634 bytes
-rw-r--r--mediagoblin/i18n/ar/LC_MESSAGES/mediagoblin.po399
-rw-r--r--mediagoblin/i18n/de/LC_MESSAGES/mediagoblin.mobin5641 -> 8220 bytes
-rw-r--r--mediagoblin/i18n/de/LC_MESSAGES/mediagoblin.po293
-rw-r--r--mediagoblin/i18n/en/LC_MESSAGES/mediagoblin.po182
-rw-r--r--mediagoblin/i18n/eo/LC_MESSAGES/mediagoblin.mobin5561 -> 7968 bytes
-rw-r--r--mediagoblin/i18n/eo/LC_MESSAGES/mediagoblin.po261
-rw-r--r--mediagoblin/i18n/es/LC_MESSAGES/mediagoblin.mobin5708 -> 8328 bytes
-rw-r--r--mediagoblin/i18n/es/LC_MESSAGES/mediagoblin.po308
-rw-r--r--mediagoblin/i18n/fr/LC_MESSAGES/mediagoblin.mobin5983 -> 8263 bytes
-rw-r--r--mediagoblin/i18n/fr/LC_MESSAGES/mediagoblin.po218
-rw-r--r--mediagoblin/i18n/ja/LC_MESSAGES/mediagoblin.mobin6281 -> 8482 bytes
-rw-r--r--mediagoblin/i18n/ja/LC_MESSAGES/mediagoblin.po207
-rw-r--r--mediagoblin/i18n/nl/LC_MESSAGES/mediagoblin.mobin0 -> 7962 bytes
-rw-r--r--mediagoblin/i18n/nl/LC_MESSAGES/mediagoblin.po399
-rw-r--r--mediagoblin/i18n/nn_NO/LC_MESSAGES/mediagoblin.mobin5217 -> 7739 bytes
-rw-r--r--mediagoblin/i18n/nn_NO/LC_MESSAGES/mediagoblin.po251
-rw-r--r--mediagoblin/i18n/pt_BR/LC_MESSAGES/mediagoblin.mobin5414 -> 7906 bytes
-rw-r--r--mediagoblin/i18n/pt_BR/LC_MESSAGES/mediagoblin.po251
-rw-r--r--mediagoblin/i18n/ro/LC_MESSAGES/mediagoblin.mobin5629 -> 8249 bytes
-rw-r--r--mediagoblin/i18n/ro/LC_MESSAGES/mediagoblin.po273
-rw-r--r--mediagoblin/i18n/ru/LC_MESSAGES/mediagoblin.mobin0 -> 8585 bytes
-rw-r--r--mediagoblin/i18n/ru/LC_MESSAGES/mediagoblin.po392
-rw-r--r--mediagoblin/i18n/sl/LC_MESSAGES/mediagoblin.mobin5487 -> 8028 bytes
-rw-r--r--mediagoblin/i18n/sl/LC_MESSAGES/mediagoblin.po260
-rw-r--r--mediagoblin/i18n/sr/LC_MESSAGES/mediagoblin.mobin5401 -> 7885 bytes
-rw-r--r--mediagoblin/i18n/sr/LC_MESSAGES/mediagoblin.po227
-rw-r--r--mediagoblin/i18n/sv/LC_MESSAGES/mediagoblin.mobin5597 -> 8142 bytes
-rw-r--r--mediagoblin/i18n/sv/LC_MESSAGES/mediagoblin.po224
-rw-r--r--mediagoblin/i18n/zh_TW/LC_MESSAGES/mediagoblin.mobin5387 -> 7758 bytes
-rw-r--r--mediagoblin/i18n/zh_TW/LC_MESSAGES/mediagoblin.po207
-rw-r--r--mediagoblin/init/__init__.py11
-rw-r--r--mediagoblin/routing.py1
-rw-r--r--mediagoblin/static/css/base.css8
-rw-r--r--mediagoblin/static/images/goblin.icobin0 -> 318 bytes
-rw-r--r--mediagoblin/static/images/goblin.pngbin0 -> 413 bytes
-rw-r--r--mediagoblin/static/images/logo.pngbin0 -> 2479 bytes
-rw-r--r--mediagoblin/storage.py37
-rw-r--r--mediagoblin/submit/views.py9
-rw-r--r--mediagoblin/templates/mediagoblin/auth/login.html2
-rw-r--r--mediagoblin/templates/mediagoblin/base.html11
-rw-r--r--mediagoblin/templates/mediagoblin/edit/attachments.html55
-rw-r--r--mediagoblin/templates/mediagoblin/root.html2
-rw-r--r--mediagoblin/templates/mediagoblin/user_pages/media.html78
-rw-r--r--mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html48
-rw-r--r--mediagoblin/templates/mediagoblin/user_pages/user.html8
-rw-r--r--mediagoblin/templates/mediagoblin/utils/object_gallery.html7
-rw-r--r--mediagoblin/templates/mediagoblin/utils/wtforms.html6
-rw-r--r--mediagoblin/tests/test_mgoblin_app.ini10
-rw-r--r--mediagoblin/tests/test_paste.ini2
-rw-r--r--mediagoblin/tests/test_storage.py21
-rw-r--r--mediagoblin/tests/test_submission.py61
-rw-r--r--mediagoblin/user_pages/forms.py7
-rw-r--r--mediagoblin/user_pages/routing.py8
-rw-r--r--mediagoblin/user_pages/views.py49
-rw-r--r--mediagoblin/util.py32
-rw-r--r--paste.ini12
-rw-r--r--setup.py3
75 files changed, 4505 insertions, 1560 deletions
diff --git a/.gitignore b/.gitignore
index 9da56bab..5f16bd74 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,6 +9,7 @@ mediagoblin.egg-info
*.pyc
*.pyo
docs/_build/
+docs/build
user_dev/
paste_local.ini
mediagoblin_local.ini
diff --git a/docs/source/about_mediagoblin.rst b/docs/source/about_mediagoblin.rst
new file mode 100644
index 00000000..71d8b89c
--- /dev/null
+++ b/docs/source/about_mediagoblin.rst
@@ -0,0 +1,79 @@
+=================
+ GNU MediaGoblin
+=================
+
+.. contents:: Sections
+ :local:
+
+
+What is GNU MediaGoblin
+=======================
+
+In 2008 a number of free software developers and activists gathered at
+the FSF to attempt to answer the question "What should software
+freedom look like on the participatory web?" Their answer, the
+`Franklin Street Statement <http://autonomo.us/2008/07/franklin-street-statement/>`_,
+has lead to the development of `autonomo.us <http://autonomo.us/>`_
+community, and free software projects including `Identi.ca <http://identi.ca/>`_
+and `Libre.fm <http://libre.fm/>`_.
+
+Identi.ca and Libre.fm address the need for micro-blogging and music
+sharing services and software that respect users' freedom and
+autonomy. GNU MediaGoblin emerges from this milieu to create a
+platform for us to share photos in an environment that respects our
+freedom and independence. In the future MediaGoblin will include
+support other media, like video, and provide tools to facilitate
+collaboration on media projects.
+
+Why Build GNU MediaGoblin
+=========================
+
+The Internet is designed--and works best--as a complex and endlessly
+resilient network. When key services and media outlets are
+concentrated in centralized platforms, the network becomes less useful
+and increasingly fragile. As always, the proprietary nature of these
+systems, hinders users ability to develop, extend, and understand
+their software; however, in the case of network services it also means
+that users must forfeit control of their data to the service
+providers.
+
+Therefore, we believe that network services must be federated to avoid
+centralization and that everyone ought to have control over their
+data. In support of this, we've decided to help build the tools to
+make these kinds of services possible. We hope you'll join us, both as
+users and as contributors.
+
+Who Contributes to the Project
+==============================
+
+You do!
+
+We are free software activists and folks who have worked on a variety
+of other projects including: Libre.fm, GNU Social, Status.net, Miro,
+Miro Community, and OpenHatch among others. We're programmers,
+musicians, writers, and painters. We're friendly and dedicated to
+software and network freedom.
+
+How Can I Participate?
+======================
+
+See `Get Involved <http://mediagoblin.org/join/>`_ on the website..
+
+
+How is GNU MediaGoblin licensed?
+================================
+
+GNU MediaGoblin software is released under an AGPLv3 license.
+
+See the ``COPYING`` file in the source repository for details.
+
+
+Is MedaGobilin an official GNU project? What does that mean?
+=============================================================
+
+MediaGoblin is an official GNU project! This status means that we the
+meet the GNU Project's rigorous standards for free software. To find
+out more about what that means, check out `the GNU site <http://gnu.org/>`_.
+
+Please feel free to contact us with further questions!
+
diff --git a/docs/source/contributinghowto.rst b/docs/source/contributinghowto.rst
index a4f5771a..8eaff5e4 100644
--- a/docs/source/contributinghowto.rst
+++ b/docs/source/contributinghowto.rst
@@ -1,185 +1,215 @@
.. _contributing-howto-chapter:
-====================
- Contributing HOWTO
-====================
+===================================
+HOWTO Contribute to GNU MediaGoblin
+===================================
.. contents:: Sections
:local:
-
.. _join-the-community-section:
Join the community!
===================
-We're super glad you want to join our community!
-
-See `the join page on the website <http://mediagoblin.org/join/>`_ for
-where we hang out.
-
-There are a variety of ways you can help us and become part of the
-team. We're not just looking for coders! We're also looking for
-documentation writers, users, testers, evangelists, user-interface
-designers, graphics designers, user-experience designers, system
-administrators, friends, painters, bakers, candle-stick makers...
-
-Here are some things you can do today:
-
+We're **really** glad that you want to join the MediaGoblin community!
- **Hang out with us**
+There are a variety of ways to help and support MediaGoblin and to
+join the team. If you want to code, great, if not, even better!
+MediaGoblin interested contributors in many different roles: users,
+system administrators, technical writers, testers, evangelists,
+UI/UX and graphics designers, cheerleaders, and dreamers.
- You should hang out with us! We like people like you!
+This document provides an overview of different ways you can get
+involved with MediaGoblin along with instructions for getting
+started. There is some obvious overlap with `the "join" page on
+mediagoblin.org <http://mediagoblin.org/pages/join.html>`_ at present.
- At a bare minimum, join the `mailing list
- <http://mediagoblin.org/join/>`_ and say, "Hi!"
+Hang out with the MediaGoblin folk
+----------------------------------
- We also hang out on IRC in ``#mediagoblin`` on Freenode.net.
+MediaGoblin has a `discussion listserv <http://lists.mediagoblin.org/listinfo/devel>`_,
+and an IRC (``#mediagoblin``) channel on `freenode.net <http://freenode.com>`_.
+Don't be afraid to drop by and say "Hi!" And, if you're looking for
+something to do, just ask: there's always work to be done.
- **File bugs**
+File Bugs / Triage Bugs
+-----------------------
- Filing bugs is a critical part of any project. For more
- information on filing bugs, see :ref:`filing-bugs`.
+Issue reports are critical for all projects. Identified bugs give
+developers a basis for beginning work, and providing an idea of what
+features and issues are most important to users and the overall
+usability of the software. If you identify errors, flaws, unexpected
+behaviors, or deficits that impede use, file a bug.
+See the section on `filing bugs <#filing-bugs>`_ for more information on how to file the best
+and most useful bug reports.
- **Write/Fix some code**
+If you want to contribute to MediaGoblin and don't know where to
+start, look at the `bug database <http://bugs.foocorp.net/projects/mediagoblin/issues>`_
+as a starting point.
- If you are a coder and you're looking to code, check out the
- `wiki <http://wiki.mediagoblin.org/`_. We even have tips on
- *becoming* a coder and we're willing to help you!
+See the section on `bug triage <#triage-bugs>`_ for suggestions on how
+to most effectively triage and approach the issue queue.
+Write/Fix Code
+--------------
- **Send encouragement**
+If you are a coder and you would like to write code, the `repository <https://gitorious.org/mediagoblin>`_
+is hosted on `gitorious <https://gitorious.org/>`_. Clone or fork the
+repository and start poking around. Become familiar with this `manual </>`_
+for an overview of how the software works and is used. Consider the
+`contributor wiki <http://wiki.mediagoblin.org/>`_ for more
+information about the project, our preferred methods, and guides for
+developing MediaGoblin. We even have tips on *becoming* a coder and
+we're willing to help!
- A nice word from you could send someone into a tizzy of
- productive work. Ten nice words could complete a feature.
- One hundred nice words could get us to the next milestone.
+Send Encouragement, Spread the Word
+-----------------------------------
- Send it to the `mailing list <http://mediagoblin.org/join/>`_
- or hop into ``#mediagoblin`` on Freenode.net and let us know.
+Sometimes, a nice word, simple encouragement, and interest in the work
+we're doing is enough to inspire a tizzy of productive work. Just a
+bit more interest and encouragement can even make the difference
+between a complete feature and limited functionality; between a
+completed milestone and lost momentum.
+Similarly, MediaGoblin, and the movement for free network services, is
+always in need of encouragement. Use free network services, understand
+the `principals <http://autonomo.us/2008/07/franklin-street-statement/>`_
+behind the movement, be able to articulate the benefits of free
+network services and the problems with psudo-free applications that
+don't respect the users' freedom.
- **Spread the word**
-
- The seductive call of Free Software services is a powerful
- one, but many cannot hear it because it's drowned out by the
- rush hour traffic honking of proprietary walled gardens and
- faux free services. Yuck! Be the sweet chirrup of the bird
- amidst the din! Tell others that there is a better way to
- live!
-
- FIXME - do we want to talk about ways to spread the word?
-
- FIXME - how can people notify us that they're spreading the
- word?
+Write a blog post, post a status update, drop by the `listserv <http://mediagoblin.org/join/>`_
+or join ``#mediagoblin`` on freenode.net and let us know.
+Participate in MediaGoblin
+==========================
We're still working on project infrastructure. We hope to have the
bits in place for these additional things to do in the coming months:
- **Become a user**
-
- We're building GNU MediaGoblin for us and for you but really
- you're one of us and I am you and we are we and GNU
- MediaGoblin is the walrus.
-
- Sign up for an account. Use the service. Relish in the
- thought that this service comes with a heaping side of Freedom
- and you can salt and pepper it to your liking.
+Become a User
+-------------
+We're building GNU MediaGoblin for us and for you but really
+you're one of us and I am you and we are we and GNU
+MediaGoblin is the walrus.
- **Help other users**
+Sign up for an account. Use the service. Relish in the
+thought that this service comes with a heaping side of Freedom
+and you can salt and pepper it to your liking.
- Have you spent time with GNU MediaGoblin? If so, your
- experience and wisdom are invaluable and you're the best
- person we can think of to help other users with their
- questions.
+Help Others
+-----------
- **Run your own instance**
+Have you spent time with GNU MediaGoblin? If so, your
+experience and wisdom are invaluable and you're the best
+person we can think of to help other users with their
+questions.
- Are there things about our instance you want to change? Are
- there things about other instances you wish were different?
- Want to test upcoming changes? Want to create patches to
- implement things you need? That's great---you can run your
- own instance!
-
- For more information on deploying your own instance, see
- :ref:`deployment-howto`.
+Run your own MediaGoblin Instance
+---------------------------------
- **Translate GNU MediaGoblin**
+Are there things about our instance you want to change? Are
+there things about other instances you wish were different?
+Want to test upcoming changes? Want to create patches to
+implement things you need? That's great---you can run your
+own instance!
- Knowing more than one language is an important skill. If you
- are multi-lingual and are interested in translating GNU
- MediaGoblin, see :ref:`translating`.
-
-
- **Create a theme**
-
- As people deploy their own GNU MediaGoblin instances, good
- themes are a must have! For more information on theming, see
- :ref:`theming-howto`.
+For more information on deploying your own instance, see
+the `Deployment HOWTO </deploymenthowto.html>`_
+.. _translating:
-Contributing thank you drawings / copyright assignment
-======================================================
+Translate MediaGoblin
+---------------------
-Copyright assignment with GNU MediaGoblin to the `FSF
-<http://fsf.org>`_ is highly encouraged but not mandatory. To
-incentivize both this and people to make cool contributions to our
-project, if you make useful contributions to GNU MediaGoblin *and* do
-a copyright assignment to the Free Software Foundation, the founder of
-the project, Chris Webber, will make a custom drawing of a goblin
-dedicated specifically to you.
+If you know English and another language and feel comfortable
+translating elements of the interface or even the documentation,
+we'd love to have help translating the software and resources.
-For why we're doing copyright assignment, see the
-`wiki <http://wiki.mediagoblin.org/>`_.
+Create a Theme
+--------------
+MedaGoblin development is premised on the idea that the entire
+interface for the platform be completely theme-able. If you have a
+design or theming background, consider developing themes for
+MediaGoblin. New themes help test the theming system, provide
+attractive and appealing interfaces for prospective users. If you want
+to start a new theme but don't know where to start, touch base with
+the development community on the list or in the IRC channel for more
+information.
.. _filing-bugs:
-File bugs
+File Bugs
=========
-GNU MediaGoblin uses a bug tracker called `Redmine
-<http://www.redmine.org>`_.
+MediaGoblin uses a bug tracker called `Redmine <http://www.redmine.org>`_.
-The bug tracker is at `<http://bugs.foocorp.net/projects/mediagoblin>`_.
+Our instance is located at `<http://bugs.foocorp.net/projects/mediagoblin>`_.
-A good bug report has the following things in it:
+The most useful bug reports have the following components:
1. A short summary that's 60 characters or less.
2. A description that describes the issue (bug, feature request, ...)
- as well as the context.
+ as well as the context. Consider:
- * If it's a bug, can you reproduce it? Is the issue specific to a
- browser, computer, image, ...?
+ * If you think you've found a bug, can you reproduce it in a
+ controlled environment? Is the issue specific to a browser,
+ computer, image, media type, or other dimension? All data helps.
- * If it's a feature request, are there related links on the Internet
- for more information? Would you be willing to help implement or
- test the feature?
+ * If you're submitting a feature request, are there related links
+ on the Internet for more information? Would you be willing to
+ help implement or test the feature?
-That's it! When someone looks into the issue and has questions,
-they'll contact you!
+That's it!
-If you don't hear from anyone in a couple of weeks, find someone on
-IRC.
+The better the issue report, the easier it is to address the bug, and
+the more likely that the developers will be able to resolve the
+issue. If someone has questions about the bug report, they may reach
+out to the reporter directly.
+If you get a response after a couple of weeks, find someone on IRC.
-.. _translating:
+.. _triage-bugs:
+
+Triage Bugs
+===========
+
+The triage process involves reviewing bugs, removing duplicates,
+validating that the issues described are reproducible, ensuring that
+the exact behavior is properly documented, diagnosing the cause of
+each issue, and working with developers to ensure that critical bugs
+get addressed. In many cases, developers do this kind of work as a
+matter of course, but one need not be able to code in order to help
+working with bugs.
+
+To triage bugs, go to the `bug tracker <http://bugs.foocorp.net/projects/mediagoblin>`_
+and begin reviewing the open issues. If you are able, attempt to:
-Translate GNU MediaGoblin
-=========================
+- ensure that one or two people in addition to the initial reporter
+ have been able to reproduce the issue.
-Coming soon when we set up translation infrastructure.
+- document the issue more clearly. If you had any trouble reproducing
+ the issue, provide any elucidating information that you can to help
+ others solve the problem more effectively.
+
+- find a way to resolve the problem or provide a workaround.
+For help, instructions, and suggestions be in touch with the
+development community on the list or in the IRC channel for more
+information. With many eyes, all bugs are shallow.
-Where to go when you get stuck
-==============================
+How to Get Help with MediaGoblin
+================================
-Go to `our Web site <http://mediagoblin.org/>`_ where we list the
-various places we hang out and how to get a hold of us.
+The usual channels, the IRC channel, the listserv, the bug tracker,
+are all great ways to be in touch with us. Check the `web site <http://mediagoblin.org/pages/join.html>`_
+for more specific contact information.
diff --git a/docs/source/foreword.rst b/docs/source/foreword.rst
index 1d423f08..c525d002 100644
--- a/docs/source/foreword.rst
+++ b/docs/source/foreword.rst
@@ -1,46 +1,46 @@
-==========
- Foreword
-==========
+========
+Foreword
+========
-About this manual
-=================
+About the MediaGoblin Manual
+============================
-This is the GNU MediaGoblin manual. This documentation targets the
-following groups of individuals:
+Welcome to the GNU MediaGoblin manual. This document targets several
+classes of users, including:
-* people who want to use the software
-* people who want to deploy the software
-* contributors
+* users who would like to try the software locally,
+* systems administrators who want to deploy and administer the
+ software in "production environments," and
+* anyone who wants to learn how MediaGoblin works.
-This manual is a living document and is in the ``mediagoblin``
-repository in the ``docs/`` directory.
+Some information relevant to the MediaGoblin community members,
+including how to get involved (We want and love contributors!) To join
+as a contributor please see the following pages:
+* http://mediagoblin.org/pages/join.html for general "join us" information
+* http://wiki.mediagoblin.org/ for our contributor-focused wiki
-Who wrote this documentation?
-=============================
+If you suspect that documentation on http://docs.mediagoblin.org is
+out of date, it might be. The documentation is updated regularly and
+the "living" version of this resource resides in the ``mediagoblin``
+repository with the project's source code the ``docs/`` directory.
-In no particular order:
+Improving the MediaGobiin Manual
+================================
-* Chris
-* Will
-* Deb
-* Greg
-* Karen
-* Matt
-* Asheesh
+There are a few ways---please pick whichever method is convenient for
+you!
-
-I found an error in the docs---who do I tell?
-=============================================
-
-There are a few ways---please pick the one most convenient to you!
-
-1. Write up a bug report in the bug tracker at http://bugs.foocorp.net/ .
+1. Write up a bug report in the bug tracker at http://bugs.foocorp.net/projects/mediagoblin/issues
2. Tell someone on IRC ``#mediagoblin`` on Freenode.
-3. Send an email to Will ``willg at bluesock dot org``.
+3. Send an email to Will ``willg at bluesock dot org``, or Sam at
+ ``sam@cyborginstitute.com``
When you tell us about your issue, please let us know:
* where you are looking (in git? url of the web-page?)
-* what the issue is
-* your thoughts on how to resolve it
+* what the issue is, and
+* your thoughts on how to resolve it.
+
+We hope these materials are useful and we look forward to any and all
+feedback.
diff --git a/docs/source/git.rst b/docs/source/git.rst
deleted file mode 100644
index ab3206b6..00000000
--- a/docs/source/git.rst
+++ /dev/null
@@ -1,224 +0,0 @@
-==========================
- Git, Cloning and Patches
-==========================
-
-.. contents:: Sections
- :local:
-
-
-GNU MediaGoblin uses git for all our version control and we have the
-repositories hosted on `Gitorious <http://gitorious.org/>`_. We have
-two repositories:
-
-* MediaGoblin software: http://gitorious.org/mediagoblin/mediagoblin
-* MediaGoblin website: http://gitorious.org/mediagoblin/mediagoblin-website
-
-It's most likely you want to look at the software repository--not the
-website one.
-
-The rest of this chapter talks about using the software repository.
-
-
-How to clone the project
-========================
-
-Do::
-
- git clone git://gitorious.org/mediagoblin/mediagoblin.git
-
-
-How to contribute changes
-=========================
-
-Tie your changes to issues in the issue tracker
------------------------------------------------
-
-All patches should be tied to issues in the `issue tracker
-<http://bugs.foocorp.net/projects/mediagoblin/issues>`_. That makes
-it a lot easier for everyone to track proposed changes and make sure
-your hard work doesn't get dropped on the floor! If there isn't an
-issue for what you're working on, please create one. The better the
-description of what it is you're trying to fix/implement, the better
-everyone else is able to understand why you're doing what you're
-doing.
-
-
-Use bugfix branches to make changes
------------------------------------
-
-The best way to isolate your changes is to create a branch based off
-of the MediaGoblin repository master branch, do the changes related to
-that one issue there, and then let us know how to get it.
-
-It's much easier on us if you isolate your changes to a branch focused
-on the issue. Then we don't have to sift through things.
-
-It's much easier on you if you isolate your changes to a branch
-focused on the issue. Then when we merge your changes in, you just
-have to do a ``git fetch`` and that's it. This is especially true if
-we reject some of your changes, but accept others or otherwise tweak
-your changes.
-
-Further, if you isolate your changes to a branch, then you can work on
-multiple issues at the same time and they don't conflict with one
-another.
-
-Name your branches using the isue number and something that makes it clear
-what it's about. For example, if you were working on tagging, you
-might name your branch ``360_tagging``.
-
-
-Properly document your changes
-------------------------------
-
-Include comments in the code.
-
-Write comprehensive commit messages. The better your commit message
-is at describing what you did and why, the easier it is for us to
-quickly accept your patch.
-
-Write comprehensive comments in the issue tracker about what you're
-doing and why.
-
-
-How to send us your changes
----------------------------
-
-There are two ways to let us know how to get it:
-
-1. *(preferred)* **push changes to publicly available git clone and
- let us know where to find it**
-
- Push your feature/bugfix/issue branch to your publicly available
- git clone and add a comment to the issue with the url for your
- clone and the branch to look at.
-
-2. **attaching the patch files to the issue**
-
- Run::
-
- git format-patch --stdout <remote>/master > issue_<number>.patch
-
- ``format-patch`` creates a patch of all the commits that are in
- your branch that aren't in ``<remote>/master``. The ``--stdout``
- flag causes all this output to go to stdout where it's redirected
- to a file named ``issue_<number>.patch``. That file should be
- based on the issue you're working with. For example,
- ``issue_42.patch`` is a good filename and ``issue_42_rev2.patch``
- is good if you did a revision of it.
-
- Having said all that, the filename isn't wildly important.
-
-
-Example workflow
-================
-
-Here's an example workflow.
-
-
-Contributing changes
---------------------
-
-Slartibartfast from the planet Magrathea far off in the universe has
-decided that he is bored with fjords and wants to fix issue 42 (the
-meaning of life bug) and send us the changes.
-
-Slartibartfast has cloned the MediaGoblin repository and his clone
-lives on gitorious.
-
-Slartibartfast works locally. The remote named ``origin`` points to
-his clone on gitorious. The remote named ``gmg`` points to the
-MediaGoblin repository.
-
-Slartibartfast does the following:
-
-1. Fetches the latest from the MediaGoblin repository::
-
- git fetch --all -p
-
- This tells ``git fetch`` to fetch all the recent data from all of
- the remotes (``--all``) and prune any branches that have been
- deleted in the remotes (``-p``).
-
-2. Creates a branch from the tip of the MediaGoblin repository (the
- remote is named ``gmg``) master branch called ``bug42_meaning_of_life``::
-
- git checkout -b bug42_meaning_of_life gmg/master
-
- This creates a new branch (``-b``) named ``bug42_meaning_of_life`` based
- on the tip of the ``master`` branch of the remote named ``gmg`` and checks
- it out.
-
-3. Slartibartfast works hard on his changes in the ``bug42_meaning_of_life``
- branch. When done, he wants to notify us that he has made changes
- he wants us to see.
-
-4. Slartibartfast pushes his changes to his clone::
-
- git push origin bug42_meaning_of_life --set-upstream
-
- This pushes the changes in the ``bug42_meaning_of_life`` branch to the
- remote named ``origin``.
-
-5. Slartibartfast adds a comment to issue 42 with the url for his
- repository and the name of the branch he put the code in. He also
- explains what he did and why it addresses the issue.
-
-
-Updating a contribution
------------------------
-
-Slartibartfast brushes his hands off with the sense of accomplishment
-that comes with the knowledge of a job well done. He stands, wanders
-over to get a cup of water, then realizes that he forgot to run the
-unit tests!
-
-He runs the unit tests and discovers there's a bug in the code!
-
-Then he does this:
-
-1. He checks out the ``bug42_meaning_of_life`` branch::
-
- git checkout bug42_meaning_of_life
-
-2. He fixes the bug and checks it into the ``bug42_meaning_of_life`` branch.
-
-3. He pushes his changes to his clone (the remote is named ``origin``)::
-
- git push origin bug42_meaning_of_life
-
-4. He adds another comment to issue 42 explaining about the mistake
- and how he fixed it and that he's pushed the new change to the
- ``bug42_meaning_of_life`` branch of his publicly available clone.
-
-
-What happens next
------------------
-
-Slartibartfast is once again happy with his work. He finds issue 42
-in the issue tracker and adds a comment saying he submitted a merge
-request with his changes and explains what they are.
-
-Later, someone checks out his code and finds a problem with it. He
-adds a comment to the issue tracker specifying the problem and asks
-Slartibartfast to fix it. Slartibartfst goes through the above steps
-again, fixes the issue, pushes it to his ``bug42_meaning_of_life`` branch and adds
-another comment to the issue tracker about how he fixed it.
-
-Later, someone checks out his code and is happy with it. Someone
-pulls it into the master branch of the MediaGoblin repository and adds
-another comment to the issue and probably closes the issue out.
-
-Slartibartfast is notified of this. Slartibartfast does a::
-
- git fetch --all
-
-The changes show up in the ``master`` branch of the ``gmg`` remote.
-Slartibartfast now deletes his ``bug42_meaning_of_life`` branch
-because he doesn't need it anymore.
-
-
-How to learn git
-================
-
-Check out `the wiki <http://wiki.mediagoblin.org/>`_.
diff --git a/docs/source/index.rst b/docs/source/index.rst
index 8c00869a..93b2a942 100644
--- a/docs/source/index.rst
+++ b/docs/source/index.rst
@@ -12,11 +12,10 @@ Table of Contents:
:maxdepth: 2
foreword
- mediagoblin
- contributinghowto
+ about_mediagoblin
deploymenthowto
theminghowto
- git
+ contributinghowto
codebase
vision
@@ -24,7 +23,8 @@ Table of Contents:
Indices and tables
==================
-* :ref:`genindex`
-* :ref:`modindex`
* :ref:`search`
+* :ref:`genindex`
+
+.. * :ref:`modindex`
diff --git a/docs/source/mediagoblin.rst b/docs/source/mediagoblin.rst
deleted file mode 100644
index af6658f3..00000000
--- a/docs/source/mediagoblin.rst
+++ /dev/null
@@ -1,70 +0,0 @@
-=================
- GNU MediaGoblin
-=================
-
-.. contents:: Sections
- :local:
-
-
-What is GNU MediaGoblin
-=======================
-
-Three years ago (2008), a number of free software luminaries got
-together at the FSF office to answer the question, "What should
-software freedom look like on the participatory web?" Those thinkers
-included Richard Stallman---founder of the free software movement and
-instigator of the GNU project, Evan Prodromou---the driving force
-behind Status.net, a highly sucessful federated micro-blogging
-service, and FIXME.
-
-Since that time Identi.ca and Libre.fm have answered the
-freedom-loving web-user's need for micro-blogging and music sharing.
-Now, GNU MediaGoblin is building a format for users to share photos.
-Later versions of MediaGoblin will include support for video and other
-media as well as tools to encourage collaboration on media projects.
-
-
-Why are we doing this?
-======================
-
-Centralization and proprietization of media on the internet is a
-serious problem and makes the web go from a system of extreme
-resilience to a system of frightening fragility. We believe people
-should be able to free their data from proprietary control and that
-means someone has to build the tools to make it possible. We decided
-that in this case, that someone would be us!
-
-
-Who are you?
-============
-
-Free software activists and folks who have worked on a variety of
-other projects like Libre.fm, GNU Social, Status.net, Miro, Miro
-Community, OpenHatch and other projects as well. We're admirers and
-contributors. We're writers and painters. We're friendly and
-dedicated to computer user freedom.
-
-
-How can I participate?
-======================
-
-See `Get Involved <http://mediagoblin.org/join/>`_ on the website..
-
-
-How is GNU MediaGoblin licensed?
-================================
-
-GNU MediaGoblin software is released under an AGPLv3 license.
-
-See the ``COPYING`` file in the source for details.
-
-
-Is this an official GNU Project? What does that mean?
-======================================================
-
-We are! It means that we meet the GNU Project's rigourous standards
-for free software. To find out more about what that means, check out
-`the GNU site <http://gnu.org/>`_.
-
-Please feel free to contact us with further questions!
-
diff --git a/mediagoblin.ini b/mediagoblin.ini
index e889646a..c22d12d7 100644
--- a/mediagoblin.ini
+++ b/mediagoblin.ini
@@ -1,7 +1,4 @@
[mediagoblin]
-queuestore_base_dir = %(here)s/user_dev/media/queue
-publicstore_base_dir = %(here)s/user_dev/media/public
-publicstore_base_url = /mgoblin_media/
direct_remote_path = /mgoblin_static/
email_sender_address = "notice@mediagoblin.example.org"
@@ -14,5 +11,12 @@ allow_registration = true
## Uncomment this to put some user-overriding templates here
#local_templates = %(here)s/user_dev/templates/
+[storage:queuestore]
+base_dir = %(here)s/user_dev/media/queue
+
+[storage:publicstore]
+base_dir = %(here)s/user_dev/media/public
+base_url = /mgoblin_media/
+
[celery]
# Put celery stuff here
diff --git a/mediagoblin/auth/forms.py b/mediagoblin/auth/forms.py
index 917909c5..d1f3c5dc 100644
--- a/mediagoblin/auth/forms.py
+++ b/mediagoblin/auth/forms.py
@@ -24,21 +24,29 @@ class RegistrationForm(wtforms.Form):
_('Username'),
[wtforms.validators.Required(),
wtforms.validators.Length(min=3, max=30),
- wtforms.validators.Regexp(r'^\w+$')])
+ wtforms.validators.Regexp(r'^\w+$')],
+ description=_(
+ u"This is the name other users will identify you with."))
password = wtforms.PasswordField(
_('Password'),
[wtforms.validators.Required(),
wtforms.validators.Length(min=6, max=30),
wtforms.validators.EqualTo(
'confirm_password',
- _('Passwords must match.'))])
+ _('Passwords must match.'))],
+ description=_(
+ u"Try to use a strong password!"))
confirm_password = wtforms.PasswordField(
_('Confirm password'),
- [wtforms.validators.Required()])
+ [wtforms.validators.Required()],
+ description=_(
+ u"Type it again here to make sure there are no spelling mistakes."))
email = wtforms.TextField(
_('Email address'),
[wtforms.validators.Required(),
- wtforms.validators.Email()])
+ wtforms.validators.Email()],
+ description=_(
+ u"Your email will never be published."))
class LoginForm(wtforms.Form):
diff --git a/mediagoblin/auth/views.py b/mediagoblin/auth/views.py
index 4c4a34fd..48c5937c 100644
--- a/mediagoblin/auth/views.py
+++ b/mediagoblin/auth/views.py
@@ -44,11 +44,12 @@ def register(request):
if request.method == 'POST' and register_form.validate():
# TODO: Make sure the user doesn't exist already
-
+ username = unicode(request.POST['username'].lower())
+ email = unicode(request.POST['email'].lower())
users_with_username = request.db.User.find(
- {'username': request.POST['username'].lower()}).count()
+ {'username': username}).count()
users_with_email = request.db.User.find(
- {'email': request.POST['email'].lower()}).count()
+ {'email': email}).count()
extra_validation_passes = True
@@ -64,8 +65,8 @@ def register(request):
if extra_validation_passes:
# Create the user
user = request.db.User()
- user['username'] = request.POST['username'].lower()
- user['email'] = request.POST['email'].lower()
+ user['username'] = username
+ user['email'] = email
user['pw_hash'] = auth_lib.bcrypt_gen_password_hash(
request.POST['password'])
user.save(validate=True)
diff --git a/mediagoblin/config_spec.ini b/mediagoblin/config_spec.ini
index bbc1f7d6..a0fbde09 100644
--- a/mediagoblin/config_spec.ini
+++ b/mediagoblin/config_spec.ini
@@ -4,15 +4,10 @@ db_host = string()
db_name = string(default="mediagoblin")
db_port = integer()
-#
-queuestore_base_dir = string(default="%(here)s/user_dev/media/queue")
-publicstore_base_dir = string(default="%(here)s/user_dev/media/public")
# Where temporary files used in processing and etc are kept
workbench_path = string(default="%(here)s/user_dev/media/workbench")
-#
-publicstore_base_url = string(default="/mgoblin_media/")
# Where mediagoblin-builtin static assets are kept
direct_remote_path = string(default="/mgoblin_static/")
@@ -20,6 +15,10 @@ direct_remote_path = string(default="/mgoblin_static/")
# set to false to enable sending notices
email_debug_mode = boolean(default=True)
email_sender_address = string(default="notice@mediagoblin.example.org")
+email_smtp_host = string(default='')
+email_smtp_port = integer(default=25)
+email_smtp_user = string(default=None)
+email_smtp_pass = string(default=None)
# Set to false to disable registrations
allow_registration = boolean(default=True)
@@ -37,6 +36,20 @@ local_templates = string()
# itself)
celery_setup_elsewhere = boolean(default=False)
+# Whether or not users are able to upload files of any filetype with
+# their media entries -- This is useful if you want to provide the
+# source files for a media file but can also be a HUGE security risk.
+allow_attachments = boolean(default=False)
+
+
+[storage:publicstore]
+base_dir = string(default="%(here)s/user_dev/media/public")
+base_url = string(default="/mgoblin_media/")
+
+[storage:queuestore]
+base_dir = string(default="%(here)s/user_dev/media/queue")
+
+
[celery]
# known booleans
celery_result_persistent = boolean()
diff --git a/mediagoblin/decorators.py b/mediagoblin/decorators.py
index c66049ca..f1b5d229 100644
--- a/mediagoblin/decorators.py
+++ b/mediagoblin/decorators.py
@@ -52,6 +52,22 @@ def require_active_login(controller):
return _make_safe(new_controller_func, controller)
+def user_may_delete_media(controller):
+ """
+ Require user ownership of the MediaEntry to delete.
+ """
+ def wrapper(request, *args, **kwargs):
+ uploader = request.db.MediaEntry.find_one(
+ {'_id': ObjectId(request.matchdict['media'])}).uploader()
+ if not (request.user['is_admin'] or
+ request.user['_id'] == uploader['_id']):
+ return exc.HTTPForbidden()
+
+ return controller(request, *args, **kwargs)
+
+ return _make_safe(wrapper, controller)
+
+
def uses_pagination(controller):
"""
Check request GET 'page' key for wrong values
@@ -122,3 +138,4 @@ def get_media_entry_by_id(controller):
return controller(request, media=media, *args, **kwargs)
return _make_safe(wrapper, controller)
+
diff --git a/mediagoblin/edit/forms.py b/mediagoblin/edit/forms.py
index 2f3ed203..c5ab9fd9 100644
--- a/mediagoblin/edit/forms.py
+++ b/mediagoblin/edit/forms.py
@@ -40,4 +40,10 @@ class EditProfileForm(wtforms.Form):
url = wtforms.TextField(
_('Website'),
[wtforms.validators.Optional(),
- wtforms.validators.URL(message=_('Improperly formed URL'))])
+ wtforms.validators.URL(message='Improperly formed URL')])
+
+class EditAttachmentsForm(wtforms.Form):
+ attachment_name = wtforms.TextField(
+ 'Title')
+ attachment_file = wtforms.FileField(
+ 'File')
diff --git a/mediagoblin/edit/views.py b/mediagoblin/edit/views.py
index 0b1a98f1..f766afdc 100644
--- a/mediagoblin/edit/views.py
+++ b/mediagoblin/edit/views.py
@@ -14,9 +14,14 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+import uuid
from webob import exc
from string import split
+from cgi import FieldStorage
+from datetime import datetime
+
+from werkzeug.utils import secure_filename
from mediagoblin import messages
from mediagoblin import mg_globals
@@ -35,11 +40,18 @@ def edit_media(request, media):
if not may_edit_media(request, media):
return exc.HTTPForbidden()
- form = forms.EditForm(request.POST,
- title = media['title'],
- slug = media['slug'],
- description = media['description'],
- tags = media_tags_as_string(media['tags']))
+ defaults = dict(
+ title=media['title'],
+ slug=media['slug'],
+ description=media['description'],
+ tags=media_tags_as_string(media['tags']))
+
+ if len(media['attachment_files']):
+ defaults['attachment_name'] = media['attachment_files'][0]['name']
+
+ form = forms.EditForm(
+ request.POST,
+ **defaults)
if request.method == 'POST' and form.validate():
# Make sure there isn't already a MediaEntry with such a slug
@@ -48,20 +60,28 @@ def edit_media(request, media):
{'slug': request.POST['slug'],
'uploader': media['uploader'],
'_id': {'$ne': media['_id']}}).count()
-
+
if existing_user_slug_entries:
form.slug.errors.append(
_(u'An entry with that slug already exists for this user.'))
else:
- media['title'] = request.POST['title']
- media['description'] = request.POST.get('description')
+ media['title'] = unicode(request.POST['title'])
+ media['description'] = unicode(request.POST.get('description'))
media['tags'] = convert_to_tag_list_of_dicts(
request.POST.get('tags'))
-
+
media['description_html'] = cleaned_markdown_conversion(
media['description'])
- media['slug'] = request.POST['slug']
+ if 'attachment_name' in request.POST:
+ media['attachment_files'][0]['name'] = \
+ request.POST['attachment_name']
+
+ if 'attachment_delete' in request.POST \
+ and 'y' == request.POST['attachment_delete']:
+ del media['attachment_files'][0]
+
+ media['slug'] = unicode(request.POST['slug'])
media.save()
return redirect(request, "mediagoblin.user_pages.media_home",
@@ -73,18 +93,68 @@ def edit_media(request, media):
messages.add_message(
request, messages.WARNING,
_("You are editing another user's media. Proceed with caution."))
-
return render_to_response(
request,
'mediagoblin/edit/edit.html',
{'media': media,
'form': form})
-
+
+@get_user_media_entry
@require_active_login
-def edit_profile(request):
+def edit_attachments(request, media):
+ if mg_globals.app_config['allow_attachments']:
+ form = forms.EditAttachmentsForm()
+
+ # Add any attachements
+ if ('attachment_file' in request.POST
+ and isinstance(request.POST['attachment_file'], FieldStorage)
+ and request.POST['attachment_file'].file):
+
+ attachment_public_filepath \
+ = mg_globals.public_store.get_unique_filepath(
+ ['media_entries', unicode(media['_id']), 'attachment',
+ secure_filename(request.POST['attachment_file'].filename)])
+
+ attachment_public_file = mg_globals.public_store.get_file(
+ attachment_public_filepath, 'wb')
+
+ try:
+ attachment_public_file.write(
+ request.POST['attachment_file'].file.read())
+ finally:
+ request.POST['attachment_file'].file.close()
+
+ media['attachment_files'].append(dict(
+ name=request.POST['attachment_name'] \
+ or request.POST['attachment_file'].filename,
+ filepath=attachment_public_filepath,
+ created=datetime.utcnow()
+ ))
+ media.save()
+
+ messages.add_message(
+ request, messages.SUCCESS,
+ "You added the attachment %s!" \
+ % (request.POST['attachment_name']
+ or request.POST['attachment_file'].filename))
+
+ return redirect(request, 'mediagoblin.user_pages.media_home',
+ user=media.uploader()['username'],
+ media=media['slug'])
+ return render_to_response(
+ request,
+ 'mediagoblin/edit/attachments.html',
+ {'media': media,
+ 'form': form})
+ else:
+ return exc.HTTPForbidden()
+
+
+@require_active_login
+def edit_profile(request):
# admins may edit any user profile given a username in the querystring
edit_username = request.GET.get('username')
if request.user['is_admin'] and request.user['username'] != edit_username:
@@ -98,23 +168,23 @@ def edit_profile(request):
user = request.user
form = forms.EditProfileForm(request.POST,
- url = user.get('url'),
- bio = user.get('bio'))
+ url=user.get('url'),
+ bio=user.get('bio'))
if request.method == 'POST' and form.validate():
- user['url'] = request.POST['url']
- user['bio'] = request.POST['bio']
+ user['url'] = unicode(request.POST['url'])
+ user['bio'] = unicode(request.POST['bio'])
user['bio_html'] = cleaned_markdown_conversion(user['bio'])
user.save()
- messages.add_message(request,
- messages.SUCCESS,
- 'Profile edited!')
+ messages.add_message(request,
+ messages.SUCCESS,
+ 'Profile edited!')
return redirect(request,
'mediagoblin.user_pages.user_home',
- user=edit_username)
+ user=edit_username)
return render_to_response(
request,
diff --git a/mediagoblin/errormiddleware.py b/mediagoblin/errormiddleware.py
new file mode 100644
index 00000000..352dc891
--- /dev/null
+++ b/mediagoblin/errormiddleware.py
@@ -0,0 +1,60 @@
+# GNU MediaGoblin -- federated, autonomous media hosting
+# Copyright (C) 2011 Free Software Foundation, Inc
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+from paste.exceptions.errormiddleware import make_error_middleware
+
+MGOBLIN_ERROR_MESSAGE = """\
+<div style="text-align:center;font-family: monospace">
+ <h1>YEOWCH... that's an error!</h1>
+ <pre>
+.-------------------------.
+| __ _ |
+| -, \_,------,_// |
+| <\ ,-- --.\ |
+| / (x ) ( X ) |
+| ' '--, ,--'\ |
+| / \ -v-v-u-v / |
+| . '.__.--__'.\ |
+| / ',___/ / \__/' |
+| | | ,'\_'/, || |
+| \_| | | | | || |
+| W',_ ||| |||_'' |
+| | '------'| |
+| |__| |_|_ |
+| ,,,-' '-,,, |
+'-------------------------'
+ </pre>
+ <p>Something bad happened, and things broke.</p>
+ <p>If this is not your website, you may want to alert the owner.</p>
+ <br><br>
+ <p>
+ Powered... er broken... by
+ <a href="http://www.mediagoblin.org">MediaGoblin</a>,
+ a <a href="http://www.gnu.org">GNU Project</a>.
+ </p>
+</div>"""
+
+
+def mgoblin_error_middleware(app, global_conf, **kw):
+ """
+ MediaGoblin wrapped error middleware.
+
+ This is really just wrapping the error middleware from Paste.
+ It should take all of Paste's default options, so see:
+ http://pythonpaste.org/modules/exceptions.html
+ """
+ kw['error_message'] = MGOBLIN_ERROR_MESSAGE
+ return make_error_middleware(app, global_conf, **kw)
diff --git a/mediagoblin/gmg_commands/__init__.py b/mediagoblin/gmg_commands/__init__.py
index 921f0430..8226fd0e 100644
--- a/mediagoblin/gmg_commands/__init__.py
+++ b/mediagoblin/gmg_commands/__init__.py
@@ -44,6 +44,14 @@ SUBCOMMAND_MAP = {
'setup': 'mediagoblin.gmg_commands.wipealldata:wipe_parser_setup',
'func': 'mediagoblin.gmg_commands.wipealldata:wipe',
'help': 'Wipes **all** the data for this MediaGoblin instance'},
+ 'env_export': {
+ 'setup': 'mediagoblin.gmg_commands.import_export:import_export_parse_setup',
+ 'func': 'mediagoblin.gmg_commands.import_export:env_export',
+ 'help': 'Exports the data for this MediaGoblin instance'},
+ 'env_import': {
+ 'setup': 'mediagoblin.gmg_commands.import_export:import_export_parse_setup',
+ 'func': 'mediagoblin.gmg_commands.import_export:env_import',
+ 'help': 'Exports the data for this MediaGoblin instance'},
}
diff --git a/mediagoblin/gmg_commands/import_export.py b/mediagoblin/gmg_commands/import_export.py
new file mode 100644
index 00000000..367924a5
--- /dev/null
+++ b/mediagoblin/gmg_commands/import_export.py
@@ -0,0 +1,250 @@
+# GNU MediaGoblin -- federated, autonomous media hosting
+# Copyright (C) 2011 Free Software Foundation, Inc
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+from mediagoblin import mg_globals
+from mediagoblin.db.open import setup_connection_and_db_from_config
+from mediagoblin.init.config import read_mediagoblin_config
+from mediagoblin.storage import BasicFileStorage
+from mediagoblin.init import setup_storage, setup_global_and_app_config
+
+import shutil
+import tarfile
+import tempfile
+import subprocess
+import os.path
+import os
+import sys
+from contextlib import closing
+
+
+def import_export_parse_setup(subparser):
+ # TODO: Add default
+ subparser.add_argument(
+ 'tar_file')
+ subparser.add_argument(
+ '-cf', '--conf_file', default='mediagoblin.ini',
+ help='Config file used to set up environment')
+ subparser.add_argument(
+ '--mongodump_path', default='mongodump',
+ help='mongodump binary')
+ subparser.add_argument(
+ '--mongorestore_path', default='mongorestore',
+ help='mongorestore binary')
+ subparser.add_argument(
+ '--cache_path',
+ help='Temporary directory where files will be temporarily dumped')
+
+
+def _import_media(db, args):
+ """
+ Import media files
+
+ Must be called after _import_database()
+ """
+ print "\n== Importing media ==\n"
+
+ media_cache = BasicFileStorage(
+ args._cache_path['media'])
+
+ # TODO: Add import of queue files
+ queue_cache = BasicFileStorage(
+ args._cache_path['queue'])
+
+ for entry in db.media_entries.find():
+ for name, path in entry['media_files'].items():
+ media_file = mg_globals.public_store.get_file(path, mode='wb')
+ media_file.write(
+ media_cache.get_file(path, mode='rb').read())
+
+ print "\n== Media imported ==\n"
+
+
+def _import_database(db, args):
+ """
+ Restore mongo database from ___.bson files
+ """
+ print "\n== Importing database ==\n"
+
+ p = subprocess.Popen([
+ args.mongorestore_path,
+ '-d', db.name,
+ os.path.join(args._cache_path['database'], db.name)])
+
+ p.wait()
+
+ print "\n== Database imported ==\n"
+
+
+def env_import(args):
+ """
+ Restore mongo database and media files from a tar archive
+ """
+ if not args.cache_path:
+ args.cache_path = tempfile.mkdtemp()
+
+ setup_global_and_app_config(args.conf_file)
+
+ # Creates mg_globals.public_store and mg_globals.queue_store
+ setup_storage()
+
+ config, validation_result = read_mediagoblin_config(args.conf_file)
+ connection, db = setup_connection_and_db_from_config(
+ config['mediagoblin'], use_pymongo=True)
+
+ tf = tarfile.open(
+ args.tar_file,
+ mode='r|gz')
+
+ tf.extractall(args.cache_path)
+
+ args.cache_path = os.path.join(
+ args.cache_path, 'mediagoblin-data')
+ args = _setup_paths(args)
+
+ # Import database from extracted data
+ _import_database(db, args)
+
+ _import_media(db, args)
+
+ _clean(args)
+
+
+def _setup_paths(args):
+ """
+ Populate ``args`` variable with cache subpaths
+ """
+ args._cache_path = dict()
+ PATH_MAP = {
+ 'media': 'media',
+ 'queue': 'queue',
+ 'database': 'database'}
+
+ for key, val in PATH_MAP.items():
+ args._cache_path[key] = os.path.join(args.cache_path, val)
+
+ return args
+
+
+def _create_archive(args):
+ """
+ Create the tar archive
+ """
+ print "\n== Compressing to archive ==\n"
+
+ tf = tarfile.open(
+ args.tar_file,
+ mode='w|gz')
+
+ with closing(tf):
+ tf.add(args.cache_path, 'mediagoblin-data/')
+
+ print "\n== Archiving done ==\n"
+
+
+def _clean(args):
+ """
+ Remove cache directory
+ """
+ shutil.rmtree(args.cache_path)
+
+
+def _export_check(args):
+ """
+ Run security checks for export command
+ """
+ if os.path.exists(args.tar_file):
+ overwrite = raw_input(
+ 'The output file already exists. '
+ 'Are you **SURE** you want to overwrite it? '
+ '(yes/no)> ')
+ if not overwrite == 'yes':
+ print "Aborting."
+
+ return False
+
+ return True
+
+
+def _export_database(db, args):
+ print "\n== Exporting database ==\n"
+
+ command = '{mongodump_path} -d {database} -o {mongodump_cache}'.format(
+ mongodump_path=args.mongodump_path,
+ database=db.name,
+ mongodump_cache=args._cache_path['database'])
+
+ p = subprocess.Popen([
+ args.mongodump_path,
+ '-d', db.name,
+ '-o', args._cache_path['database']])
+
+ p.wait()
+
+ print "\n== Database exported ==\n"
+
+
+def _export_media(db, args):
+ print "\n== Exporting media ==\n"
+
+ media_cache = BasicFileStorage(
+ args._cache_path['media'])
+
+ # TODO: Add export of queue files
+ queue_cache = BasicFileStorage(
+ args._cache_path['queue'])
+
+ for entry in db.media_entries.find():
+ for name, path in entry['media_files'].items():
+ mc_file = media_cache.get_file(path, mode='wb')
+ mc_file.write(
+ mg_globals.public_store.get_file(path, mode='rb').read())
+
+ print "\n== Media exported ==\n"
+
+
+def env_export(args):
+ """
+ Export database and media files to a tar archive
+ """
+ if args.cache_path:
+ if os.path.exists(args.cache_path):
+ print 'The cache directory must not exist before you run this script'
+ print 'Cache directory: ', args.cache_path
+
+ return False
+ else:
+ args.cache_path = tempfile.mkdtemp()
+
+ args = _setup_paths(args)
+
+ if not _export_check(args):
+ print "\n== Checks did not pass, exiting ==\n"
+ sys.exit(0)
+
+ setup_global_and_app_config(args.conf_file)
+ setup_storage()
+
+ config, validation_result = read_mediagoblin_config(args.conf_file)
+ connection, db = setup_connection_and_db_from_config(
+ config['mediagoblin'], use_pymongo=True)
+
+ _export_database(db, args)
+
+ _export_media(db, args)
+
+ _create_archive(args)
+
+ _clean(args)
diff --git a/mediagoblin/i18n/ar/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/ar/LC_MESSAGES/mediagoblin.mo
new file mode 100644
index 00000000..aa0cd03b
--- /dev/null
+++ b/mediagoblin/i18n/ar/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/ar/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/ar/LC_MESSAGES/mediagoblin.po
new file mode 100644
index 00000000..201f2611
--- /dev/null
+++ b/mediagoblin/i18n/ar/LC_MESSAGES/mediagoblin.po
@@ -0,0 +1,399 @@
+# Translations template for PROJECT.
+# Copyright (C) 2011 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# Majid Al-Dharrab <majid@aldharrab.com>, 2011.
+# <osamak@gnu.org>, 2011.
+# <Omar.w.kh@gmail.com>, 2011.
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU MediaGoblin\n"
+"Report-Msgid-Bugs-To: http://bugs.foocorp.net/projects/mediagoblin/issues\n"
+"POT-Creation-Date: 2011-08-25 07:41-0500\n"
+"PO-Revision-Date: 2011-08-25 12:41+0000\n"
+"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 0.9.6\n"
+"Language: ar\n"
+"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5\n"
+
+#: mediagoblin/auth/forms.py:24 mediagoblin/auth/forms.py:46
+msgid "Username"
+msgstr "اسم المستخدم"
+
+#: mediagoblin/auth/forms.py:29 mediagoblin/auth/forms.py:50
+msgid "Password"
+msgstr "كلمة المرور"
+
+#: mediagoblin/auth/forms.py:34
+msgid "Passwords must match."
+msgstr "يجب أن تتطابق كلمتا المرور."
+
+#: mediagoblin/auth/forms.py:36
+msgid "Confirm password"
+msgstr "تأكيد كلمة المرور"
+
+#: mediagoblin/auth/forms.py:39
+msgid "Email address"
+msgstr "عنوان البريد الإلكتروني"
+
+#: mediagoblin/auth/views.py:40
+msgid "Sorry, registration is disabled on this instance."
+msgstr "عفوًا، التسجيل غير متاح هنا."
+
+#: mediagoblin/auth/views.py:57
+msgid "Sorry, a user with that name already exists."
+msgstr "عذرا، مستخدم بهذا الاسم موجود فعلا."
+
+#: mediagoblin/auth/views.py:61
+msgid "Sorry, that email address has already been taken."
+msgstr "عفوًا، هذا العنوان البريدي مستخدم."
+
+#: mediagoblin/auth/views.py:159
+msgid ""
+"Your email address has been verified. You may now login, edit your profile, "
+"and submit images!"
+msgstr ""
+"تم التحقق من بريدك الإلكتروني. يمكنك الآن الولوج، تحرير ملفك، وإرسال الصور!"
+
+#: mediagoblin/auth/views.py:165
+msgid "The verification key or user id is incorrect"
+msgstr "مفتاح التحقق أو معرف المستخدم خاطئ"
+
+#: mediagoblin/auth/views.py:186
+#: mediagoblin/templates/mediagoblin/auth/resent_verification_email.html:22
+msgid "Resent your verification email."
+msgstr "أعيد إرسال رسالة التحقق."
+
+#: mediagoblin/edit/forms.py:26 mediagoblin/submit/forms.py:27
+msgid "Title"
+msgstr "العنوان"
+
+#: mediagoblin/edit/forms.py:29
+msgid "Slug"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:30
+msgid "The slug can't be empty"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:33 mediagoblin/submit/forms.py:31
+msgid "Tags"
+msgstr "الوسوم"
+
+#: mediagoblin/edit/forms.py:38
+msgid "Bio"
+msgstr "السيرة"
+
+#: mediagoblin/edit/forms.py:41
+msgid "Website"
+msgstr "الموقع الإلكتروني"
+
+#: mediagoblin/edit/views.py:65
+msgid "An entry with that slug already exists for this user."
+msgstr ""
+
+#: mediagoblin/edit/views.py:94
+msgid "You are editing another user's media. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/edit/views.py:165
+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/submit/forms.py:25
+msgid "File"
+msgstr ""
+
+#: mediagoblin/submit/views.py:47
+msgid "You must provide a file."
+msgstr ""
+
+#: mediagoblin/submit/views.py:50
+msgid "The file doesn't seem to be an image!"
+msgstr "لا يبدو أن هذا الملف صورة!"
+
+#: mediagoblin/submit/views.py:122
+msgid "Woohoo! Submitted!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/404.html:21
+msgid "Oops!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/404.html:24
+msgid "There doesn't seem to be a page at this address. Sorry!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/404.html:26
+msgid ""
+"If you're sure the address is correct, maybe the page you're looking for has"
+" been moved or deleted."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/404.html:32
+msgid "Image of 404 goblin stressing out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:22
+msgid "GNU MediaGoblin"
+msgstr "غنو ميدياغوبلن"
+
+#: mediagoblin/templates/mediagoblin/base.html:47
+msgid "MediaGoblin logo"
+msgstr "شعار ميدياغوبلن"
+
+#: mediagoblin/templates/mediagoblin/base.html:52
+msgid "Submit media"
+msgstr "أرسل وسائط"
+
+#: mediagoblin/templates/mediagoblin/base.html:63
+msgid "verify your email!"
+msgstr "أكد بريدك"
+
+#: mediagoblin/templates/mediagoblin/base.html:73
+#: mediagoblin/templates/mediagoblin/auth/login.html:26
+#: mediagoblin/templates/mediagoblin/auth/login.html:34
+msgid "Log in"
+msgstr "لُج"
+
+#: mediagoblin/templates/mediagoblin/base.html:89
+msgid ""
+"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
+"href=\"http://gnu.org/\">GNU project</a>"
+msgstr ""
+"مدعوم بواسطة <a href=\"http://mediagoblin.org\">ميدياغوبلن</a>، <a "
+"href=\"http://gnu.org/\">مشروع غنو</a>"
+
+#: mediagoblin/templates/mediagoblin/root.html:27
+msgid "Hi there, media lover! MediaGoblin is..."
+msgstr "مرحبا بكم يا محبوا الوسائط! ميدياغوبلن هو..."
+
+#: 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 ""
+
+#: 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/auth/login.html:29
+msgid "Logging in failed!"
+msgstr "فشل الولوج!"
+
+#: mediagoblin/templates/mediagoblin/auth/login.html:42
+msgid "Don't have an account yet?"
+msgstr "ألا تملك حسابا؟"
+
+#: mediagoblin/templates/mediagoblin/auth/login.html:45
+msgid "Create one here!"
+msgstr "أنشئ حسابا هنا!"
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:27
+msgid "Create an account!"
+msgstr "أنشئ حسابا!"
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:30
+msgid "Create"
+msgstr "أنشئ"
+
+#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"\n"
+"to activate your GNU MediaGoblin account, open the following URL in\n"
+"your web browser:\n"
+"\n"
+"%(verification_url)s"
+msgstr ""
+"أهلا %(username)s،\n"
+"\n"
+"لتفعيل حسابك في غنو ميدياغوبلن، افتح الرابط التالي\n"
+"في متصفحك:\n"
+"\n"
+"%(verification_url)s"
+
+#: mediagoblin/templates/mediagoblin/edit/edit.html:29
+#, python-format
+msgid "Editing %(media_title)s"
+msgstr "تعديل %(media_title)s"
+
+#: mediagoblin/templates/mediagoblin/edit/edit.html:36
+msgid "Cancel"
+msgstr "ألغِ"
+
+#: mediagoblin/templates/mediagoblin/edit/edit.html:37
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
+msgid "Save changes"
+msgstr "احفظ التغييرات"
+
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:29
+#, python-format
+msgid "Editing %(username)s's profile"
+msgstr "تعديل ملف %(username)s"
+
+#: mediagoblin/templates/mediagoblin/listings/tag.html:31
+msgid "Media tagged with:"
+msgstr "الوسائط الموسومة بـ:"
+
+#: mediagoblin/templates/mediagoblin/submit/start.html:26
+msgid "Submit yer media"
+msgstr "انشر وسائطك"
+
+#: mediagoblin/templates/mediagoblin/submit/start.html:29
+msgid "Submit"
+msgstr "أرسل"
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:32
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
+msgstr "وسائط <a href=\"%(user_url)s\">%(username)s</a>"
+
+#: 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/processing_panel.html:22
+msgid "Media processing panel"
+msgstr "لوحة معالجة الوسائط"
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:25
+msgid ""
+"You can track the state of media being processed for your gallery here."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:28
+msgid "Media in-processing"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:46
+msgid "No media in-processing"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:50
+msgid "These uploads failed to process:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:59
+msgid "Email verification needed"
+msgstr "يجب التحقق من البريد الإلكتروني"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:42
+msgid "Almost done! Your account still needs to be activated."
+msgstr "انتهينا تقريبا! لا زال حسابك يحتاج إلى التفعيل."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:47
+msgid ""
+"An email should arrive in a few moments with instructions on how to do so."
+msgstr "ستصلك رسالة إلكترونية خلال لحظات بها التعليمات."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:51
+msgid "In case it doesn't:"
+msgstr "إن لم تصل."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:54
+msgid "Resend verification email"
+msgstr "أعد إرسال رسالة التحقق"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
+msgid ""
+"Someone has registered an account with this username, but it still has to be"
+" activated."
+msgstr "سجّل أحدهم حسابًا بهذا الاسم، ولكننا بانتظار التفعيل حتى الآن."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:68
+#, 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's"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:85
+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
+msgid "Edit profile"
+msgstr "عدل الملف"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
+msgid "This user hasn't filled in their profile (yet)."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:122
+#, python-format
+msgid "View all of %(username)s's media"
+msgstr "اعرض كل وسائط %(username)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:135
+msgid ""
+"This is where your media will appear, but you don't seem to have added "
+"anything yet."
+msgstr "هنا ستظهر وسائطك، ولكن يبدو أنك لم تضف شيئًا بعد."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:141
+msgid "Add media"
+msgstr "أضف وسائط"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:147
+msgid "There doesn't seem to be any media here yet..."
+msgstr "لا يبدو أنه يوجد أي وسائط هنا حتى الآن..."
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
+msgid "feed icon"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
+msgid "Atom feed"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:24
+msgid "Comment"
+msgstr ""
+
+
diff --git a/mediagoblin/i18n/de/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/de/LC_MESSAGES/mediagoblin.mo
index 6bb69ce9..898d5f0f 100644
--- a/mediagoblin/i18n/de/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/de/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/de/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/de/LC_MESSAGES/mediagoblin.po
index 30c55e21..f8ee1ea8 100644
--- a/mediagoblin/i18n/de/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/de/LC_MESSAGES/mediagoblin.po
@@ -3,16 +3,18 @@
# This file is distributed under the same license as the PROJECT project.
#
# Rafael Maguiña <rafael.maguina@gmail.com>, 2011.
+# <benjamin@lebsanft.org>, 2011.
# <mediagoblin.org@samba-tng.org>, 2011.
+# Elrond <elrond+mediagoblin.org@samba-tng.org>, 2011.
# <cwebber@dustycloud.org>, 2011.
# Jan-Christoph Borchardt <JanCBorchardt@fsfe.org>, 2011.
msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://bugs.foocorp.net/projects/mediagoblin/issues\n"
-"POT-Creation-Date: 2011-08-08 22:53-0500\n"
-"PO-Revision-Date: 2011-08-10 23:20+0000\n"
-"Last-Translator: JanCBorchardt <JanCBorchardt@fsfe.org>\n"
+"POT-Creation-Date: 2011-08-25 07:41-0500\n"
+"PO-Revision-Date: 2011-08-25 19:13+0000\n"
+"Last-Translator: piratenpanda <benjamin@lebsanft.org>\n"
"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"
@@ -45,28 +47,32 @@ msgstr "Email-Adresse"
msgid "Sorry, registration is disabled on this instance."
msgstr "Registrierung ist auf dieser Instanz leider deaktiviert."
-#: mediagoblin/auth/views.py:55
+#: mediagoblin/auth/views.py:57
msgid "Sorry, a user with that name already exists."
msgstr "Leider gibt es bereits einen Benutzer mit diesem Namen."
-#: mediagoblin/auth/views.py:152
+#: mediagoblin/auth/views.py:61
+msgid "Sorry, that email address has already been taken."
+msgstr "Tut und Leid, aber diese Email-Adresse wird bereits verwendet."
+
+#: mediagoblin/auth/views.py:159
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 Email-Adresse wurde bestätigt. Du kannst dich nun anmelden, Dein "
"Profil bearbeiten und Bilder hochladen!"
-#: mediagoblin/auth/views.py:158
+#: mediagoblin/auth/views.py:165
msgid "The verification key or user id is incorrect"
msgstr "Der Bestätigungssschlüssel oder die Nutzernummer ist falsch."
-#: mediagoblin/auth/views.py:179
+#: mediagoblin/auth/views.py:186
#: mediagoblin/templates/mediagoblin/auth/resent_verification_email.html:22
msgid "Resent your verification email."
-msgstr "Bestätigungs-Email noch Mal senden."
+msgstr "Bestätigungs-Email wurde erneut versandt."
-#: mediagoblin/edit/forms.py:26 mediagoblin/submit/forms.py:26
+#: mediagoblin/edit/forms.py:26 mediagoblin/submit/forms.py:27
msgid "Title"
msgstr "Titel"
@@ -90,104 +96,141 @@ msgstr "Biographie"
msgid "Website"
msgstr "Webseite"
-#: mediagoblin/edit/forms.py:43
-msgid "Improperly formed URL"
-msgstr "Adresse fehlerhaft"
-
-#: mediagoblin/edit/views.py:54
+#: 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:75
+#: mediagoblin/edit/views.py:94
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:96
+#: mediagoblin/edit/views.py:165
msgid "You are editing a user's profile. Proceed with caution."
msgstr "Du bearbeitest das Profil eines Anderen. Bitte sei vorsichtig."
-#: mediagoblin/submit/forms.py:29
+#: 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/submit/forms.py:25
msgid "File"
msgstr "Datei"
-#: mediagoblin/submit/views.py:45
+#: mediagoblin/submit/views.py:47
msgid "You must provide a file."
msgstr "Du musst eine Datei angeben."
-#: mediagoblin/submit/views.py:48
+#: mediagoblin/submit/views.py:50
msgid "The file doesn't seem to be an image!"
msgstr "Diese Datei scheint kein Bild zu sein!"
-#: mediagoblin/submit/views.py:96
+#: mediagoblin/submit/views.py:122
msgid "Woohoo! Submitted!"
msgstr "Yeeeaaah! Geschafft!"
+#: mediagoblin/templates/mediagoblin/404.html:21
+msgid "Oops!"
+msgstr "Hoppla!"
+
+#: mediagoblin/templates/mediagoblin/404.html:24
+msgid "There doesn't seem to be a page at this address. Sorry!"
+msgstr "Tut uns Leid, aber unter der angegebenen Adresse gibt es keine Seite!"
+
+#: mediagoblin/templates/mediagoblin/404.html:26
+msgid ""
+"If you're sure the address is correct, maybe the page you're looking for has"
+" been moved or deleted."
+msgstr ""
+"Wenn du sicher bist, dass die Adresse stimmt, wurde die Seite eventuell "
+"verschoben oder gelöscht."
+
+#: mediagoblin/templates/mediagoblin/404.html:32
+msgid "Image of 404 goblin stressing out"
+msgstr "Bild eines angespannten Goblins"
+
#: mediagoblin/templates/mediagoblin/base.html:22
msgid "GNU MediaGoblin"
msgstr "GNU MediaGoblin"
-#: mediagoblin/templates/mediagoblin/base.html:45
-msgid "Mediagoblin logo"
-msgstr "Mediagoblin-Logo"
+#: mediagoblin/templates/mediagoblin/base.html:47
+msgid "MediaGoblin logo"
+msgstr "MediaGoblin-Logo"
-#: mediagoblin/templates/mediagoblin/base.html:51
+#: mediagoblin/templates/mediagoblin/base.html:52
msgid "Submit media"
msgstr "Medien hochladen"
-#: mediagoblin/templates/mediagoblin/base.html:62
+#: mediagoblin/templates/mediagoblin/base.html:63
msgid "verify your email!"
msgstr "Bitte bestätige deine Email-Adresse!"
-#: mediagoblin/templates/mediagoblin/base.html:72
-msgid "Login"
+#: mediagoblin/templates/mediagoblin/base.html:73
+#: mediagoblin/templates/mediagoblin/auth/login.html:26
+#: mediagoblin/templates/mediagoblin/auth/login.html:34
+msgid "Log in"
msgstr "Anmelden"
-#: mediagoblin/templates/mediagoblin/base.html:88
+#: mediagoblin/templates/mediagoblin/base.html:89
msgid ""
"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
"href=\"http://gnu.org/\">GNU project</a>"
msgstr ""
-"Läüft mit <a href=\"http://mediagoblin.org\">MediaGoblin</a>, einem <a "
+"Läuft mit <a href=\"http://mediagoblin.org\">MediaGoblin</a>, einem <a "
"href=\"http://gnu.org/\">GNU-Projekt</a>"
-#: mediagoblin/templates/mediagoblin/root.html:21
-msgid "Welcome to GNU MediaGoblin!"
-msgstr "Willkommen bei GNU MediaGoblin!"
+#: mediagoblin/templates/mediagoblin/root.html:27
+msgid "Hi there, media lover! MediaGoblin is..."
+msgstr "Hallo Medien-Liebhaber! MediaGoblin ist …"
-#: mediagoblin/templates/mediagoblin/root.html:26
-msgid "Submit an item"
-msgstr "Eintrag hochladen"
+#: 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
-#, python-format
-msgid "If you have an account, you can <a href=\"%(login_url)s\">Login</a>."
+msgid ""
+"Free, as in freedom. (We’re a <a href=\"http://gnu.org\">GNU</a> project, "
+"after all.)"
msgstr ""
-"Falls du ein Konto hast, kannst du dich <a "
-"href=\"%(login_url)s\">anmelden</a>."
+"Frei, wie in Freiheit. (Wir sind schließlich ein <a "
+"href=\"http://gnu.org\">GNU</a>-Projekt.)"
-#: mediagoblin/templates/mediagoblin/root.html:37
-#, python-format
+#: mediagoblin/templates/mediagoblin/root.html:32
msgid ""
-"If you don't have an account, please <a "
-"href=\"%(register_url)s\">Register</a>."
+"Aiming to make the world a better place through decentralization and "
+"(eventually, coming soon!) federation!"
msgstr ""
-"Wenn du noch kein Konto hast, <a href=\"%(register_url)s\">registriere "
-"dich</a>."
+"Weltverbesserer durch Dezentralisierung und (hoffentlich bald!) unabhängige "
+"Kommunikation!"
-#: mediagoblin/templates/mediagoblin/auth/login.html:26
-msgid "Log in"
-msgstr "Anmelden"
+#: mediagoblin/templates/mediagoblin/root.html:33
+msgid ""
+"Built for extensibility. (Multiple media types coming soon to the software,"
+" including video support!)"
+msgstr ""
+"Gebaut für Erweiterungen. (Bald mit Unterstützung für verschiedene "
+"Medientypen inklusive Videos!)"
-#: mediagoblin/templates/mediagoblin/auth/login.html:29
-msgid "Login failed!"
-msgstr "Anmeldung fehlgeschlagen!"
+#: mediagoblin/templates/mediagoblin/root.html:34
+msgid ""
+"Powered by people like you. (<a "
+"href=\"http://mediagoblin.org/pages/join.html\">You can help us improve this"
+" software!</a>)"
+msgstr ""
+"Betrieben von Leuten wie dir. (<a "
+"href=\"http://mediagoblin.org/pages/join.html\">Du kannst uns dabei helfen, "
+"die Software zu verbessern!</a>)"
-#: mediagoblin/templates/mediagoblin/auth/login.html:34
-#: mediagoblin/templates/mediagoblin/auth/register.html:30
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
-#: mediagoblin/templates/mediagoblin/submit/start.html:32
-msgid "Submit"
-msgstr "Bestätigen"
+#: mediagoblin/templates/mediagoblin/auth/login.html:29
+msgid "Logging in failed!"
+msgstr "Anmeldevorgang fehlgeschlagen!"
#: mediagoblin/templates/mediagoblin/auth/login.html:42
msgid "Don't have an account yet?"
@@ -201,6 +244,10 @@ msgstr "Registriere dich!"
msgid "Create an account!"
msgstr "Neues Konto registrieren!"
+#: mediagoblin/templates/mediagoblin/auth/register.html:30
+msgid "Create"
+msgstr "Erstellen"
+
#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
#, python-format
msgid ""
@@ -211,7 +258,7 @@ msgid ""
"\n"
"%(verification_url)s"
msgstr ""
-"Hi %(username)s,\n"
+"Hallo %(username)s,\n"
"\n"
"um dein Konto bei GNU MediaGoblin zu aktivieren, musst du folgende Adresse in einem Webbrowser öffnen:\n"
"\n"
@@ -227,91 +274,149 @@ msgid "Cancel"
msgstr "Abbrechen"
#: mediagoblin/templates/mediagoblin/edit/edit.html:37
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
msgid "Save changes"
msgstr "Änderungen speichern"
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:29
#, python-format
msgid "Editing %(username)s's profile"
-msgstr "%(username)s’s Profil barbeiten"
+msgstr "%(username)ss Profil barbeiten"
-#: mediagoblin/templates/mediagoblin/listings/tag.html:29
+#: mediagoblin/templates/mediagoblin/listings/tag.html:31
msgid "Media tagged with:"
msgstr "Medien markiert mit:"
-#: mediagoblin/templates/mediagoblin/listings/tag.html:40
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:46
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:101
-msgid "atom feed"
-msgstr "Atom-Feed"
-
#: mediagoblin/templates/mediagoblin/submit/start.html:26
msgid "Submit yer media"
msgstr "Medien hochladen"
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:29
+msgid "Submit"
+msgstr "Bestätigen"
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:32
#, python-format
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
-msgstr "<a href=\"%(user_url)s\">%(username)s</a>’s Medien"
+msgstr "<a href=\"%(user_url)s\">%(username)s</a>s Medien"
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:51
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:30
+#: 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/user.html:37
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:57
-msgid "Verification needed"
-msgstr "Überprüfung notwendig"
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:22
+msgid "Media processing panel"
+msgstr "Medienverarbeitung"
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:25
+msgid ""
+"You can track the state of media being processed for your gallery here."
+msgstr ""
+"Du kannst den Status der gerade in Bearbeitung befindlichen Medien hier "
+"betrachten."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:40
-msgid "Almost done! Your account still needs to be verified."
-msgstr "Fast geschafft! Dein Konto muss nur noch bestätigt werden."
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:28
+msgid "Media in-processing"
+msgstr "Medien in Bearbeitung"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:45
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:46
+msgid "No media in-processing"
+msgstr "Keine Medien in Bearbeitung"
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:50
+msgid "These uploads failed to process:"
+msgstr "Die folgenden Uploads sind fehlgeschlagen"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:59
+msgid "Email verification needed"
+msgstr "Email-Bestätigung benötigt"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:42
+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
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 "
+"Gleich solltest du eine Email bekommen, die dir sagt, was du noch machen "
"musst."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:49
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:51
msgid "In case it doesn't:"
msgstr "Wenn sie nicht ankommt:"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:54
msgid "Resend verification email"
-msgstr "Bestätigung noch Mal senden"
+msgstr "Bestätigung erneut senden"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:60
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
msgid ""
"Someone has registered an account with this username, but it still has to be"
-" verified."
+" activated."
msgstr ""
-"Jemand hat schon ein Konto mit diesem Nutzernamen registriert, aber es muss "
-"noch bestätigt werden."
+"Jemand hat bereits ein Konto mit diesem Benutzernamen registriert, aber es "
+"muss noch aktiviert werden."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:66
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:68
#, 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 ""
-"Wenn dir dieses Konto gehört und die Bestätigungsmail weg ist, kannst du "
-"dich <a href=\"%(login_url)s\">anmelden</a> und sie erneut senden."
+"Wenn dir dieses Konto gehört und die Bestätigungsmail verloren gegangen ist,"
+" kannst du dich <a href=\"%(login_url)s\">anmelden</a> und sie erneut "
+"senden."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:76
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:78
#, python-format
msgid "%(username)s's profile"
-msgstr "%(username)s’s Profil"
+msgstr "%(username)ss Profil"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:84
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:85
+msgid "Here's a spot to tell others about yourself."
+msgstr "Hier kannst du Anderen etwas über dich zu erzählen."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:90
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:108
msgid "Edit profile"
msgstr "Profil bearbeiten"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:95
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
+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
#, 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
+msgid ""
+"This is where your media will appear, but you don't seem to have added "
+"anything yet."
+msgstr "Hier erscheinen deine Medien. Sobald du etwas hochgeladen hast."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:141
+msgid "Add media"
+msgstr "Medien hinzufügen"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:147
+msgid "There doesn't seem to be any media here yet..."
+msgstr "Scheinbar gibt es hier noch nichts …"
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
+msgid "feed icon"
+msgstr "Feed-Symbol"
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
+msgid "Atom feed"
+msgstr "Atom-Feed"
+
+#: mediagoblin/user_pages/forms.py:24
+msgid "Comment"
+msgstr "Kommentar"
+
diff --git a/mediagoblin/i18n/en/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/en/LC_MESSAGES/mediagoblin.po
index 9c46ebe8..3f5539c6 100644
--- a/mediagoblin/i18n/en/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/en/LC_MESSAGES/mediagoblin.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2011-08-13 19:47-0500\n"
+"POT-Creation-Date: 2011-08-25 07:41-0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -88,97 +88,125 @@ msgstr ""
msgid "Website"
msgstr ""
-#: mediagoblin/edit/forms.py:43
-msgid "Improperly formed URL"
-msgstr ""
-
-#: mediagoblin/edit/views.py:54
+#: mediagoblin/edit/views.py:65
msgid "An entry with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:75
+#: mediagoblin/edit/views.py:94
msgid "You are editing another user's media. Proceed with caution."
msgstr ""
-#: mediagoblin/edit/views.py:96
+#: mediagoblin/edit/views.py:165
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/submit/forms.py:25
msgid "File"
msgstr ""
-#: mediagoblin/submit/views.py:46
+#: mediagoblin/submit/views.py:47
msgid "You must provide a file."
msgstr ""
-#: mediagoblin/submit/views.py:49
+#: mediagoblin/submit/views.py:50
msgid "The file doesn't seem to be an image!"
msgstr ""
-#: mediagoblin/submit/views.py:94
+#: mediagoblin/submit/views.py:122
msgid "Woohoo! Submitted!"
msgstr ""
+#: mediagoblin/templates/mediagoblin/404.html:21
+msgid "Oops!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/404.html:24
+msgid "There doesn't seem to be a page at this address. Sorry!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/404.html:26
+msgid ""
+"If you're sure the address is correct, maybe the page you're looking for "
+"has been moved or deleted."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/404.html:32
+msgid "Image of 404 goblin stressing out"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/base.html:22
msgid "GNU MediaGoblin"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:45
-msgid "Mediagoblin logo"
+#: mediagoblin/templates/mediagoblin/base.html:47
+msgid "MediaGoblin logo"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:51
+#: mediagoblin/templates/mediagoblin/base.html:52
msgid "Submit media"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:62
+#: mediagoblin/templates/mediagoblin/base.html:63
msgid "verify your email!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:72
-msgid "Login"
+#: mediagoblin/templates/mediagoblin/base.html:73
+#: mediagoblin/templates/mediagoblin/auth/login.html:26
+#: mediagoblin/templates/mediagoblin/auth/login.html:34
+msgid "Log in"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:88
+#: mediagoblin/templates/mediagoblin/base.html:89
msgid ""
"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
"href=\"http://gnu.org/\">GNU project</a>"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:23
-msgid "Welcome to GNU MediaGoblin!"
+#: mediagoblin/templates/mediagoblin/root.html:27
+msgid "Hi there, media lover! MediaGoblin is..."
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:28
-msgid "Submit an item"
+#: mediagoblin/templates/mediagoblin/root.html:29
+msgid "The perfect place for your media!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:33
-#, python-format
-msgid "If you have an account, you can <a href=\"%(login_url)s\">Login</a>."
+#: 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:39
-#, python-format
+#: mediagoblin/templates/mediagoblin/root.html:31
msgid ""
-"If you don't have an account, please <a "
-"href=\"%(register_url)s\">Register</a>."
+"Free, as in freedom. (We’re a <a href=\"http://gnu.org\">GNU</a> project,"
+" after all.)"
msgstr ""
-#: mediagoblin/templates/mediagoblin/auth/login.html:26
-msgid "Log in"
+#: 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/auth/login.html:29
-msgid "Login failed!"
+#: 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/auth/login.html:34
-#: mediagoblin/templates/mediagoblin/auth/register.html:30
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
-#: mediagoblin/templates/mediagoblin/submit/start.html:29
-msgid "Submit"
+#: 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/auth/login.html:29
+msgid "Logging in failed!"
msgstr ""
#: mediagoblin/templates/mediagoblin/auth/login.html:42
@@ -193,6 +221,10 @@ msgstr ""
msgid "Create an account!"
msgstr ""
+#: mediagoblin/templates/mediagoblin/auth/register.html:30
+msgid "Create"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
#, python-format
msgid ""
@@ -214,6 +246,7 @@ msgid "Cancel"
msgstr ""
#: mediagoblin/templates/mediagoblin/edit/edit.html:37
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
msgid "Save changes"
msgstr ""
@@ -226,33 +259,51 @@ msgstr ""
msgid "Media tagged with:"
msgstr ""
-#: mediagoblin/templates/mediagoblin/listings/tag.html:42
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:104
-msgid "atom feed"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/submit/start.html:26
msgid "Submit yer media"
msgstr ""
+#: mediagoblin/templates/mediagoblin/submit/start.html:29
+msgid "Submit"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:32
#, python-format
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:53
+#: 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/processing_panel.html:22
+msgid "Media processing panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:25
+msgid "You can track the state of media being processed for your gallery here."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:28
+msgid "Media in-processing"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:46
+msgid "No media in-processing"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:50
+msgid "These uploads failed to process:"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/user_pages/user.html:39
#: mediagoblin/templates/mediagoblin/user_pages/user.html:59
-msgid "Verification needed"
+msgid "Email verification needed"
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/user.html:42
-msgid "Almost done! Your account still needs to be verified."
+msgid "Almost done! Your account still needs to be activated."
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/user.html:47
@@ -270,7 +321,7 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
msgid ""
"Someone has registered an account with this username, but it still has to"
-" be verified."
+" be activated."
msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/user.html:68
@@ -285,15 +336,46 @@ msgstr ""
msgid "%(username)s's profile"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:86
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:85
+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
msgid "Edit profile"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:98
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
+msgid "This user hasn't filled in their profile (yet)."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:122
#, python-format
msgid "View all of %(username)s's media"
msgstr ""
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:135
+msgid ""
+"This is where your media will appear, but you don't seem to have added "
+"anything yet."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:141
+msgid "Add media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:147
+msgid "There doesn't seem to be any media here yet..."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
+msgid "feed icon"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
+msgid "Atom feed"
+msgstr ""
+
#: mediagoblin/user_pages/forms.py:24
msgid "Comment"
msgstr ""
diff --git a/mediagoblin/i18n/eo/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/eo/LC_MESSAGES/mediagoblin.mo
index 114ab7c0..63a3294f 100644
--- a/mediagoblin/i18n/eo/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/eo/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/eo/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/eo/LC_MESSAGES/mediagoblin.po
index ea19af01..f2a1b78b 100644
--- a/mediagoblin/i18n/eo/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/eo/LC_MESSAGES/mediagoblin.po
@@ -2,15 +2,16 @@
# Copyright (C) 2011 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
+# <deletesoftware@yandex.ru>, 2011.
# <john_w1954@fastmail.fm>, 2011.
# Fernando Inocencio <faigos@gmail.com>, 2011.
msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://bugs.foocorp.net/projects/mediagoblin/issues\n"
-"POT-Creation-Date: 2011-08-13 19:47-0500\n"
-"PO-Revision-Date: 2011-08-15 20:33+0000\n"
-"Last-Translator: fajro <faigos@gmail.com>\n"
+"POT-Creation-Date: 2011-08-25 07:41-0500\n"
+"PO-Revision-Date: 2011-08-25 14:28+0000\n"
+"Last-Translator: aleksejrs <deletesoftware@yandex.ru>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -25,11 +26,11 @@ msgstr "Uzantnomo"
#: mediagoblin/auth/forms.py:29 mediagoblin/auth/forms.py:50
msgid "Password"
-msgstr "Pasvorton"
+msgstr "Pasvorto"
#: mediagoblin/auth/forms.py:34
msgid "Passwords must match."
-msgstr "Pasvortoj devas koincidi. "
+msgstr "Pasvortoj devas esti egalaj."
#: mediagoblin/auth/forms.py:36
msgid "Confirm password"
@@ -37,11 +38,11 @@ msgstr "Retajpu pasvorton"
#: mediagoblin/auth/forms.py:39
msgid "Email address"
-msgstr "Retadreso"
+msgstr "Retpoŝtadreso"
#: mediagoblin/auth/views.py:40
msgid "Sorry, registration is disabled on this instance."
-msgstr "Bedaŭrinde, registrado estas malaktivita en tiu ĉi instanco."
+msgstr "Bedaŭrinde, registrado estas malaktivigita en tiu ĉi instalaĵo."
#: mediagoblin/auth/views.py:57
msgid "Sorry, a user with that name already exists."
@@ -49,14 +50,14 @@ msgstr "Bedaŭrinde, uzanto kun tiu nomo jam ekzistas."
#: mediagoblin/auth/views.py:61
msgid "Sorry, that email address has already been taken."
-msgstr ""
+msgstr "Tiu retpoŝtadreso jam estas uzata."
#: mediagoblin/auth/views.py:159
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
msgstr ""
-"Vian retadreson estas kontrolita. Vi povas nun ensaluti, redakti vian "
+"Via retpoŝtadreso estas konfirmita. Vi povas nun ensaluti, redakti vian "
"profilon, kaj alŝuti bildojn!"
#: mediagoblin/auth/views.py:165
@@ -74,11 +75,11 @@ msgstr "Titolo"
#: mediagoblin/edit/forms.py:29
msgid "Slug"
-msgstr ""
+msgstr "La distingiga adresparto"
#: mediagoblin/edit/forms.py:30
msgid "The slug can't be empty"
-msgstr ""
+msgstr "La distingiga adresparto ne povas esti malplena"
#: mediagoblin/edit/forms.py:33 mediagoblin/submit/forms.py:31
msgid "Tags"
@@ -92,101 +93,132 @@ msgstr "Bio"
msgid "Website"
msgstr "Retejo"
-#: mediagoblin/edit/forms.py:43
-msgid "Improperly formed URL"
-msgstr ""
-
-#: mediagoblin/edit/views.py:54
+#: mediagoblin/edit/views.py:65
msgid "An entry with that slug already exists for this user."
-msgstr ""
+msgstr "Ĉi tiu uzanto jam havas dosieron kun tiu distingiga adresparto."
-#: mediagoblin/edit/views.py:75
+#: mediagoblin/edit/views.py:94
msgid "You are editing another user's media. Proceed with caution."
-msgstr ""
+msgstr "Vi priredaktas dosieron de alia uzanto. Agu singardeme."
-#: mediagoblin/edit/views.py:96
+#: mediagoblin/edit/views.py:165
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 ""
#: mediagoblin/submit/forms.py:25
msgid "File"
msgstr "Dosiero"
-#: mediagoblin/submit/views.py:46
+#: mediagoblin/submit/views.py:47
msgid "You must provide a file."
msgstr "Vi devas provizi dosieron."
-#: mediagoblin/submit/views.py:49
+#: mediagoblin/submit/views.py:50
msgid "The file doesn't seem to be an image!"
-msgstr ""
+msgstr "La dosiero ŝajnas ne esti bildo!"
-#: mediagoblin/submit/views.py:94
+#: mediagoblin/submit/views.py:122
msgid "Woohoo! Submitted!"
+msgstr "Hura! Alŝutitas!"
+
+#: mediagoblin/templates/mediagoblin/404.html:21
+msgid "Oops!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/404.html:24
+msgid "There doesn't seem to be a page at this address. Sorry!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/404.html:26
+msgid ""
+"If you're sure the address is correct, maybe the page you're looking for has"
+" been moved or deleted."
+msgstr ""
+"Se vi estas certa, ke la adreso estas ĝusta, eble la serĉata de vi paĝo "
+"estis movita aŭ forigita."
+
+#: mediagoblin/templates/mediagoblin/404.html:32
+msgid "Image of 404 goblin stressing out"
msgstr ""
#: mediagoblin/templates/mediagoblin/base.html:22
msgid "GNU MediaGoblin"
msgstr "GNU MediaGoblin"
-#: mediagoblin/templates/mediagoblin/base.html:45
-msgid "Mediagoblin logo"
-msgstr " Logogramo de Mediagoblin"
+#: mediagoblin/templates/mediagoblin/base.html:47
+msgid "MediaGoblin logo"
+msgstr "Emblemo de MediaGoblin"
-#: mediagoblin/templates/mediagoblin/base.html:51
+#: mediagoblin/templates/mediagoblin/base.html:52
msgid "Submit media"
msgstr "Alŝuti aŭd-vid-dosieron"
-#: mediagoblin/templates/mediagoblin/base.html:62
+#: mediagoblin/templates/mediagoblin/base.html:63
msgid "verify your email!"
-msgstr "kontrolu vian retpoŝton! "
+msgstr "konfirmu vian retpoŝtadreson! "
-#: mediagoblin/templates/mediagoblin/base.html:72
-msgid "Login"
+#: mediagoblin/templates/mediagoblin/base.html:73
+#: mediagoblin/templates/mediagoblin/auth/login.html:26
+#: mediagoblin/templates/mediagoblin/auth/login.html:34
+msgid "Log in"
msgstr "Ensaluti"
-#: mediagoblin/templates/mediagoblin/base.html:88
+#: mediagoblin/templates/mediagoblin/base.html:89
msgid ""
"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
"href=\"http://gnu.org/\">GNU project</a>"
msgstr ""
-"Provizita de <a href=\"http://mediagoblin.org\">MediaGoblin</a>, unu el la "
-"<a href=\"http://gnu.org/\">GNU projectoj</a>"
+"Funkcias per <a href=\"http://mediagoblin.org\">MediaGoblin</a>, unu el la "
+"<a href=\"http://gnu.org/\">projektoj de GNU</a>"
-#: mediagoblin/templates/mediagoblin/root.html:23
-msgid "Welcome to GNU MediaGoblin!"
-msgstr "Bonvenon al GNU MediaGoblin!"
+#: mediagoblin/templates/mediagoblin/root.html:27
+msgid "Hi there, media lover! MediaGoblin is..."
+msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:28
-msgid "Submit an item"
-msgstr "Alŝuti dosieron"
+#: 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:33
-#, python-format
-msgid "If you have an account, you can <a href=\"%(login_url)s\">Login</a>."
-msgstr "Se vi havas konton, vi povas <a href=\"%(login_url)s\">Ensaluti</a>."
+#: 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:39
-#, python-format
+#: mediagoblin/templates/mediagoblin/root.html:31
msgid ""
-"If you don't have an account, please <a "
-"href=\"%(register_url)s\">Register</a>."
+"Free, as in freedom. (We’re a <a href=\"http://gnu.org\">GNU</a> project, "
+"after all.)"
msgstr ""
-"Se vi ne havas konton, bonvolu <a href=\"%(register_url)s\">Registriĝi</a>."
+"Libera verko. (Ni ja estas projekto de &lt;a "
+"href=\"http://gnu.org\"&gt;GNU&lt;/a&gt;.)"
-#: mediagoblin/templates/mediagoblin/auth/login.html:26
-msgid "Log in"
-msgstr "Ensaluti"
+#: 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/auth/login.html:29
-msgid "Login failed!"
-msgstr "Ensalutado malsukcesis!"
+#: 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/auth/login.html:34
-#: mediagoblin/templates/mediagoblin/auth/register.html:30
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
-#: mediagoblin/templates/mediagoblin/submit/start.html:29
-msgid "Submit"
-msgstr "Alŝuti"
+#: 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/auth/login.html:29
+msgid "Logging in failed!"
+msgstr "Ensaluto malsukcesis!"
#: mediagoblin/templates/mediagoblin/auth/login.html:42
msgid "Don't have an account yet?"
@@ -194,12 +226,16 @@ msgstr "Ĉu ankoraŭ sen konto?"
#: mediagoblin/templates/mediagoblin/auth/login.html:45
msgid "Create one here!"
-msgstr "Kreu unu ĉi tie!"
+msgstr "Kreu ĝin ĉi tie!"
#: mediagoblin/templates/mediagoblin/auth/register.html:27
msgid "Create an account!"
msgstr "Kreu konton!"
+#: mediagoblin/templates/mediagoblin/auth/register.html:30
+msgid "Create"
+msgstr "Krei"
+
#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
#, python-format
msgid ""
@@ -219,59 +255,79 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/edit/edit.html:29
#, python-format
msgid "Editing %(media_title)s"
-msgstr "Editing %(media_title)s"
+msgstr "Priredaktado de %(media_title)s"
#: mediagoblin/templates/mediagoblin/edit/edit.html:36
msgid "Cancel"
msgstr "Nuligi"
#: mediagoblin/templates/mediagoblin/edit/edit.html:37
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
msgid "Save changes"
msgstr "Konservi ŝanĝojn"
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:29
#, python-format
msgid "Editing %(username)s's profile"
-msgstr "Redaktanta profilon de %(username)s'"
+msgstr "Redaktado de l’profilo de %(username)s'"
#: mediagoblin/templates/mediagoblin/listings/tag.html:31
msgid "Media tagged with:"
-msgstr "Dosiero markita kiel:"
-
-#: mediagoblin/templates/mediagoblin/listings/tag.html:42
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:104
-msgid "atom feed"
-msgstr "Atom-a informfluado"
+msgstr "Dosieroj markitaj per:"
#: mediagoblin/templates/mediagoblin/submit/start.html:26
msgid "Submit yer media"
msgstr "Alŝutu vian aŭd-vid-dosieron"
+#: mediagoblin/templates/mediagoblin/submit/start.html:29
+msgid "Submit"
+msgstr "Alŝuti"
+
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:32
#, python-format
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
-msgstr "<a href=\"%(user_url)s\">%(username)s</a>-a aŭd-vid-dosiero"
+msgstr "Dosieroj de <a href=\"%(user_url)s\">%(username)s</a>"
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:53
+#: 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/processing_panel.html:22
+msgid "Media processing panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:25
+msgid ""
+"You can track the state of media being processed for your gallery here."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:28
+msgid "Media in-processing"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:46
+msgid "No media in-processing"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:50
+msgid "These uploads failed to process:"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/user_pages/user.html:39
#: mediagoblin/templates/mediagoblin/user_pages/user.html:59
-msgid "Verification needed"
-msgstr "Kontrolon bezonata"
+msgid "Email verification needed"
+msgstr "Necesas konfirmo de retpoŝtadreso"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:42
-msgid "Almost done! Your account still needs to be verified."
-msgstr "Preskaŭ farite! Via konto ankoraŭ devas esti kontrolita."
+msgid "Almost done! Your account still needs to be activated."
+msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/user.html:47
msgid ""
"An email should arrive in a few moments with instructions on how to do so."
msgstr ""
-"Retmesaĝo alvenos post kelkaj momentoj kun instrukcioj pri kiel tion fari."
+"Post kelkaj momentoj devas veni retletero kun instrukcio pri kiel tion fari."
#: mediagoblin/templates/mediagoblin/user_pages/user.html:51
msgid "In case it doesn't:"
@@ -279,15 +335,13 @@ msgstr "Se tio ne okazas:"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:54
msgid "Resend verification email"
-msgstr "Resendu kontrolmesaĝon"
+msgstr "Resendi kontrolmesaĝon"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
msgid ""
"Someone has registered an account with this username, but it still has to be"
-" verified."
+" activated."
msgstr ""
-"Iu registris konton kun tiu ĉi uzantonomo, sed ĝi devas ankoraŭ esti "
-"kontrolita."
#: mediagoblin/templates/mediagoblin/user_pages/user.html:68
#, python-format
@@ -301,16 +355,47 @@ msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/user.html:78
#, python-format
msgid "%(username)s's profile"
-msgstr "%(username)s'-a profilo"
+msgstr "Profilo de %(username)s"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:86
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:85
+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
msgid "Edit profile"
-msgstr "Redakti profilo"
+msgstr "Redakti profilon"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:98
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
+msgid "This user hasn't filled in their profile (yet)."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:122
#, python-format
msgid "View all of %(username)s's media"
-msgstr "Rigardu ĉiuj aŭd-vid-dosierojn de %(username)s'"
+msgstr "Rigardi ĉiujn dosierojn de %(username)s'"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:135
+msgid ""
+"This is where your media will appear, but you don't seem to have added "
+"anything yet."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:141
+msgid "Add media"
+msgstr "Aldoni dosieron"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:147
+msgid "There doesn't seem to be any media here yet..."
+msgstr "Ĉi tie ŝajne estas ankoraŭ neniuj dosieroj…"
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
+msgid "feed icon"
+msgstr "flusimbolo"
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
+msgid "Atom feed"
+msgstr ""
#: mediagoblin/user_pages/forms.py:24
msgid "Comment"
diff --git a/mediagoblin/i18n/es/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/es/LC_MESSAGES/mediagoblin.mo
index dfd3a1bc..6adf5526 100644
--- a/mediagoblin/i18n/es/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/es/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/es/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/es/LC_MESSAGES/mediagoblin.po
index 0a12586c..d2e8f662 100644
--- a/mediagoblin/i18n/es/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/es/LC_MESSAGES/mediagoblin.po
@@ -2,13 +2,15 @@
# Copyright (C) 2011 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
+# <ekenbrand@hotmail.com>, 2011.
+# <juangsub@gmail.com>, 2011.
# <jacobo@gnu.org>, 2011.
msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://bugs.foocorp.net/projects/mediagoblin/issues\n"
-"POT-Creation-Date: 2011-08-08 22:53-0500\n"
-"PO-Revision-Date: 2011-08-10 20:30+0000\n"
+"POT-Creation-Date: 2011-08-25 07:41-0500\n"
+"PO-Revision-Date: 2011-08-25 20:22+0000\n"
"Last-Translator: nvjacobo <jacobo@gnu.org>\n"
"Language-Team: Spanish (Castilian) (http://www.transifex.net/projects/p/mediagoblin/team/es/)\n"
"MIME-Version: 1.0\n"
@@ -40,31 +42,35 @@ msgstr "Dirección de correo electrónico"
#: mediagoblin/auth/views.py:40
msgid "Sorry, registration is disabled on this instance."
-msgstr "Lo sentimos, el registro está deshabilitado en este momento."
+msgstr "Lo sentimos, la registración está deshabilitado en este momento."
-#: mediagoblin/auth/views.py:55
+#: mediagoblin/auth/views.py:57
msgid "Sorry, a user with that name already exists."
-msgstr "Lo sentimos, un usuario con ese nombre ya existe."
+msgstr "Lo sentimos, ya existe un usuario con ese nombre."
-#: mediagoblin/auth/views.py:152
+#: mediagoblin/auth/views.py:61
+msgid "Sorry, that email address has already been taken."
+msgstr "Lo sentimos, su dirección de correo electrónico ya ha sido tomada."
+
+#: mediagoblin/auth/views.py:159
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
msgstr ""
-"Su dirección de correo electrónico ha sido verificada. Ahora puede ingresar,"
-" editar su perfil, y enviar las imágenes!"
+"Su dirección de correo electrónico ha sido verificada. ¡Ahora puede "
+"ingresar, editar su perfil, y enviar imágenes!"
-#: mediagoblin/auth/views.py:158
+#: mediagoblin/auth/views.py:165
msgid "The verification key or user id is incorrect"
msgstr ""
-"La clave de la verificación o la identificación del usuario es incorrecta"
+"La clave de verificación o la identificación de usuario son incorrectas"
-#: mediagoblin/auth/views.py:179
+#: mediagoblin/auth/views.py:186
#: mediagoblin/templates/mediagoblin/auth/resent_verification_email.html:22
msgid "Resent your verification email."
-msgstr "Reenvíe su correo electrónico de verificación"
+msgstr "Reenvíe su correo electrónico de verificación."
-#: mediagoblin/edit/forms.py:26 mediagoblin/submit/forms.py:26
+#: mediagoblin/edit/forms.py:26 mediagoblin/submit/forms.py:27
msgid "Title"
msgstr "Título"
@@ -74,7 +80,7 @@ msgstr "Ficha"
#: mediagoblin/edit/forms.py:30
msgid "The slug can't be empty"
-msgstr "La ficha no puede estar vacia"
+msgstr "La ficha no puede estar vacía"
#: mediagoblin/edit/forms.py:33 mediagoblin/submit/forms.py:31
msgid "Tags"
@@ -88,60 +94,82 @@ msgstr "Bio"
msgid "Website"
msgstr "Sitio web"
-#: mediagoblin/edit/forms.py:43
-msgid "Improperly formed URL"
-msgstr "URL de forma incorrecta"
-
-#: mediagoblin/edit/views.py:54
+#: 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:75
+#: mediagoblin/edit/views.py:94
msgid "You are editing another user's media. Proceed with caution."
msgstr ""
"Usted está editando el contenido de otro usuario. Proceder con precaución."
-#: mediagoblin/edit/views.py:96
+#: mediagoblin/edit/views.py:165
msgid "You are editing a user's profile. Proceed with caution."
-msgstr "Usted está editando un perfil de usuario. Proceder con precaucións."
+msgstr "Usted está editando un perfil de usuario. Proceder con precaución."
-#: mediagoblin/submit/forms.py:29
+#: mediagoblin/process_media/errors.py:44
+msgid "Invalid file given for media type."
+msgstr "Archivo inálido para el formato seleccionado."
+
+#: mediagoblin/submit/forms.py:25
msgid "File"
msgstr "Archivo"
-#: mediagoblin/submit/views.py:45
+#: mediagoblin/submit/views.py:47
msgid "You must provide a file."
msgstr "Usted debe proporcionar un archivo."
-#: mediagoblin/submit/views.py:48
+#: mediagoblin/submit/views.py:50
msgid "The file doesn't seem to be an image!"
-msgstr "El archivo no parece ser una imagen!"
+msgstr "¡El archivo no parece ser una imagen!"
-#: mediagoblin/submit/views.py:96
+#: mediagoblin/submit/views.py:122
msgid "Woohoo! Submitted!"
-msgstr "Woohoo! Enviado!"
+msgstr "¡Woohoo! ¡Enviado!"
+
+#: mediagoblin/templates/mediagoblin/404.html:21
+msgid "Oops!"
+msgstr "Ups!"
+
+#: mediagoblin/templates/mediagoblin/404.html:24
+msgid "There doesn't seem to be a page at this address. Sorry!"
+msgstr "Parece no haber una página en esta dirección. ¡Lo siento!"
+
+#: mediagoblin/templates/mediagoblin/404.html:26
+msgid ""
+"If you're sure the address is correct, maybe the page you're looking for has"
+" been moved or deleted."
+msgstr ""
+"Si estas seguro que la dirección es correcta, puede ser que la pagina halla "
+"sido movida o borrada."
+
+#: mediagoblin/templates/mediagoblin/404.html:32
+msgid "Image of 404 goblin stressing out"
+msgstr "404 el goblin esta estresado"
#: mediagoblin/templates/mediagoblin/base.html:22
msgid "GNU MediaGoblin"
msgstr "GNU MediaGoblin"
-#: mediagoblin/templates/mediagoblin/base.html:45
-msgid "Mediagoblin logo"
-msgstr "Mediagoblin logo"
+#: mediagoblin/templates/mediagoblin/base.html:47
+msgid "MediaGoblin logo"
+msgstr "Logo de MediaGoblin"
-#: mediagoblin/templates/mediagoblin/base.html:51
+#: mediagoblin/templates/mediagoblin/base.html:52
msgid "Submit media"
msgstr "Enviar contenido"
-#: mediagoblin/templates/mediagoblin/base.html:62
+#: mediagoblin/templates/mediagoblin/base.html:63
msgid "verify your email!"
msgstr "Verifique su correo electrónico"
-#: mediagoblin/templates/mediagoblin/base.html:72
-msgid "Login"
+#: mediagoblin/templates/mediagoblin/base.html:73
+#: mediagoblin/templates/mediagoblin/auth/login.html:26
+#: mediagoblin/templates/mediagoblin/auth/login.html:34
+msgid "Log in"
msgstr "Conectarse"
-#: mediagoblin/templates/mediagoblin/base.html:88
+#: mediagoblin/templates/mediagoblin/base.html:89
msgid ""
"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
"href=\"http://gnu.org/\">GNU project</a>"
@@ -149,44 +177,58 @@ msgstr ""
"Potenciado por <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
"href=\"http://gnu.org/\">GNU project</a>"
-#: mediagoblin/templates/mediagoblin/root.html:21
-msgid "Welcome to GNU MediaGoblin!"
-msgstr "¡Bienvenido a GNU MediaGoblin!"
+#: mediagoblin/templates/mediagoblin/root.html:27
+msgid "Hi there, media lover! MediaGoblin is..."
+msgstr "Hola, amante de los medios de comunicación! MediaGoblin es ..."
+
+#: mediagoblin/templates/mediagoblin/root.html:29
+msgid "The perfect place for your media!"
+msgstr "El lugar ideal para tus cosas!"
-#: mediagoblin/templates/mediagoblin/root.html:26
-msgid "Submit an item"
-msgstr "Enviar un item"
+#: 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 orignales y derivadas"
#: mediagoblin/templates/mediagoblin/root.html:31
-#, python-format
-msgid "If you have an account, you can <a href=\"%(login_url)s\">Login</a>."
+msgid ""
+"Free, as in freedom. (We’re a <a href=\"http://gnu.org\">GNU</a> project, "
+"after all.)"
msgstr ""
-"Si tiene una cuenta, puede iniciar sesión <a "
-"href=\"%(login_url)s\">Login</a>."
+"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:37
-#, python-format
+#: mediagoblin/templates/mediagoblin/root.html:32
msgid ""
-"If you don't have an account, please <a "
-"href=\"%(register_url)s\">Register</a>."
+"Aiming to make the world a better place through decentralization and "
+"(eventually, coming soon!) federation!"
msgstr ""
-"Si no tienes una cuenta, por favor, <a "
-"href=\"%(register_url)s\">Regístrese</a> ."
+"Queriendo hacer del mundo un mejor lugar a través de la descentralización y "
+"(eventualmente!) la federalización!"
-#: mediagoblin/templates/mediagoblin/auth/login.html:26
-msgid "Log in"
-msgstr "Conectarse"
+#: mediagoblin/templates/mediagoblin/root.html:33
+msgid ""
+"Built for extensibility. (Multiple media types coming soon to the software,"
+" including video support!)"
+msgstr ""
+"Pensado para la ser extensible. (Prontamente soporte para multiples "
+"formatos, incluyendo video!)"
-#: mediagoblin/templates/mediagoblin/auth/login.html:29
-msgid "Login failed!"
-msgstr "El inicio de sesión fallo"
+#: mediagoblin/templates/mediagoblin/root.html:34
+msgid ""
+"Powered by people like you. (<a "
+"href=\"http://mediagoblin.org/pages/join.html\">You can help us improve this"
+" software!</a>)"
+msgstr ""
+"Impulsado por gente como vos. (<a "
+"href=\"http://mediagoblin.org/pages/join.html\"> Vos podés ayudarnos a "
+"mejorar este programa</a>)"
-#: mediagoblin/templates/mediagoblin/auth/login.html:34
-#: mediagoblin/templates/mediagoblin/auth/register.html:30
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
-#: mediagoblin/templates/mediagoblin/submit/start.html:32
-msgid "Submit"
-msgstr "Enviar"
+#: mediagoblin/templates/mediagoblin/auth/login.html:29
+msgid "Logging in failed!"
+msgstr "Fallo el inicio de sesión!"
#: mediagoblin/templates/mediagoblin/auth/login.html:42
msgid "Don't have an account yet?"
@@ -194,11 +236,15 @@ msgstr "¿No tienes una cuenta?"
#: mediagoblin/templates/mediagoblin/auth/login.html:45
msgid "Create one here!"
-msgstr "Crea una aquí"
+msgstr "¡Crea una aquí!"
#: mediagoblin/templates/mediagoblin/auth/register.html:27
msgid "Create an account!"
-msgstr "Crea una cuenta!"
+msgstr "¡Crea una cuenta!"
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:30
+msgid "Create"
+msgstr "Crear"
#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
#, python-format
@@ -210,7 +256,7 @@ msgid ""
"\n"
"%(verification_url)s"
msgstr ""
-"Hola %(username)s , para activar su cuenta MediaGoblin GNU, abra ls "
+"Hola %(username)s , para activar su cuenta GNU MediaGoblin, abra la "
"siguiente URL en su navegador: %(verification_url)s "
#: mediagoblin/templates/mediagoblin/edit/edit.html:29
@@ -223,90 +269,150 @@ msgid "Cancel"
msgstr "Cancelar"
#: mediagoblin/templates/mediagoblin/edit/edit.html:37
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
msgid "Save changes"
msgstr "Salvar cambios"
#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:29
#, python-format
msgid "Editing %(username)s's profile"
-msgstr "Edición %(username)s de perfil"
+msgstr "Editando el perfil de %(username)s"
-#: mediagoblin/templates/mediagoblin/listings/tag.html:29
+#: mediagoblin/templates/mediagoblin/listings/tag.html:31
msgid "Media tagged with:"
-msgstr "El contenido con la etiqueta:"
-
-#: mediagoblin/templates/mediagoblin/listings/tag.html:40
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:46
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:101
-msgid "atom feed"
-msgstr "feed Atom"
+msgstr "Contenido etiquetado con:"
#: mediagoblin/templates/mediagoblin/submit/start.html:26
msgid "Submit yer media"
msgstr "Envíe su contenido"
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:29
+msgid "Submit"
+msgstr "Enviar"
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:32
#, 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:51
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:30
+#: 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 ha encontrado el usuario."
+msgstr "Lo sentimos, no se ha encontrado ese usuario."
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:22
+msgid "Media processing panel"
+msgstr "Panel de procesamiento de contenido"
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:25
+msgid ""
+"You can track the state of media being processed for your gallery here."
+msgstr ""
+"Puedes hacer un seguimiento del estado de tu contenido siendo procesado "
+"aquí."
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:28
+msgid "Media in-processing"
+msgstr "Contenido siendo procesado"
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:46
+msgid "No media in-processing"
+msgstr "No hay contenido siendo procesado."
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:50
+msgid "These uploads failed to process:"
+msgstr "Estos archivos no pudieron ser procesados:"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:37
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:57
-msgid "Verification needed"
-msgstr "Verificación necesaria"
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:59
+msgid "Email verification needed"
+msgstr "Correo electrónico de verificación necesario"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:40
-msgid "Almost done! Your account still needs to be verified."
-msgstr "Ya está casi hecho! Su cuenta tiene que ser verificada."
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:42
+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:45
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:47
msgid ""
"An email should arrive in a few moments with instructions on how to do so."
msgstr ""
-"Un e-mail debe llegar en unos momentos con las instrucciones para hacerlo."
+"Un e-mail debería llegar en unos momentos con las instrucciones para "
+"hacerlo."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:49
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:51
msgid "In case it doesn't:"
msgstr "En caso de que no:"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:54
msgid "Resend verification email"
msgstr "Reenviar correo electrónico de verificación"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:60
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
msgid ""
"Someone has registered an account with this username, but it still has to be"
-" verified."
+" activated."
msgstr ""
-"Alguien ha registrado una cuenta con este nombre de usuario, pero todavía "
-"tiene que ser verificado."
+"Alguien ya registró una cuenta con ese nombre de usuario, pero todavía no "
+"fué activada."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:66
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:68
#, 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 ""
-"Si usted es esa persona, pero usted ha perdido su correo electrónico de "
-"verificación, usted puede reenviarlo <a href=\"%(login_url)s\">acceder</a>."
+"Si usted es esa persona, pero ha perdido su correo electrónico de "
+"verificación, puede <a href=\"%(login_url)s\">acceder</a> y reenviarlo."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:76
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:78
#, python-format
msgid "%(username)s's profile"
msgstr "Perfil de %(username)s's"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:84
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:85
+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
msgid "Edit profile"
msgstr "Editar perfil"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:95
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
+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
#, python-format
msgid "View all of %(username)s's media"
msgstr "Ver todo el contenido de %(username)s's "
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:135
+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 no haz agregado contenido"
+" todavia."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:141
+msgid "Add media"
+msgstr "Añadir contenido"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:147
+msgid "There doesn't seem to be any media here yet..."
+msgstr "Parece que no hay ningún contenido aquí todavia..."
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
+msgid "feed icon"
+msgstr "ícono feed"
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
+msgid "Atom feed"
+msgstr "Atom feed"
+
+#: mediagoblin/user_pages/forms.py:24
+msgid "Comment"
+msgstr "Comentario"
+
diff --git a/mediagoblin/i18n/fr/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/fr/LC_MESSAGES/mediagoblin.mo
index f8854734..871d2a42 100644
--- a/mediagoblin/i18n/fr/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/fr/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/fr/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/fr/LC_MESSAGES/mediagoblin.po
index 5afe7091..91da5fc7 100644
--- a/mediagoblin/i18n/fr/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/fr/LC_MESSAGES/mediagoblin.po
@@ -2,6 +2,7 @@
# Copyright (C) 2011 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
+# <maxineb@members.fsf.org>, 2011.
# <marktraceur@gmail.com>, 2011.
# Valentin Villenave <valentin@villenave.net>, 2011.
# <transifex@wandborg.se>, 2011.
@@ -9,9 +10,9 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://bugs.foocorp.net/projects/mediagoblin/issues\n"
-"POT-Creation-Date: 2011-08-13 19:47-0500\n"
-"PO-Revision-Date: 2011-08-16 13:22+0000\n"
-"Last-Translator: joar <transifex@wandborg.se>\n"
+"POT-Creation-Date: 2011-08-25 07:41-0500\n"
+"PO-Revision-Date: 2011-08-25 12:41+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"
@@ -50,7 +51,7 @@ msgstr "Un utilisateur existe déjà avec ce nom, désolé."
#: mediagoblin/auth/views.py:61
msgid "Sorry, that email address has already been taken."
-msgstr ""
+msgstr "Désolé, cette adresse courriel a déjà été prise."
#: mediagoblin/auth/views.py:159
msgid ""
@@ -93,63 +94,83 @@ msgstr "Bio"
msgid "Website"
msgstr "Site web"
-#: mediagoblin/edit/forms.py:43
-msgid "Improperly formed URL"
-msgstr "Adresse web mal formée"
-
-#: mediagoblin/edit/views.py:54
+#: 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:75
+#: mediagoblin/edit/views.py:94
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:96
+#: mediagoblin/edit/views.py:165
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 ""
+
#: mediagoblin/submit/forms.py:25
msgid "File"
msgstr "Fichier"
-#: mediagoblin/submit/views.py:46
+#: mediagoblin/submit/views.py:47
msgid "You must provide a file."
msgstr "Il vous faut fournir un fichier."
-#: mediagoblin/submit/views.py:49
+#: mediagoblin/submit/views.py:50
msgid "The file doesn't seem to be an image!"
msgstr "Ce fichier ne semble pas être une image !"
-#: mediagoblin/submit/views.py:94
+#: mediagoblin/submit/views.py:122
msgid "Woohoo! Submitted!"
msgstr "Youhou, c'est envoyé !"
+#: mediagoblin/templates/mediagoblin/404.html:21
+msgid "Oops!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/404.html:24
+msgid "There doesn't seem to be a page at this address. Sorry!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/404.html:26
+msgid ""
+"If you're sure the address is correct, maybe the page you're looking for has"
+" been moved or deleted."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/404.html:32
+msgid "Image of 404 goblin stressing out"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/base.html:22
msgid "GNU MediaGoblin"
msgstr "GNU MediaGoblin"
-#: mediagoblin/templates/mediagoblin/base.html:45
-msgid "Mediagoblin logo"
-msgstr "logo de MediaGoblin"
+#: mediagoblin/templates/mediagoblin/base.html:47
+msgid "MediaGoblin logo"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:51
+#: mediagoblin/templates/mediagoblin/base.html:52
msgid "Submit media"
msgstr "Soumettre un média"
-#: mediagoblin/templates/mediagoblin/base.html:62
+#: mediagoblin/templates/mediagoblin/base.html:63
msgid "verify your email!"
-msgstr "vérifier son adresse e-mail"
+msgstr "vérifiez votre adresse e-mail !"
-#: mediagoblin/templates/mediagoblin/base.html:72
-msgid "Login"
-msgstr "Identification"
+#: mediagoblin/templates/mediagoblin/base.html:73
+#: mediagoblin/templates/mediagoblin/auth/login.html:26
+#: mediagoblin/templates/mediagoblin/auth/login.html:34
+msgid "Log in"
+msgstr "S'identifier"
-#: mediagoblin/templates/mediagoblin/base.html:88
+#: mediagoblin/templates/mediagoblin/base.html:89
msgid ""
"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
"href=\"http://gnu.org/\">GNU project</a>"
@@ -157,44 +178,48 @@ msgstr ""
"Propulsé par <a href=\"http://mediagoblin.org\">MediaGoblin</a>, un projet "
"de <a href=\"http://gnu.org/\">GNU</a>"
-#: mediagoblin/templates/mediagoblin/root.html:23
-msgid "Welcome to GNU MediaGoblin!"
-msgstr "Bienvenue sur GNU MediaGoblin !"
+#: mediagoblin/templates/mediagoblin/root.html:27
+msgid "Hi there, media lover! MediaGoblin is..."
+msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:28
-msgid "Submit an item"
-msgstr "Soumettre un fichier"
+#: mediagoblin/templates/mediagoblin/root.html:29
+msgid "The perfect place for your media!"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:33
-#, python-format
-msgid "If you have an account, you can <a href=\"%(login_url)s\">Login</a>."
+#: mediagoblin/templates/mediagoblin/root.html:30
+msgid ""
+"A place for people to collaborate and show off original and derived "
+"creations!"
msgstr ""
-"Si vous avez un compte, vous pouvez vous <a "
-"href=\"%(login_url)s\">identifier</a>."
-#: mediagoblin/templates/mediagoblin/root.html:39
-#, python-format
+#: mediagoblin/templates/mediagoblin/root.html:31
msgid ""
-"If you don't have an account, please <a "
-"href=\"%(register_url)s\">Register</a>."
+"Free, as in freedom. (We’re a <a href=\"http://gnu.org\">GNU</a> project, "
+"after all.)"
msgstr ""
-"Si vous n'avez pas de compte, veuillez vous <a "
-"href=\"%(register_url)s\">inscrire</a>."
-#: mediagoblin/templates/mediagoblin/auth/login.html:26
-msgid "Log in"
-msgstr "S'identifier"
+#: 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/auth/login.html:29
-msgid "Login failed!"
-msgstr "L'identification a échoué !"
+#: 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/auth/login.html:34
-#: mediagoblin/templates/mediagoblin/auth/register.html:30
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
-#: mediagoblin/templates/mediagoblin/submit/start.html:29
-msgid "Submit"
-msgstr "Soumettre"
+#: 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/auth/login.html:29
+msgid "Logging in failed!"
+msgstr ""
#: mediagoblin/templates/mediagoblin/auth/login.html:42
msgid "Don't have an account yet?"
@@ -208,6 +233,10 @@ msgstr "Créez-en un ici !"
msgid "Create an account!"
msgstr "Créer un compte !"
+#: mediagoblin/templates/mediagoblin/auth/register.html:30
+msgid "Create"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
#, python-format
msgid ""
@@ -234,6 +263,7 @@ msgid "Cancel"
msgstr "Annuler"
#: mediagoblin/templates/mediagoblin/edit/edit.html:37
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
msgid "Save changes"
msgstr "Enregistrer les modifications"
@@ -246,34 +276,53 @@ msgstr "Modification du profil de %(username)s"
msgid "Media tagged with:"
msgstr "Média comportant les tags suivants :"
-#: mediagoblin/templates/mediagoblin/listings/tag.html:42
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:104
-msgid "atom feed"
-msgstr "flux Atom"
-
#: mediagoblin/templates/mediagoblin/submit/start.html:26
msgid "Submit yer media"
msgstr "Soumettez ce média"
+#: mediagoblin/templates/mediagoblin/submit/start.html:29
+msgid "Submit"
+msgstr "Soumettre"
+
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:32
#, 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:53
+#: 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/processing_panel.html:22
+msgid "Media processing panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:25
+msgid ""
+"You can track the state of media being processed for your gallery here."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:28
+msgid "Media in-processing"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:46
+msgid "No media in-processing"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:50
+msgid "These uploads failed to process:"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/user_pages/user.html:39
#: mediagoblin/templates/mediagoblin/user_pages/user.html:59
-msgid "Verification needed"
-msgstr "Vérification requise"
+msgid "Email verification needed"
+msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/user.html:42
-msgid "Almost done! Your account still needs to be verified."
-msgstr "C'est presque fini ! Il vous faut encore vérifier votre compte."
+msgid "Almost done! Your account still needs to be activated."
+msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/user.html:47
msgid ""
@@ -293,10 +342,8 @@ msgstr "Renvoyer l'e-mail de vérification"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
msgid ""
"Someone has registered an account with this username, but it still has to be"
-" verified."
+" activated."
msgstr ""
-"Quelqu'un a créé un compte à ce nom, mais le compte n'a pas encore été "
-"vérifié."
#: mediagoblin/templates/mediagoblin/user_pages/user.html:68
#, python-format
@@ -313,17 +360,48 @@ msgstr ""
msgid "%(username)s's profile"
msgstr "profil de %(username)s"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:86
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:85
+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
msgid "Edit profile"
msgstr "Modifier le profil"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:98
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
+msgid "This user hasn't filled in their profile (yet)."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:122
#, 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
+msgid ""
+"This is where your media will appear, but you don't seem to have added "
+"anything yet."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:141
+msgid "Add media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:147
+msgid "There doesn't seem to be any media here yet..."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
+msgid "feed icon"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
+msgid "Atom feed"
+msgstr ""
+
#: mediagoblin/user_pages/forms.py:24
msgid "Comment"
-msgstr ""
+msgstr "Commentaire"
diff --git a/mediagoblin/i18n/ja/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/ja/LC_MESSAGES/mediagoblin.mo
index 78455ad2..0e0e240d 100644
--- a/mediagoblin/i18n/ja/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/ja/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/ja/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/ja/LC_MESSAGES/mediagoblin.po
index 0aba5755..611bae32 100644
--- a/mediagoblin/i18n/ja/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/ja/LC_MESSAGES/mediagoblin.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://bugs.foocorp.net/projects/mediagoblin/issues\n"
-"POT-Creation-Date: 2011-08-13 19:47-0500\n"
-"PO-Revision-Date: 2011-08-14 00:47+0000\n"
+"POT-Creation-Date: 2011-08-25 07:41-0500\n"
+"PO-Revision-Date: 2011-08-25 12:41+0000\n"
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
@@ -89,59 +89,79 @@ msgstr "自己紹介"
msgid "Website"
msgstr "URL"
-#: mediagoblin/edit/forms.py:43
-msgid "Improperly formed URL"
-msgstr "不適切な形式のURL"
-
-#: mediagoblin/edit/views.py:54
+#: mediagoblin/edit/views.py:65
msgid "An entry with that slug already exists for this user."
msgstr "そのスラグを持つエントリは、このユーザーは既に存在します。"
-#: mediagoblin/edit/views.py:75
+#: mediagoblin/edit/views.py:94
msgid "You are editing another user's media. Proceed with caution."
msgstr "あなたは、他のユーザーのメディアを編集しています。ご注意ください。"
-#: mediagoblin/edit/views.py:96
+#: mediagoblin/edit/views.py:165
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/submit/forms.py:25
msgid "File"
msgstr "ファイル"
-#: mediagoblin/submit/views.py:46
+#: mediagoblin/submit/views.py:47
msgid "You must provide a file."
msgstr "ファイルを提供する必要があります。"
-#: mediagoblin/submit/views.py:49
+#: mediagoblin/submit/views.py:50
msgid "The file doesn't seem to be an image!"
msgstr "ファイルが画像ではないようです!"
-#: mediagoblin/submit/views.py:94
+#: mediagoblin/submit/views.py:122
msgid "Woohoo! Submitted!"
msgstr "投稿終了!"
+#: mediagoblin/templates/mediagoblin/404.html:21
+msgid "Oops!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/404.html:24
+msgid "There doesn't seem to be a page at this address. Sorry!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/404.html:26
+msgid ""
+"If you're sure the address is correct, maybe the page you're looking for has"
+" been moved or deleted."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/404.html:32
+msgid "Image of 404 goblin stressing out"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/base.html:22
msgid "GNU MediaGoblin"
msgstr "GNU MediaGoblin"
-#: mediagoblin/templates/mediagoblin/base.html:45
-msgid "Mediagoblin logo"
-msgstr "MediaGoblinロゴ"
+#: mediagoblin/templates/mediagoblin/base.html:47
+msgid "MediaGoblin logo"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:51
+#: mediagoblin/templates/mediagoblin/base.html:52
msgid "Submit media"
msgstr "コンテンツを投稿"
-#: mediagoblin/templates/mediagoblin/base.html:62
+#: mediagoblin/templates/mediagoblin/base.html:63
msgid "verify your email!"
msgstr "メアドを確認してください!"
-#: mediagoblin/templates/mediagoblin/base.html:72
-msgid "Login"
+#: mediagoblin/templates/mediagoblin/base.html:73
+#: mediagoblin/templates/mediagoblin/auth/login.html:26
+#: mediagoblin/templates/mediagoblin/auth/login.html:34
+msgid "Log in"
msgstr "ログイン"
-#: mediagoblin/templates/mediagoblin/base.html:88
+#: mediagoblin/templates/mediagoblin/base.html:89
msgid ""
"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
"href=\"http://gnu.org/\">GNU project</a>"
@@ -149,40 +169,48 @@ msgstr ""
"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
"href=\"http://gnu.org/\">GNU project</a>"
-#: mediagoblin/templates/mediagoblin/root.html:23
-msgid "Welcome to GNU MediaGoblin!"
-msgstr "GNU MediaGoblinへようこそ!"
+#: mediagoblin/templates/mediagoblin/root.html:27
+msgid "Hi there, media lover! MediaGoblin is..."
+msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:28
-msgid "Submit an item"
-msgstr "アイテムを投稿"
+#: mediagoblin/templates/mediagoblin/root.html:29
+msgid "The perfect place for your media!"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:33
-#, python-format
-msgid "If you have an account, you can <a href=\"%(login_url)s\">Login</a>."
-msgstr "もしアカウントが持ったら、<a href=\"%(login_url)s\">ログイン</a>できます。"
+#: 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:39
-#, python-format
+#: mediagoblin/templates/mediagoblin/root.html:31
msgid ""
-"If you don't have an account, please <a "
-"href=\"%(register_url)s\">Register</a>."
-msgstr "アカウントが持っていなければ、<a href=\"%(register_url)s\">登録</a>してお願いします。"
+"Free, as in freedom. (We’re a <a href=\"http://gnu.org\">GNU</a> project, "
+"after all.)"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/auth/login.html:26
-msgid "Log in"
-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/auth/login.html:29
-msgid "Login failed!"
-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/auth/login.html:34
-#: mediagoblin/templates/mediagoblin/auth/register.html:30
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
-#: mediagoblin/templates/mediagoblin/submit/start.html:29
-msgid "Submit"
-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/auth/login.html:29
+msgid "Logging in failed!"
+msgstr ""
#: mediagoblin/templates/mediagoblin/auth/login.html:42
msgid "Don't have an account yet?"
@@ -196,6 +224,10 @@ msgstr "ここで作成!"
msgid "Create an account!"
msgstr "アカウントを作成!"
+#: mediagoblin/templates/mediagoblin/auth/register.html:30
+msgid "Create"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
#, python-format
msgid ""
@@ -222,6 +254,7 @@ msgid "Cancel"
msgstr "キャンセル"
#: mediagoblin/templates/mediagoblin/edit/edit.html:37
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
msgid "Save changes"
msgstr "投稿する"
@@ -234,34 +267,53 @@ msgstr "%(username)sさんのプロフィールを編集中"
msgid "Media tagged with:"
msgstr "タグ付けされたコンテンツ:"
-#: mediagoblin/templates/mediagoblin/listings/tag.html:42
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:104
-msgid "atom feed"
-msgstr "Atomフィード"
-
#: mediagoblin/templates/mediagoblin/submit/start.html:26
msgid "Submit yer media"
msgstr "コンテンツを投稿"
+#: mediagoblin/templates/mediagoblin/submit/start.html:29
+msgid "Submit"
+msgstr "送信"
+
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:32
#, python-format
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
msgstr "<a href=\"%(user_url)s\">%(username)s</a>さんのコンテンツ"
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:53
+#: 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/processing_panel.html:22
+msgid "Media processing panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:25
+msgid ""
+"You can track the state of media being processed for your gallery here."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:28
+msgid "Media in-processing"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:46
+msgid "No media in-processing"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:50
+msgid "These uploads failed to process:"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/user_pages/user.html:39
#: mediagoblin/templates/mediagoblin/user_pages/user.html:59
-msgid "Verification needed"
-msgstr "確認必要"
+msgid "Email verification needed"
+msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/user.html:42
-msgid "Almost done! Your account still needs to be verified."
-msgstr "ほぼ完了!アカウントを検証する必要があります。"
+msgid "Almost done! Your account still needs to be activated."
+msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/user.html:47
msgid ""
@@ -279,8 +331,8 @@ msgstr "確認メールを再送信"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
msgid ""
"Someone has registered an account with this username, but it still has to be"
-" verified."
-msgstr "誰かがこのユーザ名でアカウントを登録しているが、まだ検証する必要があります。"
+" activated."
+msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/user.html:68
#, python-format
@@ -294,15 +346,46 @@ msgstr "あなたの確認メールを紛失した場合、<a href=\"%(login_url
msgid "%(username)s's profile"
msgstr "%(username)sさんのプロフィール"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:86
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:85
+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
msgid "Edit profile"
msgstr "プロフィールを編集"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:98
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
+msgid "This user hasn't filled in their profile (yet)."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:122
#, python-format
msgid "View all of %(username)s's media"
msgstr "%(username)sさんのコンテンツをすべて見る"
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:135
+msgid ""
+"This is where your media will appear, but you don't seem to have added "
+"anything yet."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:141
+msgid "Add media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:147
+msgid "There doesn't seem to be any media here yet..."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
+msgid "feed icon"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
+msgid "Atom feed"
+msgstr ""
+
#: mediagoblin/user_pages/forms.py:24
msgid "Comment"
msgstr ""
diff --git a/mediagoblin/i18n/nl/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/nl/LC_MESSAGES/mediagoblin.mo
new file mode 100644
index 00000000..931d51b9
--- /dev/null
+++ b/mediagoblin/i18n/nl/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/nl/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/nl/LC_MESSAGES/mediagoblin.po
new file mode 100644
index 00000000..1a8fb631
--- /dev/null
+++ b/mediagoblin/i18n/nl/LC_MESSAGES/mediagoblin.po
@@ -0,0 +1,399 @@
+# Translations template for PROJECT.
+# Copyright (C) 2011 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# <mail@jefvanschendel.nl>, 2011.
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU MediaGoblin\n"
+"Report-Msgid-Bugs-To: http://bugs.foocorp.net/projects/mediagoblin/issues\n"
+"POT-Creation-Date: 2011-08-25 07:41-0500\n"
+"PO-Revision-Date: 2011-08-25 12:41+0000\n"
+"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 0.9.6\n"
+"Language: nl\n"
+"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+
+#: mediagoblin/auth/forms.py:24 mediagoblin/auth/forms.py:46
+msgid "Username"
+msgstr "Gebruikersnaam"
+
+#: mediagoblin/auth/forms.py:29 mediagoblin/auth/forms.py:50
+msgid "Password"
+msgstr "Wachtwoord"
+
+#: mediagoblin/auth/forms.py:34
+msgid "Passwords must match."
+msgstr "Wachtwoorden moeten overeenkomen."
+
+#: mediagoblin/auth/forms.py:36
+msgid "Confirm password"
+msgstr "Bevestig wachtwoord"
+
+#: mediagoblin/auth/forms.py:39
+msgid "Email address"
+msgstr "E-mail adres"
+
+#: mediagoblin/auth/views.py:40
+msgid "Sorry, registration is disabled on this instance."
+msgstr "Sorry, registratie is uitgeschakeld op deze instantie."
+
+#: mediagoblin/auth/views.py:57
+msgid "Sorry, a user with that name already exists."
+msgstr "Sorry, er bestaat al een gebruiker met die naam."
+
+#: mediagoblin/auth/views.py:61
+msgid "Sorry, that email address has already been taken."
+msgstr "Sorry, dat e-mailadres is al ingenomen."
+
+#: mediagoblin/auth/views.py:159
+msgid ""
+"Your email address has been verified. You may now login, edit your profile, "
+"and submit images!"
+msgstr ""
+"Uw e-mailadres is geverifieerd. U kunt nu inloggen, uw profiel bewerken, en "
+"afbeeldingen toevoegen!"
+
+#: mediagoblin/auth/views.py:165
+msgid "The verification key or user id is incorrect"
+msgstr "De verificatie sleutel of gebruikers-ID is onjuist"
+
+#: mediagoblin/auth/views.py:186
+#: mediagoblin/templates/mediagoblin/auth/resent_verification_email.html:22
+msgid "Resent your verification email."
+msgstr "Verificatie e-mail opnieuw opgestuurd."
+
+#: mediagoblin/edit/forms.py:26 mediagoblin/submit/forms.py:27
+msgid "Title"
+msgstr "Titel"
+
+#: mediagoblin/edit/forms.py:29
+msgid "Slug"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:30
+msgid "The slug can't be empty"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:33 mediagoblin/submit/forms.py:31
+msgid "Tags"
+msgstr "Etiket"
+
+#: mediagoblin/edit/forms.py:38
+msgid "Bio"
+msgstr "Bio"
+
+#: mediagoblin/edit/forms.py:41
+msgid "Website"
+msgstr "Website"
+
+#: mediagoblin/edit/views.py:65
+msgid "An entry with that slug already exists for this user."
+msgstr ""
+
+#: mediagoblin/edit/views.py:94
+msgid "You are editing another user's media. Proceed with caution."
+msgstr ""
+"U bent de media van een andere gebruiker aan het aanpassen. Ga voorzichtig "
+"te werk."
+
+#: mediagoblin/edit/views.py:165
+msgid "You are editing a user's profile. Proceed with caution."
+msgstr ""
+"U bent een gebruikersprofiel aan het aanpassen. Ga voorzichtig te werk."
+
+#: mediagoblin/process_media/errors.py:44
+msgid "Invalid file given for media type."
+msgstr ""
+
+#: mediagoblin/submit/forms.py:25
+msgid "File"
+msgstr "Bestand"
+
+#: mediagoblin/submit/views.py:47
+msgid "You must provide a file."
+msgstr "U moet een bestand aangeven."
+
+#: mediagoblin/submit/views.py:50
+msgid "The file doesn't seem to be an image!"
+msgstr "Het lijkt erop dat dit bestand geen afbeelding is!"
+
+#: mediagoblin/submit/views.py:122
+msgid "Woohoo! Submitted!"
+msgstr "Mooizo! Toegevoegd!"
+
+#: mediagoblin/templates/mediagoblin/404.html:21
+msgid "Oops!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/404.html:24
+msgid "There doesn't seem to be a page at this address. Sorry!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/404.html:26
+msgid ""
+"If you're sure the address is correct, maybe the page you're looking for has"
+" been moved or deleted."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/404.html:32
+msgid "Image of 404 goblin stressing out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:22
+msgid "GNU MediaGoblin"
+msgstr "GNU MediaGoblin"
+
+#: mediagoblin/templates/mediagoblin/base.html:47
+msgid "MediaGoblin logo"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:52
+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:73
+#: mediagoblin/templates/mediagoblin/auth/login.html:26
+#: mediagoblin/templates/mediagoblin/auth/login.html:34
+msgid "Log in"
+msgstr "Inloggen"
+
+#: mediagoblin/templates/mediagoblin/base.html:89
+msgid ""
+"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
+"href=\"http://gnu.org/\">GNU project</a>"
+msgstr ""
+"Aangedreven door <a href=\"http://mediagoblin.org\">MediaGoblin</a> , een <a"
+" href=\"http://gnu.org/\">GNU-project</a>"
+
+#: mediagoblin/templates/mediagoblin/root.html:27
+msgid "Hi there, media lover! MediaGoblin is..."
+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 ""
+
+#: 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/auth/login.html:29
+msgid "Logging in failed!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/auth/login.html:42
+msgid "Don't have an account yet?"
+msgstr "Heeft u nog geen account?"
+
+#: mediagoblin/templates/mediagoblin/auth/login.html:45
+msgid "Create one here!"
+msgstr "Maak er hier een!"
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:27
+msgid "Create an account!"
+msgstr "Maak een account aan!"
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:30
+msgid "Create"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"\n"
+"to activate your GNU MediaGoblin account, open the following URL in\n"
+"your web browser:\n"
+"\n"
+"%(verification_url)s"
+msgstr ""
+"Hallo %(username)s , open de volgende URL in uw webbrowser om uw GNU "
+"MediaGoblin account te activeren: %(verification_url)s "
+
+#: mediagoblin/templates/mediagoblin/edit/edit.html:29
+#, python-format
+msgid "Editing %(media_title)s"
+msgstr "%(media_title)s aanpassen"
+
+#: mediagoblin/templates/mediagoblin/edit/edit.html:36
+msgid "Cancel"
+msgstr "Annuleren"
+
+#: mediagoblin/templates/mediagoblin/edit/edit.html:37
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
+msgid "Save changes"
+msgstr "Wijzigingen opslaan"
+
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:29
+#, python-format
+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/submit/start.html:26
+msgid "Submit yer media"
+msgstr "Voeg media toe"
+
+#: mediagoblin/templates/mediagoblin/submit/start.html:29
+msgid "Submit"
+msgstr "Voeg toe"
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:32
+#, 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/processing_panel.html:22
+msgid "Media processing panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:25
+msgid ""
+"You can track the state of media being processed for your gallery here."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:28
+msgid "Media in-processing"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:46
+msgid "No media in-processing"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:50
+msgid "These uploads failed to process:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:59
+msgid "Email verification needed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:42
+msgid "Almost done! Your account still needs to be activated."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:47
+msgid ""
+"An email should arrive in a few moments with instructions on how to do so."
+msgstr ""
+"Een e-mail zou in een paar ogenblikken aan moeten komen met instructies "
+"hiertoe."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:51
+msgid "In case it doesn't:"
+msgstr "Zoniet:"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:54
+msgid "Resend verification email"
+msgstr "Stuur de verificatie e-mail opnieuw op."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
+msgid ""
+"Someone has registered an account with this username, but it still has to be"
+" activated."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:68
+#, 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 ""
+"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
+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
+msgid "Edit profile"
+msgstr "Profiel aanpassen."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
+msgid "This user hasn't filled in their profile (yet)."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:122
+#, 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
+msgid ""
+"This is where your media will appear, but you don't seem to have added "
+"anything yet."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:141
+msgid "Add media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:147
+msgid "There doesn't seem to be any media here yet..."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
+msgid "feed icon"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
+msgid "Atom feed"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:24
+msgid "Comment"
+msgstr "Commentaar"
+
+
diff --git a/mediagoblin/i18n/nn_NO/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/nn_NO/LC_MESSAGES/mediagoblin.mo
index 8911785f..8bdb4a92 100644
--- a/mediagoblin/i18n/nn_NO/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/nn_NO/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/nn_NO/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/nn_NO/LC_MESSAGES/mediagoblin.po
index bd00fd1f..f4c97b12 100644
--- a/mediagoblin/i18n/nn_NO/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/nn_NO/LC_MESSAGES/mediagoblin.po
@@ -7,9 +7,9 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://bugs.foocorp.net/projects/mediagoblin/issues\n"
-"POT-Creation-Date: 2011-08-08 22:53-0500\n"
-"PO-Revision-Date: 2011-08-10 21:23+0000\n"
-"Last-Translator: velmont <odin.omdal@gmail.com>\n"
+"POT-Creation-Date: 2011-08-25 07:41-0500\n"
+"PO-Revision-Date: 2011-08-25 12:41+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"
@@ -42,11 +42,15 @@ msgstr "E-postadresse"
msgid "Sorry, registration is disabled on this instance."
msgstr "Registrering er slege av. Orsak."
-#: mediagoblin/auth/views.py:55
+#: mediagoblin/auth/views.py:57
msgid "Sorry, a user with that name already exists."
msgstr "Ein konto med dette brukarnamnet finst allereide."
-#: mediagoblin/auth/views.py:152
+#: mediagoblin/auth/views.py:61
+msgid "Sorry, that email address has already been taken."
+msgstr ""
+
+#: mediagoblin/auth/views.py:159
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
@@ -54,16 +58,16 @@ msgstr ""
"E-postadressa di, og dimed kontoen din er stadfesta. Du kan no logga inn, "
"endra profilen din og lasta opp filer."
-#: mediagoblin/auth/views.py:158
+#: mediagoblin/auth/views.py:165
msgid "The verification key or user id is incorrect"
msgstr "Stadfestingsnykelen eller brukar-ID-en din er feil."
-#: mediagoblin/auth/views.py:179
+#: mediagoblin/auth/views.py:186
#: mediagoblin/templates/mediagoblin/auth/resent_verification_email.html:22
msgid "Resent your verification email."
msgstr "Send ein ny stadfestingsepost."
-#: mediagoblin/edit/forms.py:26 mediagoblin/submit/forms.py:26
+#: mediagoblin/edit/forms.py:26 mediagoblin/submit/forms.py:27
msgid "Title"
msgstr "Tittel"
@@ -87,59 +91,79 @@ msgstr "Presentasjon"
msgid "Website"
msgstr "Heimeside"
-#: mediagoblin/edit/forms.py:43
-msgid "Improperly formed URL"
-msgstr "Ugyldeg URL"
-
-#: mediagoblin/edit/views.py:54
+#: 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:75
+#: mediagoblin/edit/views.py:94
msgid "You are editing another user's media. Proceed with caution."
msgstr "Ver forsiktig, du redigerer ein annan konto sitt innlegg."
-#: mediagoblin/edit/views.py:96
+#: mediagoblin/edit/views.py:165
msgid "You are editing a user's profile. Proceed with caution."
msgstr "Ver forsiktig, du redigerer ein annan konto sin profil."
-#: mediagoblin/submit/forms.py:29
+#: mediagoblin/process_media/errors.py:44
+msgid "Invalid file given for media type."
+msgstr ""
+
+#: mediagoblin/submit/forms.py:25
msgid "File"
msgstr "Fil"
-#: mediagoblin/submit/views.py:45
+#: mediagoblin/submit/views.py:47
msgid "You must provide a file."
msgstr "Du må velja ei fil."
-#: mediagoblin/submit/views.py:48
+#: mediagoblin/submit/views.py:50
msgid "The file doesn't seem to be an image!"
msgstr "Fila verkar ikkje å vera ei gyldig biletefil."
-#: mediagoblin/submit/views.py:96
+#: mediagoblin/submit/views.py:122
msgid "Woohoo! Submitted!"
msgstr "Johoo! Opplasta!"
+#: mediagoblin/templates/mediagoblin/404.html:21
+msgid "Oops!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/404.html:24
+msgid "There doesn't seem to be a page at this address. Sorry!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/404.html:26
+msgid ""
+"If you're sure the address is correct, maybe the page you're looking for has"
+" been moved or deleted."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/404.html:32
+msgid "Image of 404 goblin stressing out"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/base.html:22
msgid "GNU MediaGoblin"
msgstr "GNU MediaGoblin"
-#: mediagoblin/templates/mediagoblin/base.html:45
-msgid "Mediagoblin logo"
-msgstr "MediaGoblin-logo"
+#: mediagoblin/templates/mediagoblin/base.html:47
+msgid "MediaGoblin logo"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:51
+#: mediagoblin/templates/mediagoblin/base.html:52
msgid "Submit media"
msgstr "Last opp"
-#: mediagoblin/templates/mediagoblin/base.html:62
+#: mediagoblin/templates/mediagoblin/base.html:63
msgid "verify your email!"
msgstr "Stadfest epostadressa di"
-#: mediagoblin/templates/mediagoblin/base.html:72
-msgid "Login"
+#: mediagoblin/templates/mediagoblin/base.html:73
+#: mediagoblin/templates/mediagoblin/auth/login.html:26
+#: mediagoblin/templates/mediagoblin/auth/login.html:34
+msgid "Log in"
msgstr "Logg inn"
-#: mediagoblin/templates/mediagoblin/base.html:88
+#: mediagoblin/templates/mediagoblin/base.html:89
msgid ""
"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
"href=\"http://gnu.org/\">GNU project</a>"
@@ -147,40 +171,48 @@ msgstr ""
"Driven av <a href=\"http://mediagoblin.org\">MediaGoblin</a>, eit <a "
"href=\"http://gnu.org/\">GNU-prosjekt</a>"
-#: mediagoblin/templates/mediagoblin/root.html:21
-msgid "Welcome to GNU MediaGoblin!"
-msgstr "Velkomen til GNU MediaGoblin!"
+#: mediagoblin/templates/mediagoblin/root.html:27
+msgid "Hi there, media lover! MediaGoblin is..."
+msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:26
-msgid "Submit an item"
-msgstr "Last opp"
+#: 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
-#, python-format
-msgid "If you have an account, you can <a href=\"%(login_url)s\">Login</a>."
-msgstr "Har du ein konto? <a href=\"%(login_url)s\">Logg inn</a>."
+msgid ""
+"Free, as in freedom. (We’re a <a href=\"http://gnu.org\">GNU</a> project, "
+"after all.)"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:37
-#, python-format
+#: mediagoblin/templates/mediagoblin/root.html:32
msgid ""
-"If you don't have an account, please <a "
-"href=\"%(register_url)s\">Register</a>."
-msgstr "Har du ingen konto? <a href=\"%(register_url)s\">Registrer deg</a>."
+"Aiming to make the world a better place through decentralization and "
+"(eventually, coming soon!) federation!"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/auth/login.html:26
-msgid "Log in"
-msgstr "Logg inn"
+#: 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/auth/login.html:29
-msgid "Login failed!"
-msgstr "Innlogging feila!"
+#: 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/auth/login.html:34
-#: mediagoblin/templates/mediagoblin/auth/register.html:30
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
-#: mediagoblin/templates/mediagoblin/submit/start.html:32
-msgid "Submit"
-msgstr "Send"
+#: mediagoblin/templates/mediagoblin/auth/login.html:29
+msgid "Logging in failed!"
+msgstr ""
#: mediagoblin/templates/mediagoblin/auth/login.html:42
msgid "Don't have an account yet?"
@@ -194,6 +226,10 @@ msgstr "Lag ein!"
msgid "Create an account!"
msgstr "Lag ein konto."
+#: mediagoblin/templates/mediagoblin/auth/register.html:30
+msgid "Create"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
#, python-format
msgid ""
@@ -220,6 +256,7 @@ msgid "Cancel"
msgstr "Avbryt"
#: mediagoblin/templates/mediagoblin/edit/edit.html:37
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
msgid "Save changes"
msgstr "Lagra"
@@ -228,61 +265,78 @@ msgstr "Lagra"
msgid "Editing %(username)s's profile"
msgstr "Redigerar profilen til %(username)s"
-#: mediagoblin/templates/mediagoblin/listings/tag.html:29
+#: mediagoblin/templates/mediagoblin/listings/tag.html:31
msgid "Media tagged with:"
msgstr "Merkelappar:"
-#: mediagoblin/templates/mediagoblin/listings/tag.html:40
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:46
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:101
-msgid "atom feed"
-msgstr "atom-feed"
-
#: mediagoblin/templates/mediagoblin/submit/start.html:26
msgid "Submit yer media"
msgstr "Last opp"
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:29
+msgid "Submit"
+msgstr "Send"
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:32
#, python-format
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
msgstr "<a href=\"%(user_url)s\">%(username)s</a> sin mediafiler"
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:51
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:30
+#: 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/user.html:37
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:57
-msgid "Verification needed"
-msgstr "Treng stadfesting"
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:22
+msgid "Media processing panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:25
+msgid ""
+"You can track the state of media being processed for your gallery here."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:28
+msgid "Media in-processing"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:40
-msgid "Almost done! Your account still needs to be verified."
-msgstr "Nesten klart. Du treng berre stadfesta kontoen din."
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:46
+msgid "No media in-processing"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:45
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:50
+msgid "These uploads failed to process:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:59
+msgid "Email verification needed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:42
+msgid "Almost done! Your account still needs to be activated."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:47
msgid ""
"An email should arrive in a few moments with instructions on how to do so."
msgstr "Ein epost med instruksjonar kjem straks."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:49
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:51
msgid "In case it doesn't:"
msgstr "I tilfelle det ikkje skjer:"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:54
msgid "Resend verification email"
msgstr "Send ein ny epost"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:60
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
msgid ""
"Someone has registered an account with this username, but it still has to be"
-" verified."
+" activated."
msgstr ""
-"Det finst allereie ein konto med det brukarnamnet, men den kontoen treng "
-"stadfesting."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:66
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:68
#, python-format
msgid ""
"If you are that person but you've lost your verification email, you can <a "
@@ -291,18 +345,53 @@ 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:76
+#: 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:84
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:85
+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
msgid "Edit profile"
msgstr "Endra profil"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:95
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
+msgid "This user hasn't filled in their profile (yet)."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:122
#, python-format
msgid "View all of %(username)s's media"
msgstr "Sjå all media frå %(username)s"
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:135
+msgid ""
+"This is where your media will appear, but you don't seem to have added "
+"anything yet."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:141
+msgid "Add media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:147
+msgid "There doesn't seem to be any media here yet..."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
+msgid "feed icon"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
+msgid "Atom feed"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:24
+msgid "Comment"
+msgstr ""
+
diff --git a/mediagoblin/i18n/pt_BR/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/pt_BR/LC_MESSAGES/mediagoblin.mo
index 4dc4ab5f..b2e1161e 100644
--- a/mediagoblin/i18n/pt_BR/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/pt_BR/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/pt_BR/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/pt_BR/LC_MESSAGES/mediagoblin.po
index 43f65af6..438af907 100644
--- a/mediagoblin/i18n/pt_BR/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/pt_BR/LC_MESSAGES/mediagoblin.po
@@ -7,9 +7,9 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://bugs.foocorp.net/projects/mediagoblin/issues\n"
-"POT-Creation-Date: 2011-08-08 22:53-0500\n"
-"PO-Revision-Date: 2011-08-10 23:16+0000\n"
-"Last-Translator: osc <snd.noise@gmail.com>\n"
+"POT-Creation-Date: 2011-08-25 07:41-0500\n"
+"PO-Revision-Date: 2011-08-25 12:41+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"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -42,11 +42,15 @@ msgstr "Endereço de email"
msgid "Sorry, registration is disabled on this instance."
msgstr "Desculpa, o registro está desativado neste momento."
-#: mediagoblin/auth/views.py:55
+#: mediagoblin/auth/views.py:57
msgid "Sorry, a user with that name already exists."
msgstr "Desculpe, um usuário com este nome já existe."
-#: mediagoblin/auth/views.py:152
+#: mediagoblin/auth/views.py:61
+msgid "Sorry, that email address has already been taken."
+msgstr ""
+
+#: mediagoblin/auth/views.py:159
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
@@ -54,16 +58,16 @@ msgstr ""
"O seu endereço de e-mail foi verificado. Você pode agora fazer login, editar"
" seu perfil, e enviar imagens!"
-#: mediagoblin/auth/views.py:158
+#: mediagoblin/auth/views.py:165
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:179
+#: mediagoblin/auth/views.py:186
#: mediagoblin/templates/mediagoblin/auth/resent_verification_email.html:22
msgid "Resent your verification email."
msgstr "O email de verificação foi reenviado."
-#: mediagoblin/edit/forms.py:26 mediagoblin/submit/forms.py:26
+#: mediagoblin/edit/forms.py:26 mediagoblin/submit/forms.py:27
msgid "Title"
msgstr "Título"
@@ -87,59 +91,79 @@ msgstr "Biográfia"
msgid "Website"
msgstr "Website"
-#: mediagoblin/edit/forms.py:43
-msgid "Improperly formed URL"
-msgstr ""
-
-#: mediagoblin/edit/views.py:54
+#: mediagoblin/edit/views.py:65
msgid "An entry with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:75
+#: mediagoblin/edit/views.py:94
msgid "You are editing another user's media. Proceed with caution."
msgstr ""
-#: mediagoblin/edit/views.py:96
+#: mediagoblin/edit/views.py:165
msgid "You are editing a user's profile. Proceed with caution."
msgstr ""
-#: mediagoblin/submit/forms.py:29
+#: mediagoblin/process_media/errors.py:44
+msgid "Invalid file given for media type."
+msgstr ""
+
+#: mediagoblin/submit/forms.py:25
msgid "File"
msgstr "Arquivo"
-#: mediagoblin/submit/views.py:45
+#: mediagoblin/submit/views.py:47
msgid "You must provide a file."
msgstr "Você deve fornecer um arquivo."
-#: mediagoblin/submit/views.py:48
+#: mediagoblin/submit/views.py:50
msgid "The file doesn't seem to be an image!"
msgstr "O arquivo não parece ser uma imagem!"
-#: mediagoblin/submit/views.py:96
+#: mediagoblin/submit/views.py:122
msgid "Woohoo! Submitted!"
msgstr "Eba! Enviado!"
+#: mediagoblin/templates/mediagoblin/404.html:21
+msgid "Oops!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/404.html:24
+msgid "There doesn't seem to be a page at this address. Sorry!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/404.html:26
+msgid ""
+"If you're sure the address is correct, maybe the page you're looking for has"
+" been moved or deleted."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/404.html:32
+msgid "Image of 404 goblin stressing out"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/base.html:22
msgid "GNU MediaGoblin"
msgstr "GNU MediaGoblin"
-#: mediagoblin/templates/mediagoblin/base.html:45
-msgid "Mediagoblin logo"
-msgstr "Logo de Mediagoblin"
+#: mediagoblin/templates/mediagoblin/base.html:47
+msgid "MediaGoblin logo"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:51
+#: mediagoblin/templates/mediagoblin/base.html:52
msgid "Submit media"
msgstr "Enviar mídia"
-#: mediagoblin/templates/mediagoblin/base.html:62
+#: mediagoblin/templates/mediagoblin/base.html:63
msgid "verify your email!"
msgstr "Verifique seu email!"
-#: mediagoblin/templates/mediagoblin/base.html:72
-msgid "Login"
-msgstr "Login"
+#: mediagoblin/templates/mediagoblin/base.html:73
+#: mediagoblin/templates/mediagoblin/auth/login.html:26
+#: mediagoblin/templates/mediagoblin/auth/login.html:34
+msgid "Log in"
+msgstr "Entrar"
-#: mediagoblin/templates/mediagoblin/base.html:88
+#: mediagoblin/templates/mediagoblin/base.html:89
msgid ""
"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
"href=\"http://gnu.org/\">GNU project</a>"
@@ -147,42 +171,48 @@ msgstr ""
"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
"href=\"http://gnu.org/\">GNU project</a>"
-#: mediagoblin/templates/mediagoblin/root.html:21
-msgid "Welcome to GNU MediaGoblin!"
-msgstr "Bemvindo a GNU Mediagoblin!"
+#: mediagoblin/templates/mediagoblin/root.html:27
+msgid "Hi there, media lover! MediaGoblin is..."
+msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:26
-msgid "Submit an item"
+#: 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
-#, python-format
-msgid "If you have an account, you can <a href=\"%(login_url)s\">Login</a>."
-msgstr "Se você tem conta, você pode <a href=\"%(login_url)s\">Entrar</a> ."
+msgid ""
+"Free, as in freedom. (We’re a <a href=\"http://gnu.org\">GNU</a> project, "
+"after all.)"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:37
-#, python-format
+#: mediagoblin/templates/mediagoblin/root.html:32
msgid ""
-"If you don't have an account, please <a "
-"href=\"%(register_url)s\">Register</a>."
+"Aiming to make the world a better place through decentralization and "
+"(eventually, coming soon!) federation!"
msgstr ""
-"Se você não tem conta, por favor <a href=\"%(register_url)s\">Registrar</a> "
-"."
-#: mediagoblin/templates/mediagoblin/auth/login.html:26
-msgid "Log in"
-msgstr "Entrar"
+#: 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/auth/login.html:29
-msgid "Login failed!"
-msgstr "Login falhou!"
+#: 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/auth/login.html:34
-#: mediagoblin/templates/mediagoblin/auth/register.html:30
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
-#: mediagoblin/templates/mediagoblin/submit/start.html:32
-msgid "Submit"
-msgstr "Enviar"
+#: mediagoblin/templates/mediagoblin/auth/login.html:29
+msgid "Logging in failed!"
+msgstr ""
#: mediagoblin/templates/mediagoblin/auth/login.html:42
msgid "Don't have an account yet?"
@@ -196,6 +226,10 @@ msgstr "Crie uma aqui!"
msgid "Create an account!"
msgstr "Criar uma conta!"
+#: mediagoblin/templates/mediagoblin/auth/register.html:30
+msgid "Create"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
#, python-format
msgid ""
@@ -222,6 +256,7 @@ msgid "Cancel"
msgstr "Cancelar"
#: mediagoblin/templates/mediagoblin/edit/edit.html:37
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
msgid "Save changes"
msgstr "Salvar mudanças"
@@ -230,61 +265,78 @@ msgstr "Salvar mudanças"
msgid "Editing %(username)s's profile"
msgstr "Editando perfil de %(username)s"
-#: mediagoblin/templates/mediagoblin/listings/tag.html:29
+#: mediagoblin/templates/mediagoblin/listings/tag.html:31
msgid "Media tagged with:"
msgstr ""
-#: mediagoblin/templates/mediagoblin/listings/tag.html:40
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:46
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:101
-msgid "atom feed"
-msgstr "atom feed"
-
#: mediagoblin/templates/mediagoblin/submit/start.html:26
msgid "Submit yer media"
msgstr "Envie sua mídia"
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:29
+msgid "Submit"
+msgstr "Enviar"
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:32
#, python-format
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:51
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:30
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:32
msgid "Sorry, no such user found."
msgstr "Desculpe, tal usuário não encontrado."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:37
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:57
-msgid "Verification needed"
-msgstr "Verificação necessária"
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:22
+msgid "Media processing panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:25
+msgid ""
+"You can track the state of media being processed for your gallery here."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:28
+msgid "Media in-processing"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:46
+msgid "No media in-processing"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:50
+msgid "These uploads failed to process:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:59
+msgid "Email verification needed"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:40
-msgid "Almost done! Your account still needs to be verified."
-msgstr "Quase pronto! Sua conta precisa de verificação."
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:42
+msgid "Almost done! Your account still needs to be activated."
+msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:45
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:47
msgid ""
"An email should arrive in a few moments with instructions on how to do so."
msgstr "Receberá um email com instruções de como fazer."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:49
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:51
msgid "In case it doesn't:"
msgstr "Caso contrário:"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:54
msgid "Resend verification email"
msgstr "Reenviar email de verificação"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:60
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
msgid ""
"Someone has registered an account with this username, but it still has to be"
-" verified."
+" activated."
msgstr ""
-"Alguém já registrou uma conta com este nome, mas ainda tem que ser "
-"verificada."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:66
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:68
#, python-format
msgid ""
"If you are that person but you've lost your verification email, you can <a "
@@ -293,18 +345,53 @@ 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:76
+#: 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:84
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:85
+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
msgid "Edit profile"
msgstr "Editar perfil"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:95
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
+msgid "This user hasn't filled in their profile (yet)."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:122
#, python-format
msgid "View all of %(username)s's media"
msgstr ""
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:135
+msgid ""
+"This is where your media will appear, but you don't seem to have added "
+"anything yet."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:141
+msgid "Add media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:147
+msgid "There doesn't seem to be any media here yet..."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
+msgid "feed icon"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
+msgid "Atom feed"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:24
+msgid "Comment"
+msgstr ""
+
diff --git a/mediagoblin/i18n/ro/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/ro/LC_MESSAGES/mediagoblin.mo
index 361846d4..a3f48cd7 100644
--- a/mediagoblin/i18n/ro/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/ro/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/ro/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/ro/LC_MESSAGES/mediagoblin.po
index feb261c8..4ae3290c 100644
--- a/mediagoblin/i18n/ro/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/ro/LC_MESSAGES/mediagoblin.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://bugs.foocorp.net/projects/mediagoblin/issues\n"
-"POT-Creation-Date: 2011-08-08 22:53-0500\n"
-"PO-Revision-Date: 2011-08-10 21:52+0000\n"
+"POT-Creation-Date: 2011-08-25 07:41-0500\n"
+"PO-Revision-Date: 2011-08-25 17:38+0000\n"
"Last-Translator: gap <gapop@hotmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
@@ -42,11 +42,15 @@ msgstr "Adresa de e-mail"
msgid "Sorry, registration is disabled on this instance."
msgstr "Ne pare rău, dar înscrierile sunt dezactivate pe această instanță."
-#: mediagoblin/auth/views.py:55
+#: mediagoblin/auth/views.py:57
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:152
+#: mediagoblin/auth/views.py:61
+msgid "Sorry, that email address has already been taken."
+msgstr "Ne pare rău, această adresă de e-mail este deja rezervată."
+
+#: mediagoblin/auth/views.py:159
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
@@ -54,16 +58,16 @@ msgstr ""
"Adresa dvs. de e-mail a fost confirmată. Puteți să vă autentificați, să vă "
"modificați profilul și să trimiteți imagini!"
-#: mediagoblin/auth/views.py:158
+#: mediagoblin/auth/views.py:165
msgid "The verification key or user id is incorrect"
msgstr "Cheie de verificare sau user ID incorect."
-#: mediagoblin/auth/views.py:179
+#: mediagoblin/auth/views.py:186
#: mediagoblin/templates/mediagoblin/auth/resent_verification_email.html:22
msgid "Resent your verification email."
msgstr "E-mail-ul de verificare a fost retrimis."
-#: mediagoblin/edit/forms.py:26 mediagoblin/submit/forms.py:26
+#: mediagoblin/edit/forms.py:26 mediagoblin/submit/forms.py:27
msgid "Title"
msgstr "Titlu"
@@ -87,60 +91,82 @@ msgstr "Biografie"
msgid "Website"
msgstr "Sit Web"
-#: mediagoblin/edit/forms.py:43
-msgid "Improperly formed URL"
-msgstr "Adresă URL incorectă"
-
-#: mediagoblin/edit/views.py:54
+#: 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:75
+#: mediagoblin/edit/views.py:94
msgid "You are editing another user's media. Proceed with caution."
msgstr "Editați fișierul unui alt utilizator. Se recomandă prudență."
-#: mediagoblin/edit/views.py:96
+#: mediagoblin/edit/views.py:165
msgid "You are editing a user's profile. Proceed with caution."
msgstr "Editați profilul unui utilizator. Se recomandă prudență."
-#: mediagoblin/submit/forms.py:29
+#: 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/submit/forms.py:25
msgid "File"
msgstr "Fișier"
-#: mediagoblin/submit/views.py:45
+#: mediagoblin/submit/views.py:47
msgid "You must provide a file."
msgstr "Trebuie să selectați un fișier."
-#: mediagoblin/submit/views.py:48
+#: mediagoblin/submit/views.py:50
msgid "The file doesn't seem to be an image!"
msgstr "Fișierul nu pare a fi o imagine!"
-#: mediagoblin/submit/views.py:96
+#: mediagoblin/submit/views.py:122
msgid "Woohoo! Submitted!"
msgstr "Gata, trimis!"
+#: mediagoblin/templates/mediagoblin/404.html:21
+msgid "Oops!"
+msgstr "Oops!"
+
+#: mediagoblin/templates/mediagoblin/404.html:24
+msgid "There doesn't seem to be a page at this address. Sorry!"
+msgstr "Ne pare rău, nu există nicio pagină la această adresă."
+
+#: mediagoblin/templates/mediagoblin/404.html:26
+msgid ""
+"If you're sure the address is correct, maybe the page you're looking for has"
+" been moved or deleted."
+msgstr ""
+"Dacă sunteți sigur că adresa este coresctă, poate că pagina pe care o "
+"căutați a fost mutată sau ștearsă."
+
+#: mediagoblin/templates/mediagoblin/404.html:32
+msgid "Image of 404 goblin stressing out"
+msgstr "Imagine cu elful 404 stresat."
+
#: mediagoblin/templates/mediagoblin/base.html:22
msgid "GNU MediaGoblin"
msgstr "GNU MediaGoblin"
-#: mediagoblin/templates/mediagoblin/base.html:45
-msgid "Mediagoblin logo"
-msgstr "Logo MediaGoblin"
+#: mediagoblin/templates/mediagoblin/base.html:47
+msgid "MediaGoblin logo"
+msgstr "logo MediaGoblin"
-#: mediagoblin/templates/mediagoblin/base.html:51
+#: mediagoblin/templates/mediagoblin/base.html:52
msgid "Submit media"
-msgstr "Transmiteți fișier"
+msgstr "Transmiteți un fișier media"
-#: mediagoblin/templates/mediagoblin/base.html:62
+#: mediagoblin/templates/mediagoblin/base.html:63
msgid "verify your email!"
msgstr "verificați e-mail-ul!"
-#: mediagoblin/templates/mediagoblin/base.html:72
-msgid "Login"
+#: mediagoblin/templates/mediagoblin/base.html:73
+#: mediagoblin/templates/mediagoblin/auth/login.html:26
+#: mediagoblin/templates/mediagoblin/auth/login.html:34
+msgid "Log in"
msgstr "Autentificare"
-#: mediagoblin/templates/mediagoblin/base.html:88
+#: mediagoblin/templates/mediagoblin/base.html:89
msgid ""
"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
"href=\"http://gnu.org/\">GNU project</a>"
@@ -148,44 +174,58 @@ msgstr ""
"Construit cu <a href=\"http://mediagoblin.org\">MediaGoblin</a>, un <a "
"href=\"http://gnu.org/\">proiect GNU</a>"
-#: mediagoblin/templates/mediagoblin/root.html:21
-msgid "Welcome to GNU MediaGoblin!"
-msgstr "Bun venit la GNU MediaGoblin!"
+#: 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:26
-msgid "Submit an item"
-msgstr "Trimite un fișier"
+#: 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
-#, python-format
-msgid "If you have an account, you can <a href=\"%(login_url)s\">Login</a>."
+msgid ""
+"Free, as in freedom. (We’re a <a href=\"http://gnu.org\">GNU</a> project, "
+"after all.)"
msgstr ""
-"Dacă aveți deja un cont, vă puteți <a "
-"href=\"%(login_url)s\">autentifica</a>."
+"Liber. (Suntem un proiect <a href=\"http://gnu.org\">GNU</a>, până la urmă.)"
-#: mediagoblin/templates/mediagoblin/root.html:37
-#, python-format
+#: mediagoblin/templates/mediagoblin/root.html:32
msgid ""
-"If you don't have an account, please <a "
-"href=\"%(register_url)s\">Register</a>."
+"Aiming to make the world a better place through decentralization and "
+"(eventually, coming soon!) federation!"
msgstr ""
-"Dacă nu aveți cont, vă rugăm să vă <a "
-"href=\"%(register_url)s\">înregistrați</a>."
+"Un pas spre o lume mai bună prin descentralizare și (în curând) "
+"federalizare!"
-#: mediagoblin/templates/mediagoblin/auth/login.html:26
-msgid "Log in"
-msgstr "Autentificare"
+#: mediagoblin/templates/mediagoblin/root.html:33
+msgid ""
+"Built for extensibility. (Multiple media types coming soon to the software,"
+" including video support!)"
+msgstr ""
+"Proiectat să fie extensibil. (Software-ul va avea în curând suport pentru "
+"multiple formate de media, inclusiv pentru video!)"
-#: mediagoblin/templates/mediagoblin/auth/login.html:29
-msgid "Login failed!"
-msgstr "Autentificare nereușită!"
+#: mediagoblin/templates/mediagoblin/root.html:34
+msgid ""
+"Powered by people like you. (<a "
+"href=\"http://mediagoblin.org/pages/join.html\">You can help us improve this"
+" software!</a>)"
+msgstr ""
+"Animat de oameni ca tine. (<a "
+"href=\"http://mediagoblin.org/pages/join.html\">Ne poți ajuta să îmbunătățim"
+" acest software!</a>)"
-#: mediagoblin/templates/mediagoblin/auth/login.html:34
-#: mediagoblin/templates/mediagoblin/auth/register.html:30
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
-#: mediagoblin/templates/mediagoblin/submit/start.html:32
-msgid "Submit"
-msgstr "Trimite"
+#: mediagoblin/templates/mediagoblin/auth/login.html:29
+msgid "Logging in failed!"
+msgstr "Autentificare eșuată!"
#: mediagoblin/templates/mediagoblin/auth/login.html:42
msgid "Don't have an account yet?"
@@ -199,6 +239,10 @@ msgstr "Creați-l aici!"
msgid "Create an account!"
msgstr "Creați un cont!"
+#: mediagoblin/templates/mediagoblin/auth/register.html:30
+msgid "Create"
+msgstr "Creează"
+
#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
#, python-format
msgid ""
@@ -225,6 +269,7 @@ msgid "Cancel"
msgstr "Anulare"
#: mediagoblin/templates/mediagoblin/edit/edit.html:37
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
msgid "Save changes"
msgstr "Salvează modificările"
@@ -233,61 +278,80 @@ msgstr "Salvează modificările"
msgid "Editing %(username)s's profile"
msgstr "Editare profil %(username)s"
-#: mediagoblin/templates/mediagoblin/listings/tag.html:29
+#: mediagoblin/templates/mediagoblin/listings/tag.html:31
msgid "Media tagged with:"
msgstr "Etichete:"
-#: mediagoblin/templates/mediagoblin/listings/tag.html:40
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:46
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:101
-msgid "atom feed"
-msgstr "flux atom"
-
#: mediagoblin/templates/mediagoblin/submit/start.html:26
msgid "Submit yer media"
-msgstr "Trimite fișierele tale"
+msgstr "Trimite fișierele tale media"
+
+#: mediagoblin/templates/mediagoblin/submit/start.html:29
+msgid "Submit"
+msgstr "Trimite"
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:32
#, python-format
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
-msgstr "Fișierele lui <a href=\"%(user_url)s\">%(username)s</a>"
+msgstr "Fișierele media ale lui <a href=\"%(user_url)s\">%(username)s</a>"
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:51
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:30
+#: 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/user.html:37
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:57
-msgid "Verification needed"
-msgstr "Confirmare necesară"
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:22
+msgid "Media processing panel"
+msgstr "Panou de procesare media"
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:25
+msgid ""
+"You can track the state of media being processed for your gallery here."
+msgstr "Aici poți urmări stadiul procesării fișierelor media din galeria ta."
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:28
+msgid "Media in-processing"
+msgstr "Fișiere în curs de procesare"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:40
-msgid "Almost done! Your account still needs to be verified."
-msgstr "Aproape gata! Este necesară confirmarea contului dvs."
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:46
+msgid "No media in-processing"
+msgstr "Niciun fișier în curs de procesare"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:45
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:50
+msgid "These uploads failed to process:"
+msgstr "Aceste fișiere nu au putut fi procesate:"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:59
+msgid "Email verification needed"
+msgstr "Este necesară verificarea adresei de e-mail"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:42
+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
msgid ""
"An email should arrive in a few moments with instructions on how to do so."
msgstr "Veți primi în scurt timp un mesaj prin e-mail cu instrucțiuni."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:49
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:51
msgid "In case it doesn't:"
msgstr "Dacă nu primiți mesajul:"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:54
msgid "Resend verification email"
msgstr "Retrimite mesajul de verificare"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:60
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
msgid ""
"Someone has registered an account with this username, but it still has to be"
-" verified."
+" activated."
msgstr ""
-"Cineva s-a înscris pe site cu acest nume de utilizator, dar nu a fost "
-"confirmat încă."
+"Cineva a înregistrat un cont cu acest nume de utilizator, dar contul nu a "
+"fost încă activat."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:66
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:68
#, python-format
msgid ""
"If you are that person but you've lost your verification email, you can <a "
@@ -297,18 +361,55 @@ msgstr ""
"verificare, puteți să vă <a href=\"%(login_url)s\">autentificați</a> pentru "
"a-l retrimite."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:76
+#: 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:84
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:85
+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
msgid "Edit profile"
msgstr "Editare profil"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:95
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
+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
#, python-format
msgid "View all of %(username)s's media"
-msgstr "Toate fișierele lui %(username)s"
+msgstr "Toate fișierele media ale lui %(username)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:135
+msgid ""
+"This is where your media will appear, but you don't seem to have added "
+"anything yet."
+msgstr ""
+"Aici vor apărea fișierele tale media, dar se pare că încă nu ai trimis "
+"nimic."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:141
+msgid "Add media"
+msgstr "Trimite fișier"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:147
+msgid "There doesn't seem to be any media here yet..."
+msgstr "Nu pare să existe niciun fișier media deocamdată..."
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
+msgid "feed icon"
+msgstr "icon feed"
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
+msgid "Atom feed"
+msgstr "feed Atom"
+
+#: mediagoblin/user_pages/forms.py:24
+msgid "Comment"
+msgstr "Scrie un comentariu"
diff --git a/mediagoblin/i18n/ru/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/ru/LC_MESSAGES/mediagoblin.mo
new file mode 100644
index 00000000..49aa9ccb
--- /dev/null
+++ b/mediagoblin/i18n/ru/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/ru/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/ru/LC_MESSAGES/mediagoblin.po
new file mode 100644
index 00000000..9adc9b83
--- /dev/null
+++ b/mediagoblin/i18n/ru/LC_MESSAGES/mediagoblin.po
@@ -0,0 +1,392 @@
+# Translations template for PROJECT.
+# Copyright (C) 2011 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+#
+# <deletesoftware@yandex.ru>, 2011.
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU MediaGoblin\n"
+"Report-Msgid-Bugs-To: http://bugs.foocorp.net/projects/mediagoblin/issues\n"
+"POT-Creation-Date: 2011-08-25 07:41-0500\n"
+"PO-Revision-Date: 2011-08-25 14:35+0000\n"
+"Last-Translator: aleksejrs <deletesoftware@yandex.ru>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 0.9.6\n"
+"Language: ru\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
+
+#: mediagoblin/auth/forms.py:24 mediagoblin/auth/forms.py:46
+msgid "Username"
+msgstr "Логин"
+
+#: mediagoblin/auth/forms.py:29 mediagoblin/auth/forms.py:50
+msgid "Password"
+msgstr "Пароль"
+
+#: mediagoblin/auth/forms.py:34
+msgid "Passwords must match."
+msgstr "Пароли должны совпадать."
+
+#: mediagoblin/auth/forms.py:36
+msgid "Confirm password"
+msgstr "Подтвердите пароль"
+
+#: mediagoblin/auth/forms.py:39
+msgid "Email address"
+msgstr "Адрес электронной почты"
+
+#: mediagoblin/auth/views.py:40
+msgid "Sorry, registration is disabled on this instance."
+msgstr ""
+
+#: mediagoblin/auth/views.py:57
+msgid "Sorry, a user with that name already exists."
+msgstr ""
+
+#: mediagoblin/auth/views.py:61
+msgid "Sorry, that email address has already been taken."
+msgstr ""
+
+#: mediagoblin/auth/views.py:159
+msgid ""
+"Your email address has been verified. You may now login, edit your profile, "
+"and submit images!"
+msgstr ""
+
+#: mediagoblin/auth/views.py:165
+msgid "The verification key or user id is incorrect"
+msgstr ""
+
+#: mediagoblin/auth/views.py:186
+#: mediagoblin/templates/mediagoblin/auth/resent_verification_email.html:22
+msgid "Resent your verification email."
+msgstr ""
+
+#: mediagoblin/edit/forms.py:26 mediagoblin/submit/forms.py:27
+msgid "Title"
+msgstr "Название"
+
+#: mediagoblin/edit/forms.py:29
+msgid "Slug"
+msgstr "Отличительная часть адреса"
+
+#: mediagoblin/edit/forms.py:30
+msgid "The slug can't be empty"
+msgstr "Отличительная часть адреса необходима"
+
+#: mediagoblin/edit/forms.py:33 mediagoblin/submit/forms.py:31
+msgid "Tags"
+msgstr "Метки"
+
+#: mediagoblin/edit/forms.py:38
+msgid "Bio"
+msgstr ""
+
+#: mediagoblin/edit/forms.py:41
+msgid "Website"
+msgstr "Сайт"
+
+#: mediagoblin/edit/views.py:65
+msgid "An entry with that slug already exists for this user."
+msgstr ""
+"У этого пользователя уже есть файл с такой отличительной частью адреса."
+
+#: mediagoblin/edit/views.py:94
+msgid "You are editing another user's media. Proceed with caution."
+msgstr ""
+
+#: mediagoblin/edit/views.py:165
+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/submit/forms.py:25
+msgid "File"
+msgstr "Файл"
+
+#: mediagoblin/submit/views.py:47
+msgid "You must provide a file."
+msgstr ""
+
+#: mediagoblin/submit/views.py:50
+msgid "The file doesn't seem to be an image!"
+msgstr "Файл, похоже, не является картинкой!"
+
+#: mediagoblin/submit/views.py:122
+msgid "Woohoo! Submitted!"
+msgstr "Ура! Файл загружен!"
+
+#: mediagoblin/templates/mediagoblin/404.html:21
+msgid "Oops!"
+msgstr "Ой!"
+
+#: mediagoblin/templates/mediagoblin/404.html:24
+msgid "There doesn't seem to be a page at this address. Sorry!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/404.html:26
+msgid ""
+"If you're sure the address is correct, maybe the page you're looking for has"
+" been moved or deleted."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/404.html:32
+msgid "Image of 404 goblin stressing out"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:22
+msgid "GNU MediaGoblin"
+msgstr "GNU MediaGoblin"
+
+#: mediagoblin/templates/mediagoblin/base.html:47
+msgid "MediaGoblin logo"
+msgstr "Символ MediaGoblin"
+
+#: mediagoblin/templates/mediagoblin/base.html:52
+msgid "Submit media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/base.html:63
+msgid "verify your email!"
+msgstr "подтвердите ваш адрес электронной почты!"
+
+#: mediagoblin/templates/mediagoblin/base.html:73
+#: mediagoblin/templates/mediagoblin/auth/login.html:26
+#: mediagoblin/templates/mediagoblin/auth/login.html:34
+msgid "Log in"
+msgstr "Представиться"
+
+#: mediagoblin/templates/mediagoblin/base.html:89
+msgid ""
+"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
+"href=\"http://gnu.org/\">GNU project</a>"
+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 ""
+
+#: 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/auth/login.html:29
+msgid "Logging in failed!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/auth/login.html:42
+msgid "Don't have an account yet?"
+msgstr "Ещё нет учётной записи?"
+
+#: mediagoblin/templates/mediagoblin/auth/login.html:45
+msgid "Create one here!"
+msgstr "Создайте её здесь!"
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:27
+msgid "Create an account!"
+msgstr "Создаём учётную запись!"
+
+#: mediagoblin/templates/mediagoblin/auth/register.html:30
+msgid "Create"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
+#, python-format
+msgid ""
+"Hi %(username)s,\n"
+"\n"
+"to activate your GNU MediaGoblin account, open the following URL in\n"
+"your web browser:\n"
+"\n"
+"%(verification_url)s"
+msgstr ""
+"Привет, %(username)s!\n"
+"\n"
+"Чтобы активировать свою учётную запись в GNU MediaGoblin, откройте в своём веб‐браузере следующую ссылку:\n"
+"\n"
+"%(verification_url)s"
+
+#: mediagoblin/templates/mediagoblin/edit/edit.html:29
+#, python-format
+msgid "Editing %(media_title)s"
+msgstr "Редактирование %(media_title)s"
+
+#: mediagoblin/templates/mediagoblin/edit/edit.html:36
+msgid "Cancel"
+msgstr "Отменить"
+
+#: mediagoblin/templates/mediagoblin/edit/edit.html:37
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
+msgid "Save changes"
+msgstr "Сохранить изменения"
+
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:29
+#, python-format
+msgid "Editing %(username)s's profile"
+msgstr "Редактирование профиля %(username)s"
+
+#: mediagoblin/templates/mediagoblin/listings/tag.html:31
+msgid "Media tagged with:"
+msgstr "Файлы с меткой:"
+
+#: mediagoblin/templates/mediagoblin/submit/start.html:26
+msgid "Submit yer media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/submit/start.html:29
+msgid "Submit"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:32
+#, python-format
+msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:32
+msgid "Sorry, no such user found."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:22
+msgid "Media processing panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:25
+msgid ""
+"You can track the state of media being processed for your gallery here."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:28
+msgid "Media in-processing"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:46
+msgid "No media in-processing"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:50
+msgid "These uploads failed to process:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:59
+msgid "Email verification needed"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:42
+msgid "Almost done! Your account still needs to be activated."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:47
+msgid ""
+"An email should arrive in a few moments with instructions on how to do so."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:51
+msgid "In case it doesn't:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:54
+msgid "Resend verification email"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
+msgid ""
+"Someone has registered an account with this username, but it still has to be"
+" activated."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:68
+#, 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 "Профиль пользователя %(username)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:85
+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
+msgid "Edit profile"
+msgstr "Изменить профиль"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
+msgid "This user hasn't filled in their profile (yet)."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:122
+#, python-format
+msgid "View all of %(username)s's media"
+msgstr "Смотреть все файлы %(username)s"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:135
+msgid ""
+"This is where your media will appear, but you don't seem to have added "
+"anything yet."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:141
+msgid "Add media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:147
+msgid "There doesn't seem to be any media here yet..."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
+msgid "feed icon"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
+msgid "Atom feed"
+msgstr "лента в формате Atom"
+
+#: mediagoblin/user_pages/forms.py:24
+msgid "Comment"
+msgstr ""
+
+
diff --git a/mediagoblin/i18n/sl/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/sl/LC_MESSAGES/mediagoblin.mo
index a70b1fef..aaeec466 100644
--- a/mediagoblin/i18n/sl/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/sl/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/sl/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/sl/LC_MESSAGES/mediagoblin.po
index bf2dd4fa..3db6ed4a 100644
--- a/mediagoblin/i18n/sl/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/sl/LC_MESSAGES/mediagoblin.po
@@ -7,9 +7,9 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://bugs.foocorp.net/projects/mediagoblin/issues\n"
-"POT-Creation-Date: 2011-08-08 22:53-0500\n"
-"PO-Revision-Date: 2011-08-10 21:28+0000\n"
-"Last-Translator: JLP <jlp@holodeck1.com>\n"
+"POT-Creation-Date: 2011-08-25 07:41-0500\n"
+"PO-Revision-Date: 2011-08-25 12:41+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"
@@ -42,11 +42,15 @@ msgstr "E-poštni naslov"
msgid "Sorry, registration is disabled on this instance."
msgstr "Oprostite, prijava za ta izvod ni omogočena."
-#: mediagoblin/auth/views.py:55
+#: mediagoblin/auth/views.py:57
msgid "Sorry, a user with that name already exists."
msgstr "Oprostite, uporabnik s tem imenom že obstaja."
-#: mediagoblin/auth/views.py:152
+#: mediagoblin/auth/views.py:61
+msgid "Sorry, that email address has already been taken."
+msgstr "Oprostite, ta e-poštni naslov je že v uporabi."
+
+#: mediagoblin/auth/views.py:159
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
@@ -54,16 +58,16 @@ msgstr ""
"Vaš e-poštni naslov je bil potrjen. Sedaj se lahko prijavite, uredite svoj "
"profil in pošljete slike."
-#: mediagoblin/auth/views.py:158
+#: mediagoblin/auth/views.py:165
msgid "The verification key or user id is incorrect"
msgstr "Potrditveni ključ ali uporabniška identifikacija je napačna"
-#: mediagoblin/auth/views.py:179
+#: mediagoblin/auth/views.py:186
#: mediagoblin/templates/mediagoblin/auth/resent_verification_email.html:22
msgid "Resent your verification email."
msgstr "Ponovno pošiljanje potrditvene e-pošte."
-#: mediagoblin/edit/forms.py:26 mediagoblin/submit/forms.py:26
+#: mediagoblin/edit/forms.py:26 mediagoblin/submit/forms.py:27
msgid "Title"
msgstr "Naslov"
@@ -87,59 +91,81 @@ msgstr "Biografija"
msgid "Website"
msgstr "Spletna stran"
-#: mediagoblin/edit/forms.py:43
-msgid "Improperly formed URL"
-msgstr "Napačno oblikovan URL"
-
-#: mediagoblin/edit/views.py:54
+#: 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:75
+#: mediagoblin/edit/views.py:94
msgid "You are editing another user's media. Proceed with caution."
msgstr "Urejate vsebino drugega uporabnika. Nadaljujte pazljivo."
-#: mediagoblin/edit/views.py:96
+#: mediagoblin/edit/views.py:165
msgid "You are editing a user's profile. Proceed with caution."
msgstr "Urejate uporabniški profil. Nadaljujte pazljivo."
-#: mediagoblin/submit/forms.py:29
+#: mediagoblin/process_media/errors.py:44
+msgid "Invalid file given for media type."
+msgstr "Za vrsto vsebine je bila podana napačna datoteka."
+
+#: mediagoblin/submit/forms.py:25
msgid "File"
msgstr "Datoteka"
-#: mediagoblin/submit/views.py:45
+#: mediagoblin/submit/views.py:47
msgid "You must provide a file."
msgstr "Podati morate datoteko."
-#: mediagoblin/submit/views.py:48
+#: mediagoblin/submit/views.py:50
msgid "The file doesn't seem to be an image!"
msgstr "Kot kaže datoteka ni slika."
-#: mediagoblin/submit/views.py:96
+#: mediagoblin/submit/views.py:122
msgid "Woohoo! Submitted!"
msgstr "Juhej! Poslano."
+#: mediagoblin/templates/mediagoblin/404.html:21
+msgid "Oops!"
+msgstr "Opa!"
+
+#: mediagoblin/templates/mediagoblin/404.html:24
+msgid "There doesn't seem to be a page at this address. Sorry!"
+msgstr "Oprostite. Videti je, da na tem naslovu ni nobene strani."
+
+#: mediagoblin/templates/mediagoblin/404.html:26
+msgid ""
+"If you're sure the address is correct, maybe the page you're looking for has"
+" been moved or deleted."
+msgstr ""
+"Če ste v točnost naslova prepričani, je bila iskana stran morda premaknjena "
+"ali pa izbrisana."
+
+#: mediagoblin/templates/mediagoblin/404.html:32
+msgid "Image of 404 goblin stressing out"
+msgstr "Slika napake 404 s paničnim škratom"
+
#: mediagoblin/templates/mediagoblin/base.html:22
msgid "GNU MediaGoblin"
msgstr "GNU MediaGoblin"
-#: mediagoblin/templates/mediagoblin/base.html:45
-msgid "Mediagoblin logo"
+#: mediagoblin/templates/mediagoblin/base.html:47
+msgid "MediaGoblin logo"
msgstr "Logotip MediaGoblin"
-#: mediagoblin/templates/mediagoblin/base.html:51
+#: mediagoblin/templates/mediagoblin/base.html:52
msgid "Submit media"
msgstr "Pošlji vsebino"
-#: mediagoblin/templates/mediagoblin/base.html:62
+#: mediagoblin/templates/mediagoblin/base.html:63
msgid "verify your email!"
msgstr "Preverite svojo e-pošto."
-#: mediagoblin/templates/mediagoblin/base.html:72
-msgid "Login"
+#: mediagoblin/templates/mediagoblin/base.html:73
+#: mediagoblin/templates/mediagoblin/auth/login.html:26
+#: mediagoblin/templates/mediagoblin/auth/login.html:34
+msgid "Log in"
msgstr "Prijava"
-#: mediagoblin/templates/mediagoblin/base.html:88
+#: mediagoblin/templates/mediagoblin/base.html:89
msgid ""
"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
"href=\"http://gnu.org/\">GNU project</a>"
@@ -147,40 +173,57 @@ msgstr ""
"Stran poganja <a href=\"http://mediagoblin.org\">MediaGoblin</a>, del <a "
"href=\"http://gnu.org/\">projekta GNU</a>"
-#: mediagoblin/templates/mediagoblin/root.html:21
-msgid "Welcome to GNU MediaGoblin!"
-msgstr "Dobrodošli v GNU MediaGoblin!"
+#: 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:26
-msgid "Submit an item"
-msgstr "Pošljite datoteko"
+#: mediagoblin/templates/mediagoblin/root.html:30
+msgid ""
+"A place for people to collaborate and show off original and derived "
+"creations!"
+msgstr ""
+"Mesto, kjer ljudje lahko sodelujejo in razkazujejo originalne in predelane "
+"stvaritve."
#: mediagoblin/templates/mediagoblin/root.html:31
-#, python-format
-msgid "If you have an account, you can <a href=\"%(login_url)s\">Login</a>."
-msgstr "Če imate račun, se lahko <a href=\"%(login_url)s\">Prijavite</a>."
+msgid ""
+"Free, as in freedom. (We’re a <a href=\"http://gnu.org\">GNU</a> project, "
+"after all.)"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:37
-#, python-format
+#: mediagoblin/templates/mediagoblin/root.html:32
msgid ""
-"If you don't have an account, please <a "
-"href=\"%(register_url)s\">Register</a>."
-msgstr "Če računa še nimate, se <a href=\"%(register_url)s\">Registrirajte</a>."
+"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/auth/login.html:26
-msgid "Log in"
-msgstr "Prijava"
+#: 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/auth/login.html:29
-msgid "Login failed!"
-msgstr "Neuspešna prijava."
+#: mediagoblin/templates/mediagoblin/root.html:34
+msgid ""
+"Powered by people like you. (<a "
+"href=\"http://mediagoblin.org/pages/join.html\">You can help us improve this"
+" software!</a>)"
+msgstr ""
+"Sad dela ljudi, kot ste vi. (<a "
+"href=\"http://mediagoblin.org/pages/join.html\">Pri izboljševanju nam lahko "
+"pomagate tudi vi.</a>)"
-#: mediagoblin/templates/mediagoblin/auth/login.html:34
-#: mediagoblin/templates/mediagoblin/auth/register.html:30
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
-#: mediagoblin/templates/mediagoblin/submit/start.html:32
-msgid "Submit"
-msgstr "Pošlji"
+#: mediagoblin/templates/mediagoblin/auth/login.html:29
+msgid "Logging in failed!"
+msgstr "Prijava ni uspela."
#: mediagoblin/templates/mediagoblin/auth/login.html:42
msgid "Don't have an account yet?"
@@ -194,6 +237,10 @@ msgstr "Ustvarite si ga."
msgid "Create an account!"
msgstr "Ustvarite račun."
+#: mediagoblin/templates/mediagoblin/auth/register.html:30
+msgid "Create"
+msgstr "Ustvari"
+
#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
#, python-format
msgid ""
@@ -221,6 +268,7 @@ msgid "Cancel"
msgstr "Prekliči"
#: mediagoblin/templates/mediagoblin/edit/edit.html:37
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
msgid "Save changes"
msgstr "Shrani spremembe"
@@ -229,61 +277,80 @@ msgstr "Shrani spremembe"
msgid "Editing %(username)s's profile"
msgstr "Urejanje profila – %(username)s"
-#: mediagoblin/templates/mediagoblin/listings/tag.html:29
+#: mediagoblin/templates/mediagoblin/listings/tag.html:31
msgid "Media tagged with:"
msgstr "Vsebina označena z:"
-#: mediagoblin/templates/mediagoblin/listings/tag.html:40
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:46
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:101
-msgid "atom feed"
-msgstr "Vir Atom"
-
#: mediagoblin/templates/mediagoblin/submit/start.html:26
msgid "Submit yer media"
msgstr "Pošljite svojo vsebino"
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:29
+msgid "Submit"
+msgstr "Pošlji"
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:32
#, 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:51
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:30
+#: 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/user.html:37
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:57
-msgid "Verification needed"
-msgstr "Potrebna je potrditev"
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:22
+msgid "Media processing panel"
+msgstr "Podokno obdelovanja vsebine"
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:25
+msgid ""
+"You can track the state of media being processed for your gallery here."
+msgstr "Tu lahko spremljate stanje vsebin, ki so v obdelavi za vašo galerijo."
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:28
+msgid "Media in-processing"
+msgstr "Vsebina v obdelavi"
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:46
+msgid "No media in-processing"
+msgstr "V obdelavi ni nobene vsebine"
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:50
+msgid "These uploads failed to process:"
+msgstr "Teh vsebin ni bilo moč obdelati:"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:40
-msgid "Almost done! Your account still needs to be verified."
-msgstr "Skoraj ste zaključili. Račun je potrebno le še potrditi."
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:59
+msgid "Email verification needed"
+msgstr "Potrebna je potrditev prek e-pošte"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:45
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:42
+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
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:49
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:51
msgid "In case it doesn't:"
msgstr "Če je ne prejmete:"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:54
msgid "Resend verification email"
msgstr "Ponovno pošlji potrditveno e-pošto"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:60
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
msgid ""
"Someone has registered an account with this username, but it still has to be"
-" verified."
+" activated."
msgstr ""
"Nekdo je s tem uporabniškim imenom že registriral račun, vendar mora biti še"
-" potrjen."
+" aktiviran."
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:66
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:68
#, python-format
msgid ""
"If you are that person but you've lost your verification email, you can <a "
@@ -292,18 +359,53 @@ 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:76
+#: 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:84
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:85
+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
msgid "Edit profile"
msgstr "Uredi profil"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:95
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
+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
#, 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
+msgid ""
+"This is where your media will appear, but you don't seem to have added "
+"anything yet."
+msgstr "Tu bo prikazana vaša vsebina, a trenutno še niste dodali nič."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:141
+msgid "Add media"
+msgstr "Dodaj vsebino"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:147
+msgid "There doesn't seem to be any media here yet..."
+msgstr "Videti je, da tu še ni nobene vsebine ..."
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
+msgid "feed icon"
+msgstr "Ikona vira"
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
+msgid "Atom feed"
+msgstr "Ikona Atom"
+
+#: mediagoblin/user_pages/forms.py:24
+msgid "Comment"
+msgstr "Komentar"
+
diff --git a/mediagoblin/i18n/sr/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/sr/LC_MESSAGES/mediagoblin.mo
index 153584d3..2f9de271 100644
--- a/mediagoblin/i18n/sr/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/sr/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/sr/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/sr/LC_MESSAGES/mediagoblin.po
index ec8611ee..51c2e443 100644
--- a/mediagoblin/i18n/sr/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/sr/LC_MESSAGES/mediagoblin.po
@@ -6,8 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://bugs.foocorp.net/projects/mediagoblin/issues\n"
-"POT-Creation-Date: 2011-08-08 22:53-0500\n"
-"PO-Revision-Date: 2011-08-09 03:57+0000\n"
+"POT-Creation-Date: 2011-08-25 07:41-0500\n"
+"PO-Revision-Date: 2011-08-25 12:41+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"
@@ -41,26 +41,30 @@ msgstr ""
msgid "Sorry, registration is disabled on this instance."
msgstr ""
-#: mediagoblin/auth/views.py:55
+#: mediagoblin/auth/views.py:57
msgid "Sorry, a user with that name already exists."
msgstr ""
-#: mediagoblin/auth/views.py:152
+#: mediagoblin/auth/views.py:61
+msgid "Sorry, that email address has already been taken."
+msgstr ""
+
+#: mediagoblin/auth/views.py:159
msgid ""
"Your email address has been verified. You may now login, edit your profile, "
"and submit images!"
msgstr ""
-#: mediagoblin/auth/views.py:158
+#: mediagoblin/auth/views.py:165
msgid "The verification key or user id is incorrect"
msgstr ""
-#: mediagoblin/auth/views.py:179
+#: mediagoblin/auth/views.py:186
#: mediagoblin/templates/mediagoblin/auth/resent_verification_email.html:22
msgid "Resent your verification email."
msgstr ""
-#: mediagoblin/edit/forms.py:26 mediagoblin/submit/forms.py:26
+#: mediagoblin/edit/forms.py:26 mediagoblin/submit/forms.py:27
msgid "Title"
msgstr ""
@@ -84,97 +88,125 @@ msgstr ""
msgid "Website"
msgstr ""
-#: mediagoblin/edit/forms.py:43
-msgid "Improperly formed URL"
-msgstr ""
-
-#: mediagoblin/edit/views.py:54
+#: mediagoblin/edit/views.py:65
msgid "An entry with that slug already exists for this user."
msgstr ""
-#: mediagoblin/edit/views.py:75
+#: mediagoblin/edit/views.py:94
msgid "You are editing another user's media. Proceed with caution."
msgstr ""
-#: mediagoblin/edit/views.py:96
+#: mediagoblin/edit/views.py:165
msgid "You are editing a user's profile. Proceed with caution."
msgstr ""
-#: mediagoblin/submit/forms.py:29
+#: mediagoblin/process_media/errors.py:44
+msgid "Invalid file given for media type."
+msgstr ""
+
+#: mediagoblin/submit/forms.py:25
msgid "File"
msgstr ""
-#: mediagoblin/submit/views.py:45
+#: mediagoblin/submit/views.py:47
msgid "You must provide a file."
msgstr ""
-#: mediagoblin/submit/views.py:48
+#: mediagoblin/submit/views.py:50
msgid "The file doesn't seem to be an image!"
msgstr ""
-#: mediagoblin/submit/views.py:96
+#: mediagoblin/submit/views.py:122
msgid "Woohoo! Submitted!"
msgstr ""
+#: mediagoblin/templates/mediagoblin/404.html:21
+msgid "Oops!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/404.html:24
+msgid "There doesn't seem to be a page at this address. Sorry!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/404.html:26
+msgid ""
+"If you're sure the address is correct, maybe the page you're looking for has"
+" been moved or deleted."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/404.html:32
+msgid "Image of 404 goblin stressing out"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/base.html:22
msgid "GNU MediaGoblin"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:45
-msgid "Mediagoblin logo"
+#: mediagoblin/templates/mediagoblin/base.html:47
+msgid "MediaGoblin logo"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:51
+#: mediagoblin/templates/mediagoblin/base.html:52
msgid "Submit media"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:62
+#: mediagoblin/templates/mediagoblin/base.html:63
msgid "verify your email!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:72
-msgid "Login"
+#: mediagoblin/templates/mediagoblin/base.html:73
+#: mediagoblin/templates/mediagoblin/auth/login.html:26
+#: mediagoblin/templates/mediagoblin/auth/login.html:34
+msgid "Log in"
msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:88
+#: mediagoblin/templates/mediagoblin/base.html:89
msgid ""
"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
"href=\"http://gnu.org/\">GNU project</a>"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:21
-msgid "Welcome to GNU MediaGoblin!"
+#: mediagoblin/templates/mediagoblin/root.html:27
+msgid "Hi there, media lover! MediaGoblin is..."
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:26
-msgid "Submit an item"
+#: 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
-#, python-format
-msgid "If you have an account, you can <a href=\"%(login_url)s\">Login</a>."
+msgid ""
+"Free, as in freedom. (We’re a <a href=\"http://gnu.org\">GNU</a> project, "
+"after all.)"
msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:37
-#, python-format
+#: mediagoblin/templates/mediagoblin/root.html:32
msgid ""
-"If you don't have an account, please <a "
-"href=\"%(register_url)s\">Register</a>."
+"Aiming to make the world a better place through decentralization and "
+"(eventually, coming soon!) federation!"
msgstr ""
-#: mediagoblin/templates/mediagoblin/auth/login.html:26
-msgid "Log in"
+#: 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/auth/login.html:29
-msgid "Login failed!"
+#: 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/auth/login.html:34
-#: mediagoblin/templates/mediagoblin/auth/register.html:30
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
-#: mediagoblin/templates/mediagoblin/submit/start.html:32
-msgid "Submit"
+#: mediagoblin/templates/mediagoblin/auth/login.html:29
+msgid "Logging in failed!"
msgstr ""
#: mediagoblin/templates/mediagoblin/auth/login.html:42
@@ -189,6 +221,10 @@ msgstr ""
msgid "Create an account!"
msgstr ""
+#: mediagoblin/templates/mediagoblin/auth/register.html:30
+msgid "Create"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
#, python-format
msgid ""
@@ -210,6 +246,7 @@ msgid "Cancel"
msgstr ""
#: mediagoblin/templates/mediagoblin/edit/edit.html:37
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
msgid "Save changes"
msgstr ""
@@ -218,77 +255,131 @@ msgstr ""
msgid "Editing %(username)s's profile"
msgstr ""
-#: mediagoblin/templates/mediagoblin/listings/tag.html:29
+#: mediagoblin/templates/mediagoblin/listings/tag.html:31
msgid "Media tagged with:"
msgstr ""
-#: mediagoblin/templates/mediagoblin/listings/tag.html:40
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:46
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:101
-msgid "atom feed"
-msgstr ""
-
#: mediagoblin/templates/mediagoblin/submit/start.html:26
msgid "Submit yer media"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:30
+#: mediagoblin/templates/mediagoblin/submit/start.html:29
+msgid "Submit"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:32
#, python-format
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:51
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:30
+#: 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/user.html:37
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:57
-msgid "Verification needed"
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:22
+msgid "Media processing panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:25
+msgid ""
+"You can track the state of media being processed for your gallery here."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:28
+msgid "Media in-processing"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:46
+msgid "No media in-processing"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:50
+msgid "These uploads failed to process:"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:39
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:59
+msgid "Email verification needed"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:40
-msgid "Almost done! Your account still needs to be verified."
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:42
+msgid "Almost done! Your account still needs to be activated."
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:45
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:47
msgid ""
"An email should arrive in a few moments with instructions on how to do so."
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:49
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:51
msgid "In case it doesn't:"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:52
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:54
msgid "Resend verification email"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:60
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
msgid ""
"Someone has registered an account with this username, but it still has to be"
-" verified."
+" activated."
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:66
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:68
#, 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:76
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:78
#, python-format
msgid "%(username)s's profile"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:84
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:85
+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
msgid "Edit profile"
msgstr ""
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:95
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
+msgid "This user hasn't filled in their profile (yet)."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:122
#, python-format
msgid "View all of %(username)s's media"
msgstr ""
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:135
+msgid ""
+"This is where your media will appear, but you don't seem to have added "
+"anything yet."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:141
+msgid "Add media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:147
+msgid "There doesn't seem to be any media here yet..."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
+msgid "feed icon"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
+msgid "Atom feed"
+msgstr ""
+
+#: mediagoblin/user_pages/forms.py:24
+msgid "Comment"
+msgstr ""
+
diff --git a/mediagoblin/i18n/sv/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/sv/LC_MESSAGES/mediagoblin.mo
index 0d4b463c..2136e0a3 100644
--- a/mediagoblin/i18n/sv/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/sv/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/sv/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/sv/LC_MESSAGES/mediagoblin.po
index 23605892..dd30371a 100644
--- a/mediagoblin/i18n/sv/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/sv/LC_MESSAGES/mediagoblin.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://bugs.foocorp.net/projects/mediagoblin/issues\n"
-"POT-Creation-Date: 2011-08-13 19:47-0500\n"
-"PO-Revision-Date: 2011-08-16 13:22+0000\n"
+"POT-Creation-Date: 2011-08-25 07:41-0500\n"
+"PO-Revision-Date: 2011-08-25 13:07+0000\n"
"Last-Translator: joar <transifex@wandborg.se>\n"
"Language-Team: Swedish (http://www.transifex.net/projects/p/mediagoblin/team/sv/)\n"
"MIME-Version: 1.0\n"
@@ -91,59 +91,81 @@ msgstr "Presentation"
msgid "Website"
msgstr "Hemsida"
-#: mediagoblin/edit/forms.py:43
-msgid "Improperly formed URL"
-msgstr "Ogiltig URL"
-
-#: mediagoblin/edit/views.py:54
+#: 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:75
+#: mediagoblin/edit/views.py:94
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:96
+#: mediagoblin/edit/views.py:165
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/submit/forms.py:25
msgid "File"
msgstr "Fil"
-#: mediagoblin/submit/views.py:46
+#: mediagoblin/submit/views.py:47
msgid "You must provide a file."
msgstr "Du måste ange en fil"
-#: mediagoblin/submit/views.py:49
+#: mediagoblin/submit/views.py:50
msgid "The file doesn't seem to be an image!"
msgstr "Filen verkar inte vara en giltig bildfil!"
-#: mediagoblin/submit/views.py:94
+#: mediagoblin/submit/views.py:122
msgid "Woohoo! Submitted!"
msgstr "Tjohoo! Upladdat!"
+#: mediagoblin/templates/mediagoblin/404.html:21
+msgid "Oops!"
+msgstr "Ojoj!"
+
+#: mediagoblin/templates/mediagoblin/404.html:24
+msgid "There doesn't seem to be a page at this address. Sorry!"
+msgstr "Ledsen, det verkar inte vara någonting här."
+
+#: mediagoblin/templates/mediagoblin/404.html:26
+msgid ""
+"If you're sure the address is correct, maybe the page you're looking for has"
+" been moved or deleted."
+msgstr ""
+"Om du är säker på att adressen stämmer så kanske sidan du letar efter har "
+"flyttats eller tagits bort."
+
+#: mediagoblin/templates/mediagoblin/404.html:32
+msgid "Image of 404 goblin stressing out"
+msgstr "Bild av stressat 404-troll."
+
#: mediagoblin/templates/mediagoblin/base.html:22
msgid "GNU MediaGoblin"
msgstr "GNU MediaGoblin"
-#: mediagoblin/templates/mediagoblin/base.html:45
-msgid "Mediagoblin logo"
-msgstr "MediaGoblin logo"
+#: mediagoblin/templates/mediagoblin/base.html:47
+msgid "MediaGoblin logo"
+msgstr "MediaGoblin-logotyp"
-#: mediagoblin/templates/mediagoblin/base.html:51
+#: mediagoblin/templates/mediagoblin/base.html:52
msgid "Submit media"
msgstr "Ladda upp"
-#: mediagoblin/templates/mediagoblin/base.html:62
+#: mediagoblin/templates/mediagoblin/base.html:63
msgid "verify your email!"
msgstr "Verifiera din e-postadress!"
-#: mediagoblin/templates/mediagoblin/base.html:72
-msgid "Login"
+#: mediagoblin/templates/mediagoblin/base.html:73
+#: mediagoblin/templates/mediagoblin/auth/login.html:26
+#: mediagoblin/templates/mediagoblin/auth/login.html:34
+msgid "Log in"
msgstr "Logga in"
-#: mediagoblin/templates/mediagoblin/base.html:88
+#: mediagoblin/templates/mediagoblin/base.html:89
msgid ""
"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
"href=\"http://gnu.org/\">GNU project</a>"
@@ -151,42 +173,63 @@ msgstr ""
"Drivs av <a href=\"http://mediagoblin.org\">MediaGoblin</a>, ett <a "
"href=\"http://gnu.org/\">GNU</a>-projekt"
-#: mediagoblin/templates/mediagoblin/root.html:23
-msgid "Welcome to GNU MediaGoblin!"
-msgstr "Välkommen till GNU MediaGoblin!"
+#: mediagoblin/templates/mediagoblin/root.html:27
+msgid "Hi there, media lover! MediaGoblin is..."
+msgstr "Hej där mediaentusiast, MediaGoblin..."
-#: mediagoblin/templates/mediagoblin/root.html:28
-msgid "Submit an item"
-msgstr "Ladda upp"
+#: 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:33
-#, python-format
-msgid "If you have an account, you can <a href=\"%(login_url)s\">Login</a>."
-msgstr "Har du ett konto? <a href=\"%(login_url)s\">Logga in</a>."
+#: mediagoblin/templates/mediagoblin/root.html:30
+msgid ""
+"A place for people to collaborate and show off original and derived "
+"creations!"
+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:39
-#, python-format
+#: mediagoblin/templates/mediagoblin/root.html:31
msgid ""
-"If you don't have an account, please <a "
-"href=\"%(register_url)s\">Register</a>."
+"Free, as in freedom. (We’re a <a href=\"http://gnu.org\">GNU</a> project, "
+"after all.)"
msgstr ""
-"Har du inget konto? <a href=\"%(register_url)s\">Registrera ett konto</a>."
+"Är fritt som i frihet. (Vi är ju ett <a "
+"href=\"http://gnu.org\">GNU</a>-projekt.)"
-#: mediagoblin/templates/mediagoblin/auth/login.html:26
-msgid "Log in"
-msgstr "Logga in"
+#: mediagoblin/templates/mediagoblin/root.html:32
+msgid ""
+"Aiming to make the world a better place through decentralization and "
+"(eventually, coming soon!) federation!"
+msgstr ""
+"Arbetar för att göra världen till ett bättre ställe genom decentralisering "
+"och (så småningom, kommer snart!) -- Google Translate säger "
+"\"sammanslutning\", <em>en: <a "
+"href=\"http://en.wikipedia.org/wiki/Federation_(information_technology)\">federation</a></em>"
+" "
+
+#: mediagoblin/templates/mediagoblin/root.html:33
+msgid ""
+"Built for extensibility. (Multiple media types coming soon to the software,"
+" including video support!)"
+msgstr ""
+"Byggd för utbyggbarhet. (Flera mediatyper kommer snart till MediaGoblin, "
+"bland annat video!)"
+
+#: mediagoblin/templates/mediagoblin/root.html:34
+msgid ""
+"Powered by people like you. (<a "
+"href=\"http://mediagoblin.org/pages/join.html\">You can help us improve this"
+" software!</a>)"
+msgstr ""
+"Drivs av människor som du. (<a "
+"href=\"http://mediagoblin.org/pages/join.html\">Du kan hjälpa os forbättra "
+"MediaGoblin!</a>)"
#: mediagoblin/templates/mediagoblin/auth/login.html:29
-msgid "Login failed!"
+msgid "Logging in failed!"
msgstr "Inloggning misslyckades!"
-#: mediagoblin/templates/mediagoblin/auth/login.html:34
-#: mediagoblin/templates/mediagoblin/auth/register.html:30
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
-#: mediagoblin/templates/mediagoblin/submit/start.html:29
-msgid "Submit"
-msgstr "Skicka"
-
#: mediagoblin/templates/mediagoblin/auth/login.html:42
msgid "Don't have an account yet?"
msgstr "Har du inget konto?"
@@ -199,6 +242,10 @@ msgstr "Skapa ett!"
msgid "Create an account!"
msgstr "Skapa ett konto!"
+#: mediagoblin/templates/mediagoblin/auth/register.html:30
+msgid "Create"
+msgstr "Skapa"
+
#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
#, python-format
msgid ""
@@ -225,6 +272,7 @@ msgid "Cancel"
msgstr "Avbryt"
#: mediagoblin/templates/mediagoblin/edit/edit.html:37
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
msgid "Save changes"
msgstr "Spara"
@@ -237,34 +285,53 @@ msgstr "Redigerar %(username)ss profil"
msgid "Media tagged with:"
msgstr "Taggat med:"
-#: mediagoblin/templates/mediagoblin/listings/tag.html:42
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:104
-msgid "atom feed"
-msgstr "atom-feed"
-
#: mediagoblin/templates/mediagoblin/submit/start.html:26
msgid "Submit yer media"
msgstr "Ladda upp"
+#: mediagoblin/templates/mediagoblin/submit/start.html:29
+msgid "Submit"
+msgstr "Skicka"
+
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:32
#, python-format
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
msgstr "<a href=\"%(user_url)s\">%(username)s</a>s media"
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:53
+#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:52
#: mediagoblin/templates/mediagoblin/user_pages/user.html:32
msgid "Sorry, no such user found."
msgstr "Finns ingen sådan användare ännu."
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:22
+msgid "Media processing panel"
+msgstr "Mediabehandlingspanel"
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:25
+msgid ""
+"You can track the state of media being processed for your gallery here."
+msgstr "Här kan du se status för mediabehandling av bilder i ditt galleri."
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:28
+msgid "Media in-processing"
+msgstr "Media under behandling"
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:46
+msgid "No media in-processing"
+msgstr "Ingen media under behandling"
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:50
+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
-msgid "Verification needed"
-msgstr "Verifiering krävs"
+msgid "Email verification needed"
+msgstr "E-postadressverifiering krävs."
#: mediagoblin/templates/mediagoblin/user_pages/user.html:42
-msgid "Almost done! Your account still needs to be verified."
-msgstr "Nästan klart! Nu behöver du bara verifiera ditt konto."
+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
msgid ""
@@ -283,10 +350,10 @@ msgstr "Skicka ett nytt e-postmeddelande"
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
msgid ""
"Someone has registered an account with this username, but it still has to be"
-" verified."
+" activated."
msgstr ""
-"Det finns redan ett konto med det här användarnamnet, men det behöver "
-"verifieras."
+"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
#, python-format
@@ -303,15 +370,48 @@ msgstr ""
msgid "%(username)s's profile"
msgstr "%(username)ss profil"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:86
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:85
+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
msgid "Edit profile"
msgstr "Redigera profil"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:98
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
+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
#, 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
+msgid ""
+"This is where your media will appear, but you don't seem to have added "
+"anything yet."
+msgstr ""
+"Här kommer din media att dyka upp, du verkar inte ha lagt till någonting "
+"ännu."
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:141
+msgid "Add media"
+msgstr "Lägg till media"
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:147
+msgid "There doesn't seem to be any media here yet..."
+msgstr "Det verkar inte finnas någon media här ännu."
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
+msgid "feed icon"
+msgstr "feed-ikon"
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
+msgid "Atom feed"
+msgstr "Atom-feed"
+
#: mediagoblin/user_pages/forms.py:24
msgid "Comment"
msgstr "Kommentar"
diff --git a/mediagoblin/i18n/zh_TW/LC_MESSAGES/mediagoblin.mo b/mediagoblin/i18n/zh_TW/LC_MESSAGES/mediagoblin.mo
index 9615e44c..ce7240fc 100644
--- a/mediagoblin/i18n/zh_TW/LC_MESSAGES/mediagoblin.mo
+++ b/mediagoblin/i18n/zh_TW/LC_MESSAGES/mediagoblin.mo
Binary files differ
diff --git a/mediagoblin/i18n/zh_TW/LC_MESSAGES/mediagoblin.po b/mediagoblin/i18n/zh_TW/LC_MESSAGES/mediagoblin.po
index d8f8c98d..44670ab2 100644
--- a/mediagoblin/i18n/zh_TW/LC_MESSAGES/mediagoblin.po
+++ b/mediagoblin/i18n/zh_TW/LC_MESSAGES/mediagoblin.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU MediaGoblin\n"
"Report-Msgid-Bugs-To: http://bugs.foocorp.net/projects/mediagoblin/issues\n"
-"POT-Creation-Date: 2011-08-13 19:47-0500\n"
-"PO-Revision-Date: 2011-08-14 00:47+0000\n"
+"POT-Creation-Date: 2011-08-25 07:41-0500\n"
+"PO-Revision-Date: 2011-08-25 12:41+0000\n"
"Last-Translator: cwebber <cwebber@dustycloud.org>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
@@ -89,59 +89,79 @@ msgstr "自傳"
msgid "Website"
msgstr "網站"
-#: mediagoblin/edit/forms.py:43
-msgid "Improperly formed URL"
-msgstr "部正確的網址"
-
-#: mediagoblin/edit/views.py:54
+#: mediagoblin/edit/views.py:65
msgid "An entry with that slug already exists for this user."
msgstr "這個自訂字串已經被其他人用了"
-#: mediagoblin/edit/views.py:75
+#: mediagoblin/edit/views.py:94
msgid "You are editing another user's media. Proceed with caution."
msgstr "你正在編輯他人的媒體檔案. 請謹慎處理."
-#: mediagoblin/edit/views.py:96
+#: mediagoblin/edit/views.py:165
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/submit/forms.py:25
msgid "File"
msgstr "檔案"
-#: mediagoblin/submit/views.py:46
+#: mediagoblin/submit/views.py:47
msgid "You must provide a file."
msgstr "你必須提供一個檔案"
-#: mediagoblin/submit/views.py:49
+#: mediagoblin/submit/views.py:50
msgid "The file doesn't seem to be an image!"
msgstr "檔案看起來不像是一個圖片喔!"
-#: mediagoblin/submit/views.py:94
+#: mediagoblin/submit/views.py:122
msgid "Woohoo! Submitted!"
msgstr "喔耶! 送出去了!"
+#: mediagoblin/templates/mediagoblin/404.html:21
+msgid "Oops!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/404.html:24
+msgid "There doesn't seem to be a page at this address. Sorry!"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/404.html:26
+msgid ""
+"If you're sure the address is correct, maybe the page you're looking for has"
+" been moved or deleted."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/404.html:32
+msgid "Image of 404 goblin stressing out"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/base.html:22
msgid "GNU MediaGoblin"
msgstr "GNU MediaGoblin"
-#: mediagoblin/templates/mediagoblin/base.html:45
-msgid "Mediagoblin logo"
-msgstr "Mediagoblin 標誌"
+#: mediagoblin/templates/mediagoblin/base.html:47
+msgid "MediaGoblin logo"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/base.html:51
+#: mediagoblin/templates/mediagoblin/base.html:52
msgid "Submit media"
msgstr "送出媒體"
-#: mediagoblin/templates/mediagoblin/base.html:62
+#: mediagoblin/templates/mediagoblin/base.html:63
msgid "verify your email!"
msgstr "確認您的電子郵件!"
-#: mediagoblin/templates/mediagoblin/base.html:72
-msgid "Login"
+#: mediagoblin/templates/mediagoblin/base.html:73
+#: mediagoblin/templates/mediagoblin/auth/login.html:26
+#: mediagoblin/templates/mediagoblin/auth/login.html:34
+msgid "Log in"
msgstr "登入"
-#: mediagoblin/templates/mediagoblin/base.html:88
+#: mediagoblin/templates/mediagoblin/base.html:89
msgid ""
"Powered by <a href=\"http://mediagoblin.org\">MediaGoblin</a>, a <a "
"href=\"http://gnu.org/\">GNU project</a>"
@@ -149,40 +169,48 @@ msgstr ""
"由 <a href=\"http://mediagoblin.org\">MediaGoblin</a> 製作, 她是一個 <a "
"href=\"http://gnu.org/\">GNU project</a>"
-#: mediagoblin/templates/mediagoblin/root.html:23
-msgid "Welcome to GNU MediaGoblin!"
-msgstr "GNU MediaGoblin 歡迎您!"
+#: mediagoblin/templates/mediagoblin/root.html:27
+msgid "Hi there, media lover! MediaGoblin is..."
+msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:28
-msgid "Submit an item"
-msgstr "送出一個項目"
+#: mediagoblin/templates/mediagoblin/root.html:29
+msgid "The perfect place for your media!"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/root.html:33
-#, python-format
-msgid "If you have an account, you can <a href=\"%(login_url)s\">Login</a>."
-msgstr "如果您有帳號了, 你可以直接 <a href=\"%(login_url)s\">登入</a>."
+#: 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:39
-#, python-format
+#: mediagoblin/templates/mediagoblin/root.html:31
msgid ""
-"If you don't have an account, please <a "
-"href=\"%(register_url)s\">Register</a>."
-msgstr "如果您尚未取得帳號, 請 <a href=\"%(register_url)s\">註冊</a>."
+"Free, as in freedom. (We’re a <a href=\"http://gnu.org\">GNU</a> project, "
+"after all.)"
+msgstr ""
-#: mediagoblin/templates/mediagoblin/auth/login.html:26
-msgid "Log in"
-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/auth/login.html:29
-msgid "Login failed!"
-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/auth/login.html:34
-#: mediagoblin/templates/mediagoblin/auth/register.html:30
-#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
-#: mediagoblin/templates/mediagoblin/submit/start.html:29
-msgid "Submit"
-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/auth/login.html:29
+msgid "Logging in failed!"
+msgstr ""
#: mediagoblin/templates/mediagoblin/auth/login.html:42
msgid "Don't have an account yet?"
@@ -196,6 +224,10 @@ msgstr "在這裡建立一個吧!"
msgid "Create an account!"
msgstr "建立一個帳號!"
+#: mediagoblin/templates/mediagoblin/auth/register.html:30
+msgid "Create"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/auth/verification_email.txt:19
#, python-format
msgid ""
@@ -222,6 +254,7 @@ msgid "Cancel"
msgstr "取消"
#: mediagoblin/templates/mediagoblin/edit/edit.html:37
+#: mediagoblin/templates/mediagoblin/edit/edit_profile.html:35
msgid "Save changes"
msgstr "儲存變更"
@@ -234,34 +267,53 @@ msgstr "編輯 %(username)s'的檔案中"
msgid "Media tagged with:"
msgstr "媒體被標籤為:"
-#: mediagoblin/templates/mediagoblin/listings/tag.html:42
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:48
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:104
-msgid "atom feed"
-msgstr "atom feed"
-
#: mediagoblin/templates/mediagoblin/submit/start.html:26
msgid "Submit yer media"
msgstr "送出你的媒體檔案"
+#: mediagoblin/templates/mediagoblin/submit/start.html:29
+msgid "Submit"
+msgstr "送出"
+
#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:32
#, python-format
msgid "<a href=\"%(user_url)s\">%(username)s</a>'s media"
msgstr "<a href=\"%(user_url)s\">%(username)s</a>的媒體"
-#: mediagoblin/templates/mediagoblin/user_pages/gallery.html:53
+#: 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/processing_panel.html:22
+msgid "Media processing panel"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:25
+msgid ""
+"You can track the state of media being processed for your gallery here."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:28
+msgid "Media in-processing"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:46
+msgid "No media in-processing"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/processing_panel.html:50
+msgid "These uploads failed to process:"
+msgstr ""
+
#: mediagoblin/templates/mediagoblin/user_pages/user.html:39
#: mediagoblin/templates/mediagoblin/user_pages/user.html:59
-msgid "Verification needed"
-msgstr "需要驗證"
+msgid "Email verification needed"
+msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/user.html:42
-msgid "Almost done! Your account still needs to be verified."
-msgstr "快要完成了! 你的帳號仍需要驗證."
+msgid "Almost done! Your account still needs to be activated."
+msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/user.html:47
msgid ""
@@ -279,8 +331,8 @@ msgstr "重送認證郵件 "
#: mediagoblin/templates/mediagoblin/user_pages/user.html:62
msgid ""
"Someone has registered an account with this username, but it still has to be"
-" verified."
-msgstr "有人已經註冊了這個帳號, 但此帳號仍需要驗證."
+" activated."
+msgstr ""
#: mediagoblin/templates/mediagoblin/user_pages/user.html:68
#, python-format
@@ -294,15 +346,46 @@ msgstr "如果你就是那個人, 但是遺失了認證信, 你可以<a href=\"%
msgid "%(username)s's profile"
msgstr "%(username)s的個人檔案"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:86
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:85
+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
msgid "Edit profile"
msgstr "編輯個人檔案"
-#: mediagoblin/templates/mediagoblin/user_pages/user.html:98
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:96
+msgid "This user hasn't filled in their profile (yet)."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:122
#, python-format
msgid "View all of %(username)s's media"
msgstr "查看%(username)s的全部媒體檔案"
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:135
+msgid ""
+"This is where your media will appear, but you don't seem to have added "
+"anything yet."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:141
+msgid "Add media"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/user_pages/user.html:147
+msgid "There doesn't seem to be any media here yet..."
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:21
+msgid "feed icon"
+msgstr ""
+
+#: mediagoblin/templates/mediagoblin/utils/feed_link.html:23
+msgid "Atom feed"
+msgstr ""
+
#: mediagoblin/user_pages/forms.py:24
msgid "Comment"
msgstr ""
diff --git a/mediagoblin/init/__init__.py b/mediagoblin/init/__init__.py
index ff005703..44f604b1 100644
--- a/mediagoblin/init/__init__.py
+++ b/mediagoblin/init/__init__.py
@@ -112,10 +112,15 @@ def get_staticdirector(app_config):
def setup_storage():
- app_config = mg_globals.app_config
+ global_config = mg_globals.global_config
+
+ key_short = 'publicstore'
+ key_long = "storage:" + key_short
+ public_store = storage_system_from_config(global_config[key_long])
- public_store = storage_system_from_config(app_config, 'publicstore')
- queue_store = storage_system_from_config(app_config, 'queuestore')
+ key_short = 'queuestore'
+ key_long = "storage:" + key_short
+ queue_store = storage_system_from_config(global_config[key_long])
setup_globals(
public_store = public_store,
diff --git a/mediagoblin/routing.py b/mediagoblin/routing.py
index 1340da60..f78658c5 100644
--- a/mediagoblin/routing.py
+++ b/mediagoblin/routing.py
@@ -21,6 +21,7 @@ from mediagoblin.submit.routing import submit_routes
from mediagoblin.user_pages.routing import user_routes
from mediagoblin.edit.routing import edit_routes
from mediagoblin.listings.routing import tag_routes
+from mediagoblin.confirm.routing import confirm_routes
def get_mapper():
diff --git a/mediagoblin/static/css/base.css b/mediagoblin/static/css/base.css
index 243b299c..1852b70c 100644
--- a/mediagoblin/static/css/base.css
+++ b/mediagoblin/static/css/base.css
@@ -74,7 +74,7 @@ label {
font-weight: normal;
}
-input {
+input, textarea {
font-size:1em;
font-family:'Lato', sans-serif;
}
@@ -242,6 +242,12 @@ text-align: center;
float: left;
margin: 0px 4px 10px 4px;
text-align: center;
+ font-size: 0.875em;
+}
+
+.media_thumbnail a {
+ color: #eee;
+ text-decoration: none;
}
/* media detail */
diff --git a/mediagoblin/static/images/goblin.ico b/mediagoblin/static/images/goblin.ico
new file mode 100644
index 00000000..f2e7152f
--- /dev/null
+++ b/mediagoblin/static/images/goblin.ico
Binary files differ
diff --git a/mediagoblin/static/images/goblin.png b/mediagoblin/static/images/goblin.png
new file mode 100644
index 00000000..0a3ad22e
--- /dev/null
+++ b/mediagoblin/static/images/goblin.png
Binary files differ
diff --git a/mediagoblin/static/images/logo.png b/mediagoblin/static/images/logo.png
new file mode 100644
index 00000000..1c08a2fb
--- /dev/null
+++ b/mediagoblin/static/images/logo.png
Binary files differ
diff --git a/mediagoblin/storage.py b/mediagoblin/storage.py
index 3968fa29..82b7a5ff 100644
--- a/mediagoblin/storage.py
+++ b/mediagoblin/storage.py
@@ -15,7 +15,6 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import os
-import re
import shutil
import urlparse
import uuid
@@ -255,6 +254,8 @@ class CloudFilesStorage(StorageInterface):
self.container = self.connection.get_container(
self.param_container)
+ self.container_uri = self.container.public_uri()
+
def _resolve_filepath(self, filepath):
return '/'.join(
clean_listy_filepath(filepath))
@@ -280,10 +281,13 @@ 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(filepath)
+ self.container.delete_object(
+ self._resolve_filepath(filepath))
def file_url(self, filepath):
- return self.get_file(filepath).public_uri()
+ return '/'.join([
+ self.container_uri,
+ self._resolve_filepath(filepath)])
class MountStorage(StorageInterface):
@@ -456,41 +460,34 @@ def clean_listy_filepath(listy_filepath):
return cleaned_filepath
-def storage_system_from_config(paste_config, storage_prefix):
+def storage_system_from_config(config_section):
"""
- Utility for setting up a storage system from the paste app config.
+ Utility for setting up a storage system from a config section.
- Note that a special argument may be passed in to the paste_config
- which is "${storage_prefix}_storage_class" which will provide an
+ Note that a special argument may be passed in to
+ the config_section which is "storage_class" which will provide an
import path to a storage system. This defaults to
"mediagoblin.storage:BasicFileStorage" if otherwise undefined.
Arguments:
- - paste_config: dictionary of config parameters
- - storage_prefix: the storage system we're setting up / will be
- getting keys/arguments from. For example 'publicstore' will
- grab all arguments that are like 'publicstore_FOO'.
+ - config_section: dictionary of config parameters
Returns:
An instantiated storage system.
Example:
storage_system_from_config(
- {'publicstore_base_url': '/media/',
- 'publicstore_base_dir': '/var/whatever/media/'},
- 'publicstore')
+ {'base_url': '/media/',
+ 'base_dir': '/var/whatever/media/'})
Will return:
BasicFileStorage(
base_url='/media/',
base_dir='/var/whatever/media')
"""
- prefix_re = re.compile('^%s_(.+)$' % re.escape(storage_prefix))
-
- config_params = dict(
- [(prefix_re.match(key).groups()[0], value)
- for key, value in paste_config.iteritems()
- if prefix_re.match(key)])
+ # This construct is needed, because dict(config) does
+ # not replace the variables in the config items.
+ config_params = dict(config_section.iteritems())
if 'storage_class' in config_params:
storage_class = config_params['storage_class']
diff --git a/mediagoblin/submit/views.py b/mediagoblin/submit/views.py
index 1ba17954..b9395145 100644
--- a/mediagoblin/submit/views.py
+++ b/mediagoblin/submit/views.py
@@ -14,8 +14,8 @@
# 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 mediagoblin.mg_globals as mg_globals
import uuid
-
from os.path import splitext
from cgi import FieldStorage
@@ -55,10 +55,10 @@ def submit_start(request):
entry = request.db.MediaEntry()
entry['_id'] = ObjectId()
entry['title'] = (
- request.POST['title']
+ unicode(request.POST['title'])
or unicode(splitext(filename)[0]))
- entry['description'] = request.POST.get('description')
+ entry['description'] = unicode(request.POST.get('description'))
entry['description_html'] = cleaned_markdown_conversion(
entry['description'])
@@ -127,4 +127,5 @@ def submit_start(request):
return render_to_response(
request,
'mediagoblin/submit/start.html',
- {'submit_form': submit_form})
+ {'submit_form': submit_form,
+ 'app_config': mg_globals.app_config})
diff --git a/mediagoblin/templates/mediagoblin/auth/login.html b/mediagoblin/templates/mediagoblin/auth/login.html
index 8fe45f2d..afbecf20 100644
--- a/mediagoblin/templates/mediagoblin/auth/login.html
+++ b/mediagoblin/templates/mediagoblin/auth/login.html
@@ -26,7 +26,7 @@
<h1>{% trans %}Log in{% endtrans %}</h1>
{% if login_failed %}
<div class="form_field_error">
- {% trans %}Login failed!{% endtrans %}
+ {% trans %}Logging in failed!{% endtrans %}
</div>
{% endif %}
{{ wtforms_util.render_divs(login_form) }}
diff --git a/mediagoblin/templates/mediagoblin/base.html b/mediagoblin/templates/mediagoblin/base.html
index f46871c6..32d5a5d2 100644
--- a/mediagoblin/templates/mediagoblin/base.html
+++ b/mediagoblin/templates/mediagoblin/base.html
@@ -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="shortcut icon"
+ href="{{ request.staticdirect('/images/goblin.ico') }}" />
{% block mediagoblin_head %}
{% endblock mediagoblin_head %}
</head>
@@ -39,8 +41,9 @@
<div class="container_16">
<div class="grid_16 mediagoblin_header">
{% block mediagoblin_logo %}
- <a class="mediagoblin_logo" href="{{ request.urlgen('index') }}">
- MediaGoblin<img src="{{ request.staticdirect('/images/logo.png') }}"
+ <a class="mediagoblin_logo"
+ href="{{ request.urlgen('index') }}"
+ ><img src="{{ request.staticdirect('/images/logo.png') }}"
alt="{% trans %}MediaGoblin logo{% endtrans %}" /></a>
{% endblock %}
{% if request.user and request.user['status'] == 'active' %}
@@ -64,10 +67,10 @@
user= request.user['username']) }}">
{{ request.user['username'] }}</a>
- (<a href="{{ request.urlgen('mediagoblin.auth.logout') }}">logout</a>)
+ (<a href="{{ request.urlgen('mediagoblin.auth.logout') }}">log out</a>)
{% else %}
<a href="{{ request.urlgen('mediagoblin.auth.login') }}">
- {% trans %}Login{% endtrans %}</a>
+ {% trans %}Log in{% endtrans %}</a>
{% endif %}
</div>
</div>
diff --git a/mediagoblin/templates/mediagoblin/edit/attachments.html b/mediagoblin/templates/mediagoblin/edit/attachments.html
new file mode 100644
index 00000000..2f319dbb
--- /dev/null
+++ b/mediagoblin/templates/mediagoblin/edit/attachments.html
@@ -0,0 +1,55 @@
+{#
+# GNU MediaGoblin -- federated, autonomous media hosting
+# Copyright (C) 2011 Free Software Foundation, Inc
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#}
+{% extends "mediagoblin/base.html" %}
+
+{% import "/mediagoblin/utils/wtforms.html" as wtforms_util %}
+{% block mediagoblin_content %}
+ <form action="{{ request.urlgen('mediagoblin.edit.attachments',
+ user= media.uploader().username,
+ media= media._id) }}"
+ method="POST" enctype="multipart/form-data">
+ <div class="grid_8 prefix_1 suffix_1 edit_box form_box">
+ <h1>Editing attachments for {{ media.title }}</h1>
+ <div style="text-align: center;" >
+ <img src="{{ request.app.public_store.file_url(
+ media['media_files']['thumb']) }}" />
+ </div>
+
+ {% if media.attachment_files|count %}
+ <h2>Attachments</h2>
+ <ul>
+ {% for attachment in media.attachment_files %}
+ <li>
+ <a target="_blank" href="{{ request.app.public_store.file_url(
+ attachment['filepath']) }}">
+ {{ attachment.name -}}
+ </a><br />
+ </li>
+ {% endfor %}
+ </ul>
+ {% endif %}
+
+ <h2>Add attachment</h2>
+ {{ wtforms_util.render_divs(form) }}
+ <div class="form_submit_buttons">
+ <a href="{{ media.url_for_self(request.urlgen) }}">Cancel</a>
+ <input type="submit" value="Save changes" class="button" />
+ </div>
+ </div>
+ </form>
+{% endblock %}
diff --git a/mediagoblin/templates/mediagoblin/root.html b/mediagoblin/templates/mediagoblin/root.html
index 08155c17..086c99c4 100644
--- a/mediagoblin/templates/mediagoblin/root.html
+++ b/mediagoblin/templates/mediagoblin/root.html
@@ -28,7 +28,7 @@
<ul>
<li>{% trans %}The perfect place for your media!{% endtrans %}</li>
<li>{% trans %}A place for people to collaborate and show off original and derived creations!{% endtrans %}</li>
- <li>{% trans %}Free, as in freedom. (We’re a <a href="http://gnu.org">GNU project</a> in the making, after all.){% endtrans %}</li>
+ <li>{% trans %}Free, as in freedom. (We’re a <a href="http://gnu.org">GNU</a> project, after all.){% endtrans %}</li>
<li>{% trans %}Aiming to make the world a better place through decentralization and (eventually, coming soon!) federation!{% endtrans %}</li>
<li>{% trans %}Built for extensibility. (Multiple media types coming soon to the software, including video support!){% endtrans %}</li>
<li>{% trans %}Powered by people like you. (<a href="http://mediagoblin.org/pages/join.html">You can help us improve this software!</a>){% endtrans %}</li>
diff --git a/mediagoblin/templates/mediagoblin/user_pages/media.html b/mediagoblin/templates/mediagoblin/user_pages/media.html
index 2086d3d6..171ea21d 100644
--- a/mediagoblin/templates/mediagoblin/user_pages/media.html
+++ b/mediagoblin/templates/mediagoblin/user_pages/media.html
@@ -24,9 +24,24 @@
{% if media %}
<div class="grid_11 alpha">
<div class="media_image_container">
- <img class="media_image"
- src="{{ request.app.public_store.file_url(
- media.get_display_media(media.media_files)) }}" />
+ {% 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']) }}">
+ <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 %}
</div>
<h2 class="media_title">
@@ -101,21 +116,48 @@
<div class="grid_5 omega">
{% include "mediagoblin/utils/prev_next.html" %}
- {% if media['uploader'] == request.user['_id'] or
- request.user['is_admin'] %}
- <h3>Temporary button holder</h3>
- <p>
- <a href="{{ request.urlgen('mediagoblin.edit.edit_media',
- user= media.uploader().username,
- media= media._id) }}"
- ><img src="{{ request.staticdirect('/images/icon_edit.png') }}"
- class="media_icon" />edit</a>
- </p>
- <p>
- <img src="{{ request.staticdirect('/images/icon_delete.png') }}"
- class="media_icon" />{% trans %}delete{% endtrans %}
- </p>
- {% endif %}
+
+ {% if media['uploader'] == request.user['_id'] or
+ request.user['is_admin'] %}
+ <h3>Temporary button holder</h3>
+ <p>
+ <a href="{{ request.urlgen('mediagoblin.edit.edit_media',
+ user= media.uploader().username,
+ media= media._id) }}"
+ ><img src="{{ request.staticdirect('/images/icon_edit.png') }}"
+ class="media_icon" />edit</a>
+ </p>
+ <p>
+ <a href="{{ request.urlgen('mediagoblin.user_pages.media_confirm_delete',
+ user= media.uploader().username,
+ media= media._id) }}"
+ ><img src="{{ request.staticdirect('/images/icon_delete.png') }}"
+ class="media_icon" />{% trans %}delete{% endtrans %}</a>
+ </p>
+ {% endif %}
+
+ {% if media.attachment_files|count %}
+ <h3>Attachments</h3>
+ <ul>
+ {% for attachment in media.attachment_files %}
+ <li>
+ <a href="{{ request.app.public_store.file_url(attachment.filepath) }}">
+ {{ attachment.name }}
+ </a>
+ </li>
+ {% endfor %}
+ </ul>
+ {% endif %}
+
+ {% if app_config['allow_attachments']
+ and (media['uploader'] == request.user['_id']
+ or request.user['is_admin']) %}
+ <p>
+ <a href="{{ request.urlgen('mediagoblin.edit.attachments',
+ user=media.uploader().username,
+ media=media._id) }}">Add attachment</a>
+ </p>
+ {% endif %}
{% if media.tags %}
{% include "mediagoblin/utils/tags.html" %}
diff --git a/mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html b/mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html
new file mode 100644
index 00000000..87a3ad81
--- /dev/null
+++ b/mediagoblin/templates/mediagoblin/user_pages/media_confirm_delete.html
@@ -0,0 +1,48 @@
+{#
+# GNU MediaGoblin -- federated, autonomous media hosting
+# Copyright (C) 2011 Free Software Foundation, Inc
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#}
+{% extends "mediagoblin/base.html" %}
+
+{% import "/mediagoblin/utils/wtforms.html" as wtforms_util %}
+
+{% block mediagoblin_content %}
+
+ <form action="{{ request.urlgen('mediagoblin.user_pages.media_confirm_delete',
+ user=media.uploader().username,
+ media=media._id) }}"
+ method="POST" enctype="multipart/form-data">
+ <div class="grid_8 prefix_1 suffix_1 edit_box form_box">
+ <h1>
+ {%- trans title=media['title'] -%}
+ Really delete {{ title }}?
+ {%- endtrans %}
+ </h1>
+ <p>
+ <em>
+ {%- trans -%}
+ If you choose yes, the media entry will be deleted <strong>permanently.</strong>
+ {%- endtrans %}
+ </em>
+ </p>
+
+ {{ wtforms_util.render_divs(form) }}
+ <div class="form_submit_buttons">
+ <input type="submit" value="{% trans %}Save changes{% endtrans %}" class="button" />
+ </div>
+ </div>
+ </form>
+{% endblock %}
diff --git a/mediagoblin/templates/mediagoblin/user_pages/user.html b/mediagoblin/templates/mediagoblin/user_pages/user.html
index 0214082c..e7fd9692 100644
--- a/mediagoblin/templates/mediagoblin/user_pages/user.html
+++ b/mediagoblin/templates/mediagoblin/user_pages/user.html
@@ -36,11 +36,11 @@
{% if user == request.user %}
{# this should only be visible when you are this user #}
<div class="grid_6 prefix_1 suffix_1 form_box">
- <h1>{% trans %}Verification needed{% endtrans %}</h1>
+ <h1>{% trans %}Email verification needed{% endtrans %}</h1>
<p>
{% trans -%}
- Almost done! Your account still needs to be verified.
+ Almost done! Your account still needs to be activated.
{%- endtrans %}
</p>
<p>
@@ -56,11 +56,11 @@
{% else %}
{# if the user is not you, but still needs to verify their email #}
<div class="grid_6 prefix_1 suffix_1 form_box">
- <h1>{% trans %}Verification needed{% endtrans %}</h1>
+ <h1>{% trans %}Email verification needed{% endtrans %}</h1>
<p>
{% trans -%}
- Someone has registered an account with this username, but it still has to be verified.
+ Someone has registered an account with this username, but it still has to be activated.
{%- endtrans %}
</p>
diff --git a/mediagoblin/templates/mediagoblin/utils/object_gallery.html b/mediagoblin/templates/mediagoblin/utils/object_gallery.html
index b451946d..34eb7dbc 100644
--- a/mediagoblin/templates/mediagoblin/utils/object_gallery.html
+++ b/mediagoblin/templates/mediagoblin/utils/object_gallery.html
@@ -25,13 +25,18 @@
{%- if loop.first %} thumb_row_first
{%- elif loop.last %} thumb_row_last{% endif %}">
{% for entry in row %}
+ {% set entry_url = entry.url_for_self(request.urlgen) %}
<td class="media_thumbnail thumb_entry
{%- if loop.first %} thumb_entry_first
{%- elif loop.last %} thumb_entry_last{% endif %}">
- <a href="{{ entry.url_for_self(request.urlgen) }}">
+ <a href="{{ entry_url }}">
<img src="{{ request.app.public_store.file_url(
entry['media_files']['thumb']) }}" />
</a>
+ {% if entry['title'] %}
+ <br />
+ <a href="{{ entry_url }}">{{ entry['title'] }}</a>
+ {% endif %}
</td>
{% endfor %}
</tr>
diff --git a/mediagoblin/templates/mediagoblin/utils/wtforms.html b/mediagoblin/templates/mediagoblin/utils/wtforms.html
index 2639522a..4038de98 100644
--- a/mediagoblin/templates/mediagoblin/utils/wtforms.html
+++ b/mediagoblin/templates/mediagoblin/utils/wtforms.html
@@ -20,9 +20,6 @@
{% macro render_field_div(field) %}
<div class="form_field_box">
<div class="form_field_label">{{ _(field.label.text) }}</div>
- {% if field.description -%}
- <div class="form_field_description">{{ _(field.description) }}</div>
- {%- endif %}
<div class="form_field_input">{{ field }}</div>
{%- if field.errors -%}
{% for error in field.errors %}
@@ -31,6 +28,9 @@
</div>
{% endfor %}
{%- endif %}
+ {% if field.description -%}
+ <div class="form_field_description">{{ _(field.description) }}</div>
+ {%- endif %}
</div>
{%- endmacro %}
diff --git a/mediagoblin/tests/test_mgoblin_app.ini b/mediagoblin/tests/test_mgoblin_app.ini
index 7716e9ca..9d938b4f 100644
--- a/mediagoblin/tests/test_mgoblin_app.ini
+++ b/mediagoblin/tests/test_mgoblin_app.ini
@@ -1,7 +1,4 @@
[mediagoblin]
-queuestore_base_dir = %(here)s/test_user_dev/media/queue
-publicstore_base_dir = %(here)s/test_user_dev/media/public
-publicstore_base_url = /mgoblin_media/
direct_remote_path = /mgoblin_static/
email_sender_address = "notice@mediagoblin.example.org"
email_debug_mode = true
@@ -15,5 +12,12 @@ tags_max_length = 50
# mediagoblin.init.celery.from_celery
celery_setup_elsewhere = true
+[storage:publicstore]
+base_dir = %(here)s/test_user_dev/media/public
+base_url = /mgoblin_media/
+
+[storage:queuestore]
+base_dir = %(here)s/test_user_dev/media/queue
+
[celery]
celery_always_eager = true
diff --git a/mediagoblin/tests/test_paste.ini b/mediagoblin/tests/test_paste.ini
index 929a1ccf..e7574b7a 100644
--- a/mediagoblin/tests/test_paste.ini
+++ b/mediagoblin/tests/test_paste.ini
@@ -14,7 +14,7 @@ config = %(here)s/test_mgoblin_app.ini
[app:publicstore_serve]
use = egg:Paste#static
-document_root = %(here)s/user_dev/media/public
+document_root = %(here)s/test_user_dev/media/public
[app:mediagoblin_static]
use = egg:Paste#static
diff --git a/mediagoblin/tests/test_storage.py b/mediagoblin/tests/test_storage.py
index 1800c29d..45cb35c1 100644
--- a/mediagoblin/tests/test_storage.py
+++ b/mediagoblin/tests/test_storage.py
@@ -60,23 +60,20 @@ class FakeRemoteStorage(storage.BasicFileStorage):
def test_storage_system_from_config():
this_storage = storage.storage_system_from_config(
- {'somestorage_base_url': 'http://example.org/moodia/',
- 'somestorage_base_dir': '/tmp/',
- 'somestorage_garbage_arg': 'garbage_arg',
- 'garbage_arg': 'trash'},
- 'somestorage')
+ {'base_url': 'http://example.org/moodia/',
+ 'base_dir': '/tmp/',
+ 'garbage_arg': 'garbage_arg',
+ 'garbage_arg': 'trash'})
assert this_storage.base_url == 'http://example.org/moodia/'
assert this_storage.base_dir == '/tmp/'
assert this_storage.__class__ is storage.BasicFileStorage
this_storage = storage.storage_system_from_config(
- {'somestorage_foobie': 'eiboof',
- 'somestorage_blech': 'hcelb',
- 'somestorage_garbage_arg': 'garbage_arg',
- 'garbage_arg': 'trash',
- 'somestorage_storage_class':
- 'mediagoblin.tests.test_storage:FakeStorageSystem'},
- 'somestorage')
+ {'foobie': 'eiboof',
+ 'blech': 'hcelb',
+ 'garbage_arg': 'garbage_arg',
+ 'storage_class':
+ 'mediagoblin.tests.test_storage:FakeStorageSystem'})
assert this_storage.foobie == 'eiboof'
assert this_storage.blech == 'hcelb'
assert this_storage.__class__ is FakeStorageSystem
diff --git a/mediagoblin/tests/test_submission.py b/mediagoblin/tests/test_submission.py
index 9ae129cd..43a81f02 100644
--- a/mediagoblin/tests/test_submission.py
+++ b/mediagoblin/tests/test_submission.py
@@ -17,7 +17,7 @@
import urlparse
import pkg_resources
-from nose.tools import assert_equal
+from nose.tools import assert_equal, assert_true, assert_false
from mediagoblin.auth import lib as auth_lib
from mediagoblin.tests.tools import setup_fresh_app, get_test_app
@@ -53,6 +53,8 @@ class TestSubmission:
test_user['pw_hash'] = auth_lib.bcrypt_gen_password_hash('toast')
test_user.save()
+ self.test_user = test_user
+
self.test_app.post(
'/auth/login/', {
'username': u'chris',
@@ -150,6 +152,63 @@ class TestSubmission:
u'Tags must be shorter than 50 characters. Tags that are too long'\
': ffffffffffffffffffffffffffuuuuuuuuuuuuuuuuuuuuuuuuuu']
+ def test_delete(self):
+ util.clear_test_template_context()
+ response = self.test_app.post(
+ '/submit/', {
+ 'title': 'Balanced Goblin',
+ }, upload_files=[(
+ 'file', GOOD_JPG)])
+
+ # Post image
+ response.follow()
+
+ request = util.TEMPLATE_TEST_CONTEXT[
+ 'mediagoblin/user_pages/user.html']['request']
+
+ media = request.db.MediaEntry.find({'title': 'Balanced Goblin'})[0]
+
+ # Does media entry exist?
+ assert_true(media)
+
+ # Do not confirm deletion
+ # ---------------------------------------------------
+ response = self.test_app.post(
+ request.urlgen('mediagoblin.user_pages.media_confirm_delete',
+ # No work: user=media.uploader().username,
+ user=self.test_user['username'],
+ media=media['_id']),
+ {'confirm': 'False'})
+
+ response.follow()
+
+ request = util.TEMPLATE_TEST_CONTEXT[
+ 'mediagoblin/user_pages/user.html']['request']
+
+ media = request.db.MediaEntry.find({'title': 'Balanced Goblin'})[0]
+
+ # Does media entry still exist?
+ assert_true(media)
+
+ # Confirm deletion
+ # ---------------------------------------------------
+ response = self.test_app.post(
+ request.urlgen('mediagoblin.user_pages.media_confirm_delete',
+ # No work: user=media.uploader().username,
+ user=self.test_user['username'],
+ media=media['_id']),
+ {'confirm': 'True'})
+
+ response.follow()
+
+ request = util.TEMPLATE_TEST_CONTEXT[
+ 'mediagoblin/user_pages/user.html']['request']
+
+ # Does media entry still exist?
+ assert_false(
+ request.db.MediaEntry.find(
+ {'_id': media['_id']}).count())
+
def test_malicious_uploads(self):
# Test non-suppoerted file with non-supported extension
# -----------------------------------------------------
diff --git a/mediagoblin/user_pages/forms.py b/mediagoblin/user_pages/forms.py
index 25001019..4a79bedd 100644
--- a/mediagoblin/user_pages/forms.py
+++ b/mediagoblin/user_pages/forms.py
@@ -23,3 +23,10 @@ class MediaCommentForm(wtforms.Form):
comment_content = wtforms.TextAreaField(
_('Comment'),
[wtforms.validators.Required()])
+
+
+class ConfirmDeleteForm(wtforms.Form):
+ confirm = wtforms.RadioField('Confirm',
+ default='False',
+ choices=[('False', 'No, I made a mistake!'),
+ ('True', 'Yes, delete it!')])
diff --git a/mediagoblin/user_pages/routing.py b/mediagoblin/user_pages/routing.py
index bf9f12ab..ffa6f969 100644
--- a/mediagoblin/user_pages/routing.py
+++ b/mediagoblin/user_pages/routing.py
@@ -28,7 +28,13 @@ user_routes = [
'/{user}/m/{media}/c/{comment}/',
controller="mediagoblin.user_pages.views:media_home"),
Route('mediagoblin.edit.edit_media', "/{user}/m/{media}/edit/",
- controller="mediagoblin.edit.views:edit_media"),
+ controller="mediagoblin.edit.views:edit_media"),
+ Route('mediagoblin.edit.attachments',
+ '/{user}/m/{media}/attachments/',
+ controller="mediagoblin.edit.views:edit_attachments"),
+ Route('mediagoblin.user_pages.media_confirm_delete',
+ "/{user}/m/{media}/confirm-delete/",
+ controller="mediagoblin.user_pages.views:media_confirm_delete"),
Route('mediagoblin.user_pages.atom_feed', '/{user}/atom/',
controller="mediagoblin.user_pages.views:atom_feed"),
Route('mediagoblin.user_pages.media_post_comment',
diff --git a/mediagoblin/user_pages/views.py b/mediagoblin/user_pages/views.py
index 3677c134..06b0be5b 100644
--- a/mediagoblin/user_pages/views.py
+++ b/mediagoblin/user_pages/views.py
@@ -16,15 +16,16 @@
from webob import exc
-from mediagoblin import messages
+from mediagoblin import messages, mg_globals
from mediagoblin.db.util import DESCENDING, ObjectId
from mediagoblin.util import (
Pagination, render_to_response, redirect, cleaned_markdown_conversion,
- render_404)
+ render_404, delete_media_files)
+from mediagoblin.util import pass_to_ugettext as _
from mediagoblin.user_pages import forms as user_forms
from mediagoblin.decorators import (uses_pagination, get_user_media_entry,
- require_active_login)
+ require_active_login, user_may_delete_media)
from werkzeug.contrib.atom import AtomFeed
@@ -118,7 +119,8 @@ def media_home(request, media, page, **kwargs):
{'media': media,
'comments': comments,
'pagination': pagination,
- 'comment_form': comment_form})
+ 'comment_form': comment_form,
+ 'app_config': mg_globals.app_config})
@require_active_login
@@ -129,7 +131,7 @@ def media_post_comment(request):
comment = request.db.MediaComment()
comment['media_entry'] = ObjectId(request.matchdict['media'])
comment['author'] = request.user['_id']
- comment['content'] = request.POST['comment_content']
+ comment['content'] = unicode(request.POST['comment_content'])
comment['content_html'] = cleaned_markdown_conversion(comment['content'])
@@ -144,6 +146,43 @@ def media_post_comment(request):
user = request.matchdict['user'])
+@get_user_media_entry
+@require_active_login
+@user_may_delete_media
+def media_confirm_delete(request, media):
+
+ form = user_forms.ConfirmDeleteForm(request.POST)
+
+ if request.method == 'POST' and form.validate():
+ if request.POST.get('confirm') == 'True':
+ username = media.uploader()['username']
+
+ # Delete all files on the public storage
+ delete_media_files(media)
+
+ media.delete()
+
+ return redirect(request, "mediagoblin.user_pages.user_home",
+ user=username)
+ else:
+ return redirect(request, "mediagoblin.user_pages.media_home",
+ user=media.uploader()['username'],
+ media=media['slug'])
+
+ if ((request.user[u'is_admin'] and
+ request.user[u'_id'] != media.uploader()[u'_id'])):
+ messages.add_message(
+ request, messages.WARNING,
+ _("You are about to delete another user's media. "
+ "Proceed with caution."))
+
+ return render_to_response(
+ request,
+ 'mediagoblin/user_pages/media_confirm_delete.html',
+ {'media': media,
+ 'form': form})
+
+
ATOM_DEFAULT_NR_OF_UPDATED_ITEMS = 15
def atom_feed(request):
diff --git a/mediagoblin/util.py b/mediagoblin/util.py
index 0b6428da..27c81f3a 100644
--- a/mediagoblin/util.py
+++ b/mediagoblin/util.py
@@ -244,7 +244,7 @@ class FakeMhost(object):
Just a fake mail host so we can capture and test messages
from send_email
"""
- def connect(self):
+ def login(self, *args, **kwargs):
pass
def sendmail(self, from_addr, to_addrs, message):
@@ -274,13 +274,22 @@ def send_email(from_addr, to_addrs, subject, message_body):
- subject: subject of the email
- message_body: email body text
"""
- # TODO: make a mock mhost if testing is enabled
if TESTS_ENABLED or mg_globals.app_config['email_debug_mode']:
mhost = FakeMhost()
elif not mg_globals.app_config['email_debug_mode']:
- mhost = smtplib.SMTP()
+ mhost = smtplib.SMTP(
+ mg_globals.app_config['email_smtp_host'],
+ mg_globals.app_config['email_smtp_port'])
- mhost.connect()
+ # SMTP.__init__ Issues SMTP.connect implicitly if host
+ if not mg_globals.app_config['email_smtp_host']: # e.g. host = ''
+ mhost.connect() # We SMTP.connect explicitly
+
+ if mg_globals.app_config['email_smtp_user'] \
+ or mg_globals.app_config['email_smtp_pass']:
+ mhost.login(
+ mg_globals.app_config['email_smtp_user'],
+ mg_globals.app_config['email_smtp_pass'])
message = MIMEText(message_body.encode('utf-8'), 'plain', 'utf-8')
message['Subject'] = subject
@@ -672,3 +681,18 @@ def render_404(request):
"""
return render_to_response(
request, 'mediagoblin/404.html', {}, status=400)
+
+def delete_media_files(media):
+ """
+ Delete all files associated with a MediaEntry
+
+ Arguments:
+ - media: A MediaEntry document
+ """
+ for handle, listpath in media['media_files'].items():
+ mg_globals.public_store.delete_file(
+ listpath)
+
+ for attachment in media['attachment_files']:
+ mg_globals.public_store.delete_file(
+ attachment['filepath'])
diff --git a/paste.ini b/paste.ini
index 73fbe8e8..fc459989 100644
--- a/paste.ini
+++ b/paste.ini
@@ -1,7 +1,11 @@
[DEFAULT]
-debug = true
+# Set to true to enable web-based debugging messages and etc.
+debug = false
-[composite:main]
+[pipeline:main]
+pipeline = errors routing
+
+[composite:routing]
use = egg:Paste#urlmap
/ = mediagoblin
/mgoblin_media/ = publicstore_serve
@@ -28,6 +32,10 @@ beaker.session.key = mediagoblin
beaker.session.data_dir = %(here)s/user_dev/beaker/sessions/data
beaker.session.lock_dir = %(here)s/user_dev/beaker/sessions/lock
+[filter:errors]
+use = egg:mediagoblin#errors
+debug = false
+
[server:main]
use = egg:Paste#http
host = 127.0.0.1
diff --git a/setup.py b/setup.py
index 40715dd0..d6ef584b 100644
--- a/setup.py
+++ b/setup.py
@@ -58,6 +58,9 @@ setup(
[paste.app_factory]
app = mediagoblin.app:paste_app_factory
+ [paste.filter_app_factory]
+ errors = mediagoblin.errormiddleware:mgoblin_error_middleware
+
[zc.buildout]
make_user_dev_dirs = mediagoblin.buildout_recipes:MakeUserDevDirs