From a734759fa09755d7465115d400298858c9d07210 Mon Sep 17 00:00:00 2001 From: Adrian Holovaty Date: Fri, 4 Nov 2005 16:09:38 +0000 Subject: [PATCH 01/39] Renamed language no_NB to no git-svn-id: http://code.djangoproject.com/svn/django/trunk@1083 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/conf/global_settings.py | 2 +- .../{no_NB => no}/LC_MESSAGES/django.mo | Bin 17318 -> 17318 bytes .../{no_NB => no}/LC_MESSAGES/django.po | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) rename django/conf/locale/{no_NB => no}/LC_MESSAGES/django.mo (99%) rename django/conf/locale/{no_NB => no}/LC_MESSAGES/django.po (99%) diff --git a/django/conf/global_settings.py b/django/conf/global_settings.py index 4a137cf2b3..6a181ba40e 100644 --- a/django/conf/global_settings.py +++ b/django/conf/global_settings.py @@ -40,7 +40,7 @@ LANGUAGES = ( ('fr', _('French')), ('gl', _('Galician')), ('it', _('Italian')), - ('no-nb', _('Norwegian')), + ('no', _('Norwegian')), ('pt-br', _('Brazilian')), ('ru', _('Russian')), ('sr', _('Serbian')), diff --git a/django/conf/locale/no_NB/LC_MESSAGES/django.mo b/django/conf/locale/no/LC_MESSAGES/django.mo similarity index 99% rename from django/conf/locale/no_NB/LC_MESSAGES/django.mo rename to django/conf/locale/no/LC_MESSAGES/django.mo index 16046ade759d2679e9293c01e5de030fdd9d6e9a..9491f7c326c9f22dbd954f9d95858167ab6cb7c5 100644 GIT binary patch delta 20 ccmZ41&bX|dal;BtRzm|T1B=aTHGfJ108h3DfdBvi delta 20 ccmZ41&bX|dal;BtRs%~bBg@TeHGfJ108kMJi~s-t diff --git a/django/conf/locale/no_NB/LC_MESSAGES/django.po b/django/conf/locale/no/LC_MESSAGES/django.po similarity index 99% rename from django/conf/locale/no_NB/LC_MESSAGES/django.po rename to django/conf/locale/no/LC_MESSAGES/django.po index 761a564872..335e66c1ba 100644 --- a/django/conf/locale/no_NB/LC_MESSAGES/django.po +++ b/django/conf/locale/no/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2005-11-04 09:29-0600\n" +"POT-Creation-Date: 2005-11-04 10:08-0600\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Espen Grndhaug \n" "Language-Team: Norwegian\n" From c55bb7ee4037077dc0b8fee1971711c991b88303 Mon Sep 17 00:00:00 2001 From: Adrian Holovaty Date: Fri, 4 Nov 2005 16:40:35 +0000 Subject: [PATCH 02/39] Fixed #728 -- Updated Norwegian translation. Thanks, Espen git-svn-id: http://code.djangoproject.com/svn/django/trunk@1084 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/conf/locale/no/LC_MESSAGES/django.mo | Bin 17318 -> 17403 bytes django/conf/locale/no/LC_MESSAGES/django.po | 12 ++++++------ 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/django/conf/locale/no/LC_MESSAGES/django.mo b/django/conf/locale/no/LC_MESSAGES/django.mo index 9491f7c326c9f22dbd954f9d95858167ab6cb7c5..c21e47a3ebf350856a9ae286cdc10e691b75d2d0 100644 GIT binary patch delta 4458 zcmYk<3sjc%0mtz__$n6#1VYeE-U7Kxx#A6366URmG#Qm6FWdwq5#+_ZA-mp|J}#heHz(3i9Zkl2a5@H|50kJJQ*bZd zkKK3|_8;V|Oe%896rirJz>&BH^YJiNU~sH6z*-EZf73uA8<*e$>_jbL8tW-XqGpn9 z>tj$ef7I3=!#wIwpa#4ZwF295BDSL@b`6{HmaQ)y%;a>#Y6`kx6ZSM<>)WmEsDX5# zw#7TB>keZweu5tS7PBy6h%>-q)E+27U0;D}XAXv9`id@c`;soJow@g};lh*zWq=i_sD3lnh}8{tRTjvB~U*ou9JIUTP@ZQfT=1K*39P?wK_p5;fV z5uLCXe2(;Kx=~Ah1NAnTc*kheW=cXexCXVfn=u#LP&5BMmf#I!|Cu7Uvl*X8Jt|)p z1ugxzsP{jPS0MqjP%|yYC-4%g0S~W+W?F!H=Fj4AJb*vPKjBpL(8#^G0lC#2K@IE@ zPQ-YYjTP{jY6_acJnVyuP)oiPlkqD|!T+KQlj%(>m4RA052~Ywuo`ReLHr$7;eaIP z`bN}}H=`bL3#RM+e}TeSPJE2~XI%8ErAtS3JOQ;g>a9)Kk9sR=Q*A&sybXhJH|mk? zMRjxtb^mF5{!3fGg5mUU{!T&f=YQ-6Vf3m^IT$t5L|e~94R93p#Zr5|3Uyrrs-q@b zZ$+)xCR^WXKi`2toZo}KU<&&w$PZDQ?4+�X2gwsD`hjI{E?iP1i5gX=o^F#)+uw zMq)6IMh##BYQXuZ>k4ro&P=uMf4#k+8Fk|d%nIPg2q#fLmgc+-Vd=(9qn?V|Y^!i4 zUPQ)ZMrSzpS6S;(9WTO#xC}L*f1w`Xtqj&*GYK5wj64o?Ln3PCY1VAycf(9TH%`M4 zTxxAW4g7gj2W_^#9k)_{9mioVUk>VT1!|AA`6%#RVfJGYMFv$Tl*r`<&}Da0>Netim@@1B~RCN$vXvQOKq+4Cmrh)Y6== zo<+^X%!(ECnRE(0H=sJs zvGp<538;?pF${}P*OejPC1y5ikF3Ld>_)Yh@PPAul7f0v8L0a_7=fcPOz(dI1s;!? zhS9hhwFkDL8fr()ti#s#p$6221Mvv5Kh5W;hX0KkXlRzxUL4**Jp=X3$DrDqjv;#g zD=GBHdW^v))QmP^AznZ>xXI+fKZ8%4Ys!Gq|>E2sf3;Q4BAw4w&S z)A|PbG}C<)v_uE&2S-sOJ&hXJpD_}zqh=U5%K1@=LM^Em)$n3uf0^az#&@wC&!bkr zljHoBnQlg{NE_&!S%6i#`gIDY%%9P84D+E<_%m*@#;5Pf?qy z8}-QkV(ZsXo9QNMK!HrNXY-+6yEu%(WYhq1P!kwuKle?s7nIl!yr_njp&D*M-MA6s zvCY;GqB=Nk>*sI)^$Qq^-=N-}f7;J)qB`!wPpu{pfvk+r#86O&Ls3hUh?;>1)xkJx z5o#sMQLm{NwX`j$hS#I6Z$k~d12uqss1Cbu5FSPi^gIUZ{l7#(4Sj_JmNI!O~rCOoa4jeS=f1#O@=hz>Tg znMJ1gXM`mLO!Y4hi!RAF|94@rGj>rLPmYn^<9!NGlTXP@_GB8avgNn2FWGDBlkhPzj~pPMkZq*RUltzw zlV>S?L>?u#A2X<|C3+gXZ$10{UhF+qQdmf8?1{7fqv7#BeY5o*zohUMSwYf?zGU<$ zb?Eyr~)) zlDtlK5FNkquaAiJy+Y{(SxoB!9`Ro=4OtMhAW LZ>#!a$8P)|YPROe delta 4385 zcmYk+~Q|sm{ zEG2~=MrK%MS!P9K+E`6C)6mqEGnrXhQ-5fs_5Izmw>s0$&+fVB?C#mKdoTT2<7uez zIA4bcZ8aRHNDuPR^~QAe81q$ooi*mBFk|k(f!G@>a0=GqMEnJ3Vpg~@U2!kcggJ_B z@IAZ^TW}eEj6s+k;lIu?qbYRa#6%3n+3p9X47t`U!w$F(>C5cEczglX@M+{fbB2F( z|9MmgzhOJPj1B0alOgyVcE;~8%s5;?A&wIvoK;8tuon))wpfS>I0qAP6Qjp zGZWm!ZMZ+``fMDCb8#&0!ddtOYJlS+86f?eTngzp4a?Don!*s~Q--0Qq^qsRp`JX^ z)>ANx`e4+6%TXOv;V4{VL-B3zFH!MPb1GZjeU5y&ZI@Ge*jJj?Y z_Q8F4GoHf1*e1#y;1JXr$V6SAjcR8shTx(2b&K%txyYH$^1;1l;;gRAgUjK?V~fK;qR4dg|v!B$kqv!dNayBIa_YSaU5M7_eT4h4;<)?QGL^l2JV zQ+)!p3%)=tp7W@N#>co*ITbUg=cAsu77Ot;WSyBVvF_sQk9swgsF^;1+U`y(1+Cu8 zs3+{fR+x%=Q4L%{Jz+<-gx+yB-iQz4J-7$&#w$1gb7_oQ%u3Y2_Tnh~4)x@HnKnH@ z8n&T-Gn9g+IurZgPE5q(7=%BfX6O=X%C4X~`Wxrq07i2QZpRWljk^Bk1h>O1)TwpfaKRf|v^RiWbl>t9hxL}0KupM zdr{YQ!j2e+YCqL}o|VM>>&B6s80_IU0CT9X>Fe%-Pw-yqKcN=e=wxH2V;#~b-_>r% zN!C9lL zF%-L?1{jZghnQs48kvY=@k!Ku-y>fr<^rmtOQ`#WPYNy$m&wCD;*{BkRy?L^XIAHNX~(z%$qh&!gV;HB@`u_}j#~khd z2^4a1C$g~31zd)ay!c9d6gA?ue9dLyU`)hv^xTTzQJ znqMBxz(Q*UYK9zCJ6kXYf6ie3S+FLQ;p#~7AIq;Ecd?q zP*b}QHG`F??YaTS;Xzx!hLP0cc{<*j8Rk&XVp@t?Ox37&^|-C?KrNyM)PN4y^M_H} ztQo`cbJPINp&sB@`}tM-d3&Zu=VMUqB%|7O(kST0VHkrWZM_85!Tq-GV0-H8F$A}v zc1@lAyaCn0%cuu9iki`PQ5~K@&CI8$`_CfnJLaNWFjrCUs69W<+D<)D4GcszoQ@jM z2-L_YqXv+V>aYmA;2hLIt5DZ%K(+G(s^ePppw`_Q?SCD5S2~Wk_!rqe%H0Ty+5flR z6S#+LB|6l21!2vZ@#G+>Bz*|8Zsw7mB#Asrbg+K?f5uHiE%-R!n$Yf^yL@$_5qa9m zqlkvoLQWCp#Q%R;V9LltL=Ra&^w#poa-ucWNK%LnZ31naS4f>N)Eil_m(m^N9TGTR zqfknk$u@hkFRr%b{dgUD(bjWt0$E62CGV12vfa1R8#$(m(pzLS`TwB}x1Q*wud^O!j(bTgd5N$&{a*|3qmD^r zHu-?$5*24BOA!W zq>vPm7!o)dC@dxqk^}bSK>UzAPS%p6WE1I4){$pO;8;OHyF*7;QcRvCbF^;sMG`pr z1q#-;F_FA%>nCvr*+S+L9lKoq{WpzLFEW!v+p~vo9MRURw&(805d$ zdr(uKm3`A2O)CbawIL;w8mpv(10S*pkIX|F14Bo$pqc_^ Date: Sat, 5 Nov 2005 04:22:25 +0000 Subject: [PATCH 03/39] Moderately heavy rewrite of docs/translation.txt git-svn-id: http://code.djangoproject.com/svn/django/trunk@1087 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- docs/translation.txt | 505 ++++++++++++++++++++++++++----------------- 1 file changed, 305 insertions(+), 200 deletions(-) diff --git a/docs/translation.txt b/docs/translation.txt index 637719b879..83b25a7597 100644 --- a/docs/translation.txt +++ b/docs/translation.txt @@ -1,79 +1,127 @@ -====================== -How to do translations -====================== +==================== +Internationalization +==================== -Django has support for internationalization of program strings and template -content. Translations use the ``gettext`` library to produce strings in several -languages. Here's an overview of how translation works with Django. +Django has full support for internationalization of text in code and templates. +Here's an overview of how translation works in Django. -The goal of this document is to explain how to use translations in projects, -how to add translations to Django patches and how to update and create -translation files. +.. admonition:: Behind the scenes -Using translations in Python -============================ + Django's translation machinery uses the standard ``gettext`` module that + comes with Python. -The translation machinery in Django uses the standard ``gettext`` module that -comes with Python. Django uses in its own functions and classes, but it uses -standard ``gettext`` machinery under the hood. +Overview +======== -To translate strings in your code, use one of the ``gettext`` helper functions. -There are essentially two ways to use them: +The goal of internationalization is to allow a single Web application to offer +its content and functionality in multiple languages. - * Use the ``_()`` function, which is available globally. This function - translates any string value. - * Use ``django.utils.translation`` and import ``gettext`` or - ``gettext_noop`` from there. ``gettext`` is identical to ``_()``. +You, the Django developer, can accomplish this goal by adding a minimal amount +of hooks to your Python code and templates. These hooks are called +**translation strings**. They tell Django: "This text should be translated into +the end user's language, if a translation for this text is available in that +language." -Note one important thing about translations: The system can only translate -strings it knows about. That means you have to mark strings for translation. -This is done either by calling ``_()``, ``gettext()`` or ``gettext_noop()`` on -string constants. You can translate variable values or computed values, but the -system needs to know those strings beforehand. +Django takes care of using these hooks to translate Web apps, on the fly, +according to users' language preferences. -The usual method is to build your strings using string interpolation and using -the ``gettext`` functions to do the actual translation. Example:: +Essentially, Django does two things: - def hello_world(request, name, site): - page = _('Hello %(name)s, welcome to %(site)s!') % { - 'name': name, - 'site': site, - } - return HttpResponse(page) + * It lets developers and template authors specify which parts of their apps + should be translatable. + * It uses these hooks to translate Web apps for particular users according + to their language preferences. -This short snippet shows one important thing: You shouldn't use positional -string interpolation (e.g., ``%s`` or ``%d``). Use the named string -interpolation (e.g., ``%(name)s``), instead. Do this because other languages -might require reordering of text. +How to internationalize your app: in three steps +------------------------------------------------ -The other two helper functions are similar:: + 1. Embed translation strings in your Python code and templates. + 2. Get translations for those strings, in whichever languages you want to + support. + 2. Activate the locale middleware in your Django settings. + +How to specify translation strings +================================== + +Translation strings specify "This text should be translated." These strings can +appear in your Python code and templates. It's your responsibility to mark +translatable strings; the system can only translate strings it knows about. + +In Python code +-------------- + +Standard translation +~~~~~~~~~~~~~~~~~~~~ + +Specify a translation string by using the function ``_()``. (Yes, the name of +the function is the "underscore" character.) This function is available +globally in any Python module; you don't have to import it. + +In this example, the text ``"Welcome to my site."`` is marked as a translation +string:: + + def my_view(request): + output = _("Welcome to my site.") + return HttpResponse(output) + +The function ``django.utils.translation.gettext()`` is identical to ``_()``. +This example is identical to the previous one:: from django.utils.translation import gettext - def hello_world(request, name, site): - page = gettext('Hello %(name)s, welcome to %(site)s!') % { - 'name': name, - 'site': site, - } - return HttpResponse(page) + def my_view(request): + output = gettext("Welcome to my site.") + return HttpResponse(output) -The difference here is that ``gettext`` is explicitly imported. +Translation works on computed values. This example is identical to the previous +two:: -Two important helper functions are available: ``gettext`` and ``gettext_noop``. + def my_view(request): + words = ['Welcome', 'to', 'my', 'site.'] + output = _(' '.join(words)) + return HttpResponse(output) - * ``gettext`` is just like ``_()`` -- it translates its argument. - * ``gettext_noop`` is different. It marks a string for inclusion into the - message file but doesn't do translation. Instead, the string is later - translated from a variable. Use this if you have constant strings that - should be stored in the source language because they are exchanged over - systems or users -- such as strings in a database -- but should be - translated at the last possible point in time, such as when the string is - presented to the user. +Translation works on variables. Again, here's an identical example:: -One function, ``django.utils.translation.gettext_lazy()``, isn't available in -the standard ``gettext`` module. Use it for lazily translated strings, such as -messages in Django models that are stored internally and translated on access --- but not translated on storage, as that would only take the default language -into account. + def my_view(request): + sentence = 'Welcome to my site.' + output = _(sentence) + return HttpResponse(output) + +The strings you pass to ``_()`` or ``gettext()`` can take placeholders, +specified with Python's standard named-string interpolation syntax. Example:: + + def my_view(request, n): + output = _('%(name)s is my name.') % {'name': n} + return HttpResponse(output) + +This technique lets language-specific translations reorder the placeholder +text. For example, an English translation may be ``"Adrian is my name."``, +while a Spanish translation may be ``"Me llamo Adrian."`` -- with the +placeholder (the name) placed after the translated text instead of before it. + +For this reason, you should use named-string interpolation (e.g., ``%(name)s``) +instead of positional interpolation (e.g., ``%s`` or ``%d``). If you used +positional interpolation, translations wouldn't be able to reorder placeholder +text. + +Marking strings as no-op +~~~~~~~~~~~~~~~~~~~~~~~~ + +Use the function ``django.utils.translation.gettext_noop()`` to mark a string +as a translate string without translating it. The string is later translated +from a variable. + +Use this if you have constant strings that should be stored in the source +language because they are exchanged over systems or users -- such as strings in +a database -- but should be translated at the last possible point in time, such +as when the string is presented to the user. + +Lazy translation +~~~~~~~~~~~~~~~~ + +Use the function ``django.utils.translation.gettext_lazy()`` to translate +strings lazily -- when the value is accessed rather than when the +``gettext_lazy()`` function is called. For example, to translate a model's ``help_text``, do the following:: @@ -107,45 +155,57 @@ class, though:: verbose_name = _('my thing') verbose_name_plural = _('mythings') -A standard problem with translations is pluralization of strings. Use -``ngettext`` to solve this problem. Example:: +Pluralization +~~~~~~~~~~~~~ +Use the function ``django.utils.translation.ngettext()`` to specify pluralized +messages. Example:: + + from django.utils.translation import ngettext def hello_world(request, count): - from django.utils.translation import ngettext page = ngettext('there is %(count)d object', 'there are %(count)d objects', count) % { 'count': count, } return HttpResponse(page) -Using translations in templates -=============================== +``ngettext`` takes three arguments: the singular translation string, the plural +translation string and the number of objects (which is passed to the +translation languages as the ``count`` variable). + +In template code +---------------- Using translations in Django templates uses two template tags and a slightly -different syntax than standard gettext. The ``{% trans %}`` template tag -translates a constant string or a variable content:: +different syntax than in Python code. To give your template access to these +tags, put ``{% load i18n %}`` toward the top of your template. - {% trans 'This is the title.' %} +The ``{% trans %}`` template tag translates a constant string or a variable +content:: -If you only want to mark some value for translation, but translate it -later from a variable, use the ``noop`` option:: + {% trans "This is the title." %} - +If you only want to mark a value for translation, but translate it later from a +variable, use the ``noop`` option:: -It is not possible to use variables in this constant string. If you -have variables you need to put in your translations, you have to use the -``{% blocktrans %}`` tag:: + {% trans "value" noop %} - {% blocktrans %}This will have {{ value }} inside{% endblocktrans %} +It's not possible to use template variables in ``{% trans %}`` -- only constant +strings, in single or double quotes, are allowed. If your translations require +variables (placeholders), use ``{% blocktrans %}``. Example:: -If your expressions are more complex (like you need to have filters applied), -you need to bind them to local variables for the translation block:: + {% blocktrans %}This will have {{ value }} inside.{% endblocktrans %} - {% blocktrans with value|filter as variable %} - This will have {{ value }} inside +To translate a template expression -- say, using template filters -- you need +to bind the expression to a local variable for use within the translation +block:: + + {% blocktrans with value|filter as myvar %} + This will have {{ myvar }} inside. {% endblocktrans %} -The last variant is the pluralization form: you need to specify both the singular -and plural sentence with intersparsed variables like this:: +To pluralize, specify both the singular and plural forms with the +``{% plural %}`` tag, which appears within ``{% blocktrans %}`` and +``{% endblocktrans %}``. Example:: {% blocktrans count list|counted as counter %} There is only one {{ name }} object. @@ -153,8 +213,8 @@ and plural sentence with intersparsed variables like this:: There are {{ counter }} {{ name }} objects. {% endblocktrans %} -Internally all block translations and inline translations are translated into -the actual gettext/ngettext call. +Internally, all block and inline translations use the appropriate +``gettext`` / ``ngettext`` call. Each ``DjangoContext`` has access to two translation-specific variables: @@ -169,57 +229,141 @@ two tags:: {% get_current_language as LANGUAGE_CODE %} {% get_available_languages as LANGUAGES %} -All tags live in the ``i18n`` tag library, so you need to specify -``{% load i18n %}`` in the head of your template to make use of them. +These tags also require a ``{% load i18n %}``. -There are some places where you will encounter constant strings in your template code. -One is filter arguments, the other are normal string constants for tags. If you need to -translate those, you can use the ``_("....")`` syntax:: +Translation hooks are also available within any template block tag that accepts +constant strings. In those cases, just use ``_()`` syntax to specify a +translation string. Example:: {% some_special_tag _("Page not found") value|yesno:_("yes,no") %} -In this case both the filter and the tag will see the already translated string, so they -don't need to be aware of translations. And both strings will be pulled out of the templates -for translation and stored in the .po files. +In this case, both the tag and the filter will see the already-translated +string, so they don't need to be aware of translations. -The ``setlang`` redirect view ------------------------------ +How to create language files +============================ -Django comes with a view, ``django.views.i18n.set_language`` that sets a user's -language preference and redirects back to the previous page. For example, put -this HTML code in your template:: +Once you've tagged your strings for later translation, you need to write (or +obtain) the language translations themselves. Here's how that works. -
- - - -
+Message files +------------- -When a user submits the form, his chosen language will be saved in a cookie, -and he'll be redirected either to the URL specified in the ``next`` field, or, -if ``next`` is empty, to the URL in the ``Referer`` header. If the ``Referer`` -is blank -- say, if a user's browser suppresses that header -- then the user -will be redirected to ``/`` (the site root) as a fallback. +The first step is to create a **message file** for a new language. A message +file is a plain-text file, representing a single language, that contains all +available translation strings and how they should be represented in the given +language. Message files have a ``.po`` file extension. -Activate the ``setlang`` redirect view by adding the following line to your -URLconf:: +Django comes with a tool, ``bin/make-messages.py``, that automates the creation +and upkeep of these files. - (r'^i18n/', include('django.conf.urls.i18n'), +To create or update a message file, run this command:: -Note that this example makes the view available at ``/i18n/setlang/``. + bin/make-messages.py -l de -How language preference is discovered -===================================== +...where ``de`` is the language code for the message file you want to create. +(The language code, in this case, is in locale format. So, for example, it's +``pt_BR`` for Brazilian and ``de_AT`` for Austrian German.) -Django has a very flexible model of deciding which language should be used -- -installation-wide, for a particular user, or both. +The script should be run from one of three places:: + + * The root ``django`` directory (not a Subversion checkout, but the one + that is linked-to via ``$PYTHONPATH`` or is located somewhere on that + path). + * The root directory of your Django project. + * The root directory of your Django app. + +The script runs over the entire Django source tree and pulls out all strings +marked for translation. It creates (or updates) a message file in the directory +``conf/locale``. In the ``de`` example, the file will be +``conf/locale/de/LC_MESSAGES/django.po``. + +.. admonition:: No gettext? + + If you don't have the ``gettext`` utilities installed, ``make-messages.py`` + will create empty files. If that's the case, either install the ``gettext`` + utilities or just copy the English message file + (``conf/locale/en/LC_MESSAGES/django.po``) and use it as a starting point; + it's just an empty translation file. + +The format of ``.po`` files is straightforward. Each ``.po`` file contains a +small bit of metadata, such as the translation maintainer's contact +information, but the bulk of the file is a list of **messages** -- simple +mappings between translation strings and the actual translated text for the +particular language. + +For example, if your Django app contained a translation string for the text +``"Welcome to my site.", like so:: + + _("Welcome to my site.") + +...then ``make-messages.py`` will have created a ``.po`` file containing the +following snippet -- a message:: + + #: path/to/python/module.py:23 + msgid "Welcome to my site." + msgstr "" + +A quick explanation: + + * ``msgid`` is the translation string, which appears in the source. Don't + change it. + * ``msgstr`` is where you put the language-specific translation. It starts + out empty, so it's your responsibility to change it. Make sure you keep + the quotes around your translation. + * As a convenience, each message includes the filename and line number + from which the translation string was gleaned. + +Long messages are a special case. There, the first string directly after the +``msgstr`` (or ``msgid``) is an empty string. Then the content itself will be +written over the next few lines as one string per line. Those strings are +directlyconcatenated. Don't forget trailing spaces within the strings; +otherwise, they'll be tacked together without whitespace! + +.. admonition:: Mind your charset + + When creating a ``.po`` file with your favorite text editor, first edit + the charset line (search for ``"CHARSET"``) and set it to the charset + you'll be using to edit the content. Generally, utf-8 should work for most + languages, but ``gettext`` can handle any charset you throw at it. + +To reexamine all source code and templates for new translation strings and +update all message files for **all** languages, run ``make-messages.py -a``. + +Compiling message files +----------------------- + +After you create your message file -- and each time you make changes to it -- +you'll need to compile it into a more efficient form, for use by ``gettext``. +Do this with the ``bin/compile-messages.py`` utility. + +This tool runs over all available ``.po`` files and creates ``.mo`` files, +which are binary files optimized for use by ``gettext``. In the same directory +from which you ran ``make-messages.py``, run ``compile-messages.py`` like +this:: + + bin/compile-messages.py + +That's it. Your translations are ready for use. + +.. admonition:: A note to translators + + If you've created a translation in a language Django doesn't yet support, + please let us know! We'll add it to the global list of available languages + in the global Django settings (``settings.LANGUAGES``). + +How Django discovers language preference +======================================== + +Once you've prepared your translations -- or, if you just want to use the +translations that come with Django -- you'll just need to activate translation +for your app. + +Behind the scenes, Django has a very flexible model of deciding which language +should be used -- installation-wide, for a particular user, or both. To set an installation-wide language preference, set ``LANGUAGE_CODE`` in your -settings file. Django uses this language as the default translation -- the +`settings file`_. Django uses this language as the default translation -- the final attempt if no other translator finds a translation. If all you want to do is run Django with your native language, and a language @@ -228,8 +372,7 @@ file is available for your language, all you need to do is set If you want to let each individual user specify which language he or she prefers, use ``LocaleMiddleware``. ``LocaleMiddleware`` enables language -selection based on data from the request. It lets each user have his or her own -setting. +selection based on data from the request. It customizes content for each user. To use ``LocaleMiddleware``, add ``'django.middleware.locale.LocaleMiddleware'`` to your ``MIDDLEWARE_CLASSES`` setting. Because middleware order matters, you @@ -247,11 +390,13 @@ For example, your ``MIDDLEWARE_CLASSES`` might look like this:: 'django.middleware.common.CommonMiddleware', ) +(For more on middleware, see the `middleware documentation`_.) + ``LocaleMiddleware`` tries to determine the user's language preference by following this algorithm: * First, it looks for a ``django_language`` key in the the current user's - session. + `session`_. * Failing that, it looks for a cookie called ``django_language``. * Failing that, it looks at the ``Accept-Language`` HTTP header. This header is sent by your browser and tells the server which language(s) you @@ -283,92 +428,52 @@ Note that, with static (middleware-less) translation, the language is in ``settings.LANGUAGE_CODE``, while with dynamic (middleware) translation, it's in ``request.LANGUAGE_CODE``. +.. _settings file: http://www.djangoproject.com/documentation/settings/ +.. _middleware documentation: http://www.djangoproject.com/documentation/middleware/ +.. _session: http://www.djangoproject.com/documentation/sessions/ .. _request object: http://www.djangoproject.com/documentation/request_response/#httprequest-objects -Creating language files -======================= +The ``set_language`` redirect view +================================== -So, you've tagged all of your strings for later translation. But you need to -write the translations themselves. +As a convenience, Django comes with a view, ``django.views.i18n.set_language``, +that sets a user's language preference and redirects back to the previous page. -They need to be in a format grokable by ``gettext``. You need to update them. -You may need to create new ones for new languages. This section shows you how -to do it. +Activate this view by adding the following line to your URLconf:: -Creating message files ----------------------- + (r'^i18n/', include('django.conf.urls.i18n'), -The first step is to create a message file for a new language. Django comes -with a tool, ``make-messages.py``, that automates this. +(Note that this example makes the view available at ``/i18n/setlang/``.) -To run it on the Django source tree, navigate to the ``django`` directory -itself -- not a Subversion check out, but the one linked to via ``$PYTHONPATH`` -or located somewhere on that path. +The view expects to be called via the ``GET`` method, with a ``language`` +parameter set in the query string. If session support is enabled, the view +saves the language choice in the user's session. Otherwise, it saves the +language choice in a ``django_language`` cookie. -Then run this command:: +After setting the language choice, Django redirects the user, following this +algorithm: - bin/make-messages.py -l de + * Django looks for a ``next`` parameter in the query string. + * If that doesn't exist, or is empty, Django tries the URL in the + ``Referer`` header. + * If that's empty -- say, if a user's browser suppresses that header -- + then the user will be redirected to ``/`` (the site root) as a fallback. -...where ``de`` is the language code for the message file you want to create. +Here's example HTML template code:: -This script runs over the entire Django source tree and pulls out all strings -marked for translation, creating or updating the language's message file. - -When it's done, it will have created (or updated) a message file under the -directory ``conf/locale``. In this example, the file will be -``conf/locale/de/LC_MESSAGES/django.po``. - -If you don't have the ``gettext`` utilities installed, ``make-messages.py`` -will create empty files. If that's the case, either install the ``gettext`` -utilities or just copy the English message file -(``conf/locale/en/LC_MESSAGES/django.po``) and use it as a starting point; it's -just an empty translation file. - -Once you've created the ``.po`` file, edit the file with your favorite text -editor. First, edit the charset line (search for ``"CHARSET"``) and set it to -the charset you'll be using to edit the content. Then, proceed to write your -translations. - -The language code for storage is in locale format -- so it's ``pt_BR`` for -Brazilian and ``de_AT`` for Austrian German. - -Every message in the message file is in the same format: - - * One line is the msgid. This is the actual string in the source. Don't - change it. - * The other line is msgstr. This is the translation. It starts out empty. - You change it. - -Long messages are a special case. There, the first string directly after the -msgstr (or msgid) is an empty string. Then the content itself will be written -over the next few lines as one string per line. Those strings are directly -concatenated. Don't forget trailing spaces within the strings; otherwise, -they'll be tacked together without whitespace! - -Compiling message files ------------------------ - -After you create your message file, you'll need to transform it into a more -efficient form to be read by ``gettext``. Do this with the -``compile-messages.py`` utility. This tool runs over all available ``.po`` -files and creates ``.mo`` files. Run it like this:: - - bin/compile-messages.py - -That's it. You made your first translation. Now, if you configure your browser -to request your language, Django apps will use your language preference. - -Another thing: Please submit the name of your newly-created language in that -native language, so we can add it to the global list of available languages -that is mirrored in ``settings.LANGUAGES`` (and the ``LANGUAGES`` template -variable). +
+ + + +
Using translations in your own projects ======================================= -Of course, your own projects should make use of translations. Django makes this -simple, because it looks for message files in several locations. - Django looks for translations by following this algorithm: * First, it looks for a ``locale`` directory in the application directory @@ -379,15 +484,15 @@ Django looks for translations by following this algorithm: * Finally, it checks the base translation in ``django/conf/locale``. This way, you can write applications that include their own translations, and -you can override base translations in your project path if you want to do that. -Or, you can just build a big project out of several apps and put all -translations into one big project message file. The choice is yours. +you can override base translations in your project path. Or, you can just build +a big project out of several apps and put all translations into one big project +message file. The choice is yours. All message file repositories are structured the same way. They are: * ``$APPPATH/locale//LC_MESSAGES/django.(po|mo)`` * ``$PROJECTPATH/locale//LC_MESSAGES/django.(po|mo)`` - * all paths listed in ``LOCALE_PATHS`` in your settings file are + * All paths listed in ``LOCALE_PATHS`` in your settings file are searched in that order for ``/LC_MESSAGES/django.(po|mo)`` * ``$PYTHONPATH/django/conf/locale//LC_MESSAGES/django.(po|mo)`` @@ -406,9 +511,9 @@ Finally, you should give some thought to the structure of your translation files. If your applications need to be delivered to other users and will be used in other projects, you might want to use app-specific translations. But using app-specific translations and project translations could produce -weird problems with ``make-messages``: ``make-messages`` will traverse all directories -below the current path and so might put message IDs into the project -message file that are already in application message files. +weird problems with ``make-messages``: ``make-messages`` will traverse all +directories below the current path and so might put message IDs into the +project message file that are already in application message files. The easiest way out is to store applications that are not part of the project (and so carry their own translations) outside the project tree. That way, @@ -424,7 +529,7 @@ does translation: * The string domain is always ``django``. The string domain is used to differentiate between different programs that store their data in a - common messagefile library (usually ``/usr/share/locale/``). In Django's + common message-file library (usually ``/usr/share/locale/``). In Django's case, there are Django-specific locale libraries, so the domain itself isn't used. We could store app message files with different names and put them, say, in the project library, but we decided against this. With From 6dbc781a2a20dceb5de9f3ed0e98e2c7ff2c0689 Mon Sep 17 00:00:00 2001 From: Adrian Holovaty Date: Sat, 5 Nov 2005 04:23:10 +0000 Subject: [PATCH 04/39] Moved translation.txt to i18n.txt git-svn-id: http://code.djangoproject.com/svn/django/trunk@1088 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- docs/{translation.txt => i18n.txt} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename docs/{translation.txt => i18n.txt} (100%) diff --git a/docs/translation.txt b/docs/i18n.txt similarity index 100% rename from docs/translation.txt rename to docs/i18n.txt From 058818397674f773db48d82be4af72a590b8334b Mon Sep 17 00:00:00 2001 From: Adrian Holovaty Date: Sat, 5 Nov 2005 04:24:19 +0000 Subject: [PATCH 05/39] Fixed ReST bugs in i18n.txt from [1087] git-svn-id: http://code.djangoproject.com/svn/django/trunk@1089 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- docs/i18n.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/i18n.txt b/docs/i18n.txt index 83b25a7597..cbc96e2218 100644 --- a/docs/i18n.txt +++ b/docs/i18n.txt @@ -38,7 +38,7 @@ How to internationalize your app: in three steps 1. Embed translation strings in your Python code and templates. 2. Get translations for those strings, in whichever languages you want to support. - 2. Activate the locale middleware in your Django settings. + 3. Activate the locale middleware in your Django settings. How to specify translation strings ================================== @@ -293,7 +293,7 @@ mappings between translation strings and the actual translated text for the particular language. For example, if your Django app contained a translation string for the text -``"Welcome to my site.", like so:: +``"Welcome to my site."``, like so:: _("Welcome to my site.") From e859854d0aa88508cd83f63145c0667434683e6f Mon Sep 17 00:00:00 2001 From: Adrian Holovaty Date: Sat, 5 Nov 2005 04:40:07 +0000 Subject: [PATCH 06/39] Made small edits to docs/i18n.txt git-svn-id: http://code.djangoproject.com/svn/django/trunk@1090 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- docs/i18n.txt | 42 +++++++++++++++++++++++++++--------------- 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/docs/i18n.txt b/docs/i18n.txt index cbc96e2218..5a75480294 100644 --- a/docs/i18n.txt +++ b/docs/i18n.txt @@ -3,12 +3,7 @@ Internationalization ==================== Django has full support for internationalization of text in code and templates. -Here's an overview of how translation works in Django. - -.. admonition:: Behind the scenes - - Django's translation machinery uses the standard ``gettext`` module that - comes with Python. +Here's how it works. Overview ======== @@ -40,6 +35,12 @@ How to internationalize your app: in three steps support. 3. Activate the locale middleware in your Django settings. + +.. admonition:: Behind the scenes + + Django's translation machinery uses the standard ``gettext`` module that + comes with Python. + How to specify translation strings ================================== @@ -87,6 +88,11 @@ Translation works on variables. Again, here's an identical example:: output = _(sentence) return HttpResponse(output) +(The caveat with using variables or computed values, as in the previous two +examples, is that Django's translation-string-detecting utility, +``make-messages.py``, won't be able to find these strings. More on +``make-messages`` later.) + The strings you pass to ``_()`` or ``gettext()`` can take placeholders, specified with Python's standard named-string interpolation syntax. Example:: @@ -108,7 +114,7 @@ Marking strings as no-op ~~~~~~~~~~~~~~~~~~~~~~~~ Use the function ``django.utils.translation.gettext_noop()`` to mark a string -as a translate string without translating it. The string is later translated +as a translation string without translating it. The string is later translated from a variable. Use this if you have constant strings that should be stored in the source @@ -135,14 +141,14 @@ not the actual translation. The translation itself will be done when the string is used in a string context, such as template rendering on the Django admin site. If you don't like the verbose name ``gettext_lazy``, you can just alias it as -``_``, like so:: +``_`` (underscore), like so:: from django.utils.translation import gettext_lazy as _ class MyThing(meta.Model): name = meta.CharField(help_text=_('This is the help text')) -Always use lazy translations in Django models. And it's a good idea to add +Always use lazy translations in `Django models`_. And it's a good idea to add translations for the field names and table names, too. This means writing explicit ``verbose_name`` and ``verbose_name_plural`` options in the ``META`` class, though:: @@ -155,6 +161,8 @@ class, though:: verbose_name = _('my thing') verbose_name_plural = _('mythings') +.. _Django models: http://www.djangoproject.com/documentation/model_api/ + Pluralization ~~~~~~~~~~~~~ @@ -175,7 +183,7 @@ translation languages as the ``count`` variable). In template code ---------------- -Using translations in Django templates uses two template tags and a slightly +Using translations in `Django templates`_ uses two template tags and a slightly different syntax than in Python code. To give your template access to these tags, put ``{% load i18n %}`` toward the top of your template. @@ -240,6 +248,8 @@ translation string. Example:: In this case, both the tag and the filter will see the already-translated string, so they don't need to be aware of translations. +.. _Django templates: http://www.djangoproject.com/documentation/templates_python/ + How to create language files ============================ @@ -262,10 +272,10 @@ To create or update a message file, run this command:: bin/make-messages.py -l de ...where ``de`` is the language code for the message file you want to create. -(The language code, in this case, is in locale format. So, for example, it's -``pt_BR`` for Brazilian and ``de_AT`` for Austrian German.) +The language code, in this case, is in locale format. For example, it's +``pt_BR`` for Brazilian and ``de_AT`` for Austrian German. -The script should be run from one of three places:: +The script should be run from one of three places: * The root ``django`` directory (not a Subversion checkout, but the one that is linked-to via ``$PYTHONPATH`` or is located somewhere on that @@ -325,10 +335,12 @@ otherwise, they'll be tacked together without whitespace! When creating a ``.po`` file with your favorite text editor, first edit the charset line (search for ``"CHARSET"``) and set it to the charset you'll be using to edit the content. Generally, utf-8 should work for most - languages, but ``gettext`` can handle any charset you throw at it. + languages, but ``gettext`` should handle any charset you throw at it. To reexamine all source code and templates for new translation strings and -update all message files for **all** languages, run ``make-messages.py -a``. +update all message files for **all** languages, run this:: + + make-messages.py -a Compiling message files ----------------------- From 8ee33da58558fd2da918f4e9e55556f07831cd93 Mon Sep 17 00:00:00 2001 From: Adrian Holovaty Date: Sat, 5 Nov 2005 17:59:16 +0000 Subject: [PATCH 07/39] Fixed #734 -- Fixed namespace bug in validators.isValidIPAddress4. Thanks, Hugo and mflanagan git-svn-id: http://code.djangoproject.com/svn/django/trunk@1091 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/core/validators.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/django/core/validators.py b/django/core/validators.py index e6a7b069cf..e930d75976 100644 --- a/django/core/validators.py +++ b/django/core/validators.py @@ -97,7 +97,7 @@ def isValidIPAddress4(field_data, all_data): valid_parts = [el for el in field_data.split('.') if 0 <= int(el) <= 255] if len(valid_parts) == 4: return - raise validators.ValidationError, _("Please enter a valid IP address.") + raise ValidationError, _("Please enter a valid IP address.") def isNotEmpty(field_data, all_data): if field_data.strip() == '': From 181ee4ae3175f2c7dfd89dd3418dfe81cc135a51 Mon Sep 17 00:00:00 2001 From: Adrian Holovaty Date: Sat, 5 Nov 2005 18:14:17 +0000 Subject: [PATCH 08/39] Added meta.Admin list_select_related option, which specifies to use select_related in the change-list query git-svn-id: http://code.djangoproject.com/svn/django/trunk@1092 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/contrib/admin/views/main.py | 25 ++++++++++++++----------- django/core/meta/fields.py | 3 ++- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/django/contrib/admin/views/main.py b/django/contrib/admin/views/main.py index e3dd5afdcf..b188f58947 100644 --- a/django/contrib/admin/views/main.py +++ b/django/contrib/admin/views/main.py @@ -135,17 +135,20 @@ def change_list(request, app_label, module_name): f = lookup_opts.get_field(order_field) rel_ordering = f.rel.to.ordering and f.rel.to.ordering[0] or f.rel.to.pk.column lookup_order_field = '%s.%s' % (f.rel.to.db_table, rel_ordering) - # Use select_related if one of the list_display options is a field with a - # relationship. - for field_name in lookup_opts.admin.list_display: - try: - f = lookup_opts.get_field(field_name) - except meta.FieldDoesNotExist: - pass - else: - if isinstance(f.rel, meta.ManyToOne): - lookup_params['select_related'] = True - break + if lookup_opts.admin.list_select_related: + lookup_params['select_related'] = True + else: + # Use select_related if one of the list_display options is a field with + # a relationship. + for field_name in lookup_opts.admin.list_display: + try: + f = lookup_opts.get_field(field_name) + except meta.FieldDoesNotExist: + pass + else: + if isinstance(f.rel, meta.ManyToOne): + lookup_params['select_related'] = True + break lookup_params['order_by'] = ((order_type == 'desc' and '-' or '') + lookup_order_field,) if lookup_opts.admin.search_fields and query: or_queries = [] diff --git a/django/core/meta/fields.py b/django/core/meta/fields.py index a15432dcd2..e23e6cda88 100644 --- a/django/core/meta/fields.py +++ b/django/core/meta/fields.py @@ -730,7 +730,7 @@ class OneToOne(ManyToOne): class Admin: def __init__(self, fields=None, js=None, list_display=None, list_filter=None, date_hierarchy=None, - save_as=False, ordering=None, search_fields=None, save_on_top=False): + save_as=False, ordering=None, search_fields=None, save_on_top=False, list_select_related=False): self.fields = fields self.js = js or [] self.list_display = list_display or ['__repr__'] @@ -739,6 +739,7 @@ class Admin: self.save_as, self.ordering = save_as, ordering self.search_fields = search_fields or [] self.save_on_top = save_on_top + self.list_select_related = list_select_related def get_field_objs(self, opts): """ From 24f666656f482d567827f148a024b3c59fb5e4f0 Mon Sep 17 00:00:00 2001 From: Adrian Holovaty Date: Sun, 6 Nov 2005 17:55:39 +0000 Subject: [PATCH 09/39] Fixed #737 -- Changed validators.isValidIPAddress4 to use a single regex. Thanks, mattimustang git-svn-id: http://code.djangoproject.com/svn/django/trunk@1093 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/core/validators.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/django/core/validators.py b/django/core/validators.py index e930d75976..5260fe6b8b 100644 --- a/django/core/validators.py +++ b/django/core/validators.py @@ -19,7 +19,7 @@ ansi_time_re = re.compile('^%s$' % _timere) ansi_datetime_re = re.compile('^%s %s$' % (_datere, _timere)) email_re = re.compile(r'^[-\w.+]+@\w[\w.-]+$') integer_re = re.compile(r'^-?\d+$') -ip4_re = re.compile(r'^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$') +ip4_re = re.compile(r'^(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}$') phone_re = re.compile(r'^[A-PR-Y0-9]{3}-[A-PR-Y0-9]{3}-[A-PR-Y0-9]{4}$', re.IGNORECASE) slug_re = re.compile(r'^[-\w]+$') url_re = re.compile(r'^http://\S+$') @@ -93,11 +93,8 @@ def isCommaSeparatedEmailList(field_data, all_data): raise ValidationError, _("Enter valid e-mail addresses separated by commas.") def isValidIPAddress4(field_data, all_data): - if ip4_re.search(field_data): - valid_parts = [el for el in field_data.split('.') if 0 <= int(el) <= 255] - if len(valid_parts) == 4: - return - raise ValidationError, _("Please enter a valid IP address.") + if not ip4_re.search(field_data): + raise ValidationError, _("Please enter a valid IP address.") def isNotEmpty(field_data, all_data): if field_data.strip() == '': From f6ce403140995adfec8492bf31a98edbe1f15b1b Mon Sep 17 00:00:00 2001 From: Adrian Holovaty Date: Sun, 6 Nov 2005 21:54:37 +0000 Subject: [PATCH 10/39] Small docstring change to django.views.static git-svn-id: http://code.djangoproject.com/svn/django/trunk@1094 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/views/static.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/django/views/static.py b/django/views/static.py index facc19fbb7..f74570c307 100644 --- a/django/views/static.py +++ b/django/views/static.py @@ -10,25 +10,25 @@ from django.core.template import Template, Context, TemplateDoesNotExist def serve(request, path, document_root=None, show_indexes=False): """ Serve static files below a given point in the directory structure. - - To use, put a URL pattern like:: - + + To use, put a URL pattern such as:: + (r'^(?P.*)$', 'django.views.static.serve', {'document_root' : '/path/to/my/files/'}) - - in your URL conf; you must provide the ``document_root`` param. You may + + in your URLconf. You must provide the ``document_root`` param. You may also set ``show_indexes`` to ``True`` if you'd like to serve a basic index of the directory. This index view will use the template hardcoded below, but if you'd like to override it, you can create a template called ``static/directory_index``. """ - + # Clean up given path to only allow serving files below document_root. path = posixpath.normpath(urllib.unquote(path)) newpath = '' for part in path.split('/'): if not part: # strip empty path components - continue + continue drive, part = os.path.splitdrive(part) head, part = os.path.split(part) if part in (os.curdir, os.pardir): @@ -67,7 +67,7 @@ DEFAULT_DIRECTORY_INDEX_TEMPLATE = """ """ - + def directory_index(path, fullpath): try: t = template_loader.get_template('static/directory_index') From d5368d341c65a9b0606193f06bb017e51eb71d00 Mon Sep 17 00:00:00 2001 From: Adrian Holovaty Date: Sun, 6 Nov 2005 21:55:39 +0000 Subject: [PATCH 11/39] Fixed #740 -- Abstracted hard-coded slash in utils/translation.py. Thanks, radek. Also cleaned up docstrings a bit. git-svn-id: http://code.djangoproject.com/svn/django/trunk@1095 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/utils/translation.py | 138 ++++++++++++++---------------------- 1 file changed, 55 insertions(+), 83 deletions(-) diff --git a/django/utils/translation.py b/django/utils/translation.py index 0d40a636c8..0bb19acd39 100644 --- a/django/utils/translation.py +++ b/django/utils/translation.py @@ -1,11 +1,8 @@ "translation helper functions" -import os -import re -import sys +import os, re, sys import gettext as gettext_module from cStringIO import StringIO - from django.utils.functional import lazy try: @@ -20,22 +17,20 @@ else: def currentThread(): return 'no threading' -# translations are cached in a dictionary for -# every language+app tuple. The active translations -# are stored by threadid to make them thread local. +# Translations are cached in a dictionary for every language+app tuple. +# The active translations are stored by threadid to make them thread local. _translations = {} _active = {} -# the default translation is based on the settings file +# The default translation is based on the settings file. _default = None -# this is a cache for accept-header to translation -# object mappings to prevent the accept parser to -# run multiple times for one user +# This is a cache for accept-header to translation object mappings to prevent +# the accept parser to run multiple times for one user. _accepted = {} def to_locale(language): - "turn a language name (en-us) into a locale name (en_US)" + "Turns a language name (en-us) into a locale name (en_US)." p = language.find('-') if p >= 0: return language[:p].lower()+'_'+language[p+1:].upper() @@ -43,7 +38,7 @@ def to_locale(language): return language.lower() def to_language(locale): - "turns a locale name (en_US) into a language name (en-us)" + "Turns a locale name (en_US) into a language name (en-us)." p = locale.find('_') if p >= 0: return locale[:p].lower()+'-'+locale[p+1:].lower() @@ -52,16 +47,14 @@ def to_language(locale): class DjangoTranslation(gettext_module.GNUTranslations): """ - This class sets up the GNUTranslations context with - regard to output charset. Django uses a defined - DEFAULT_CHARSET as the output charset on Python 2.4 - - with Python 2.3, you need to use DjangoTranslation23. + This class sets up the GNUTranslations context with regard to output + charset. Django uses a defined DEFAULT_CHARSET as the output charset on + Python 2.4. With Python 2.3, use DjangoTranslation23. """ - def __init__(self, *args, **kw): from django.conf import settings gettext_module.GNUTranslations.__init__(self, *args, **kw) - # starting with Python 2.4, there is a function to define + # Starting with Python 2.4, there's a function to define # the output charset. Before 2.4, the output charset is # identical with the translation file charset. try: @@ -73,29 +66,25 @@ class DjangoTranslation(gettext_module.GNUTranslations): def merge(self, other): self._catalog.update(other._catalog) - + def set_language(self, language): self.__language = language def language(self): return self.__language - + def __repr__(self): return "" % self.__language - class DjangoTranslation23(DjangoTranslation): - """ - This is a compatibility class that is only used with Python 2.3. - The reason is, Python 2.3 doesn't support set_output_charset on - translation objects and so needs this wrapper class to make sure - that input charsets from translation files are correctly translated - to output charsets. + Compatibility class that is only used with Python 2.3. + Python 2.3 doesn't support set_output_charset on translation objects and + needs this wrapper class to make sure input charsets from translation files + are correctly translated to output charsets. With a full switch to Python 2.4, this can be removed from the source. """ - def gettext(self, msgid): res = self.ugettext(msgid) return res.encode(self.django_output_charset) @@ -106,20 +95,19 @@ class DjangoTranslation23(DjangoTranslation): def translation(language): """ - This function returns a translation object. app must be the fully - qualified name of the application. + Returns a translation object. This translation object will be constructed out of multiple GNUTranslations - objects by merging their catalogs. It will construct a object for the requested - language and add a fallback to the default language, if that is different - from the requested language. + objects by merging their catalogs. It will construct a object for the + requested language and add a fallback to the default language, if it's + different from the requested language. """ global _translations t = _translations.get(language, None) if t is not None: return t - + from django.conf import settings # set up the right translation class @@ -150,7 +138,7 @@ def translation(language): return t except IOError, e: return None - + res = _translation(globalpath) def _merge(path): @@ -181,7 +169,7 @@ def translation(language): if os.path.isdir(apppath): res = _merge(apppath) - + if res is None: if fallback is not None: res = fallback @@ -197,49 +185,41 @@ def translation(language): def activate(language): """ - This function fetches the translation object for a given - tuple of application name and language and installs it as - the current translation object for the current thread. + Fetches the translation object for a given tuple of application name and + language and installs it as the current translation object for the current + thread. """ _active[currentThread()] = translation(language) def deactivate(): """ - This function deinstalls the currently active translation - object so that further _ calls will resolve against the - default translation object, again. + Deinstalls the currently active translation object so that further _ calls + will resolve against the default translation object, again. """ global _active - if _active.has_key(currentThread()): del _active[currentThread()] def get_language(): - """ - This function returns the currently selected language. - """ + "Returns the currently selected language." t = _active.get(currentThread(), None) if t is not None: try: return to_language(t.language()) except AttributeError: pass - # if we don't have a real translation object, we assume - # it's the default language. + # If we don't have a real translation object, assume it's the default language. from django.conf.settings import LANGUAGE_CODE return LANGUAGE_CODE def gettext(message): """ - This function will be patched into the builtins module to - provide the _ helper function. It will use the current - thread as a discriminator to find the translation object - to use. If no current translation is activated, the - message will be run through the default translation - object. + This function will be patched into the builtins module to provide the _ + helper function. It will use the current thread as a discriminator to find + the translation object to use. If no current translation is activated, the + message will be run through the default translation object. """ global _default, _active - t = _active.get(currentThread(), None) if t is not None: return t.gettext(message) @@ -250,18 +230,15 @@ def gettext(message): def gettext_noop(message): """ - This function is used to just mark strings for translation - but to not translate them now. This can be used to store - strings in global variables that should stay in the base - language (because they might be used externally) and will - be translated later on. + Marks strings for translation but doesn't translate them now. This can be + used to store strings in global variables that should stay in the base + language (because they might be used externally) and will be translated later. """ return message def ngettext(singular, plural, number): """ - This function returns the translation of either the singular - or plural, based on the number. + Returns the translation of either the singular or plural, based on the number. """ global _default, _active @@ -278,9 +255,8 @@ ngettext_lazy = lazy(ngettext, str) def check_for_language(lang_code): """ - This function checks wether there is a global language - file for the given language code. This is used to decide - wether a user-provided language is available. + Checks whether there is a global language file for the given language code. + This is used to decide whether a user-provided language is available. """ from django.conf import settings globalpath = os.path.join(os.path.dirname(settings.__file__), 'locale') @@ -291,11 +267,9 @@ def check_for_language(lang_code): def get_language_from_request(request): """ - analyze the request to find what language the user - wants the system to show. + Analyzes the request to find what language the user wants the system to show. """ global _accepted - from django.conf import settings globalpath = os.path.join(os.path.dirname(settings.__file__), 'locale') @@ -303,11 +277,11 @@ def get_language_from_request(request): lang_code = request.session.get('django_language', None) if lang_code is not None and check_for_language(lang_code): return lang_code - + lang_code = request.COOKIES.get('django_language', None) if lang_code is not None and check_for_language(lang_code): return lang_code - + accept = request.META.get('HTTP_ACCEPT_LANGUAGE', None) if accept is not None: @@ -338,25 +312,24 @@ def get_language_from_request(request): # filename, because otherwise we might incorrectly # report de_DE if we only have de available, but # did find de_DE because of language normalization - lang = langfile[len(globalpath):].split('/')[1] + lang = langfile[len(globalpath):].split(os.path.sep)[1] _accepted[accept] = lang return lang - + return settings.LANGUAGE_CODE def install(): """ - This installs the gettext function as the default - translation function under the name _. + Installs the gettext function as the default translation function under + the name _. """ __builtins__['_'] = gettext - dot_re = re.compile(r'\S') def blankout(src, char): """ - This is used in the templateize function and changes every - non-whitespace character to the given char. + Changes every non-whitespace character to the given char. + Used in the templateize function. """ return dot_re.sub(char, src) @@ -368,9 +341,9 @@ constant_re = re.compile(r"""_\(((?:".*?")|(?:'.*?'))\)""") def templateize(src): from django.core.template import tokenize, TOKEN_TEXT, TOKEN_VAR, TOKEN_BLOCK """ - This function turns a django template into something that is - understood by xgettext. It does so by translating the django - translation tags into standard gettext function invocations. + Turns a Django template into something that is understood by xgettext. It + does so by translating the Django translation tags into standard gettext + function invocations. """ out = StringIO() intrans = False @@ -400,7 +373,7 @@ def templateize(src): elif pluralmatch: inplural = True else: - raise SyntaxError, "translation blocks must not include other block tags: %s" % t.contents + raise SyntaxError, "Translation blocks must not include other block tags: %s" % t.contents elif t.token_type == TOKEN_VAR: if inplural: plural.append('%%(%s)s' % t.contents) @@ -444,4 +417,3 @@ def templateize(src): else: out.write(blankout(t.contents, 'X')) return out.getvalue() - From 7e28ba0b4cba9f9b7faed1862364a36fc964109e Mon Sep 17 00:00:00 2001 From: Adrian Holovaty Date: Sun, 6 Nov 2005 21:55:57 +0000 Subject: [PATCH 12/39] Tiny docstring cleanup in middleware/common.py git-svn-id: http://code.djangoproject.com/svn/django/trunk@1096 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/middleware/common.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/django/middleware/common.py b/django/middleware/common.py index e794477b62..fb37f653c1 100644 --- a/django/middleware/common.py +++ b/django/middleware/common.py @@ -11,15 +11,14 @@ class CommonMiddleware: - Forbids access to User-Agents in settings.DISALLOWED_USER_AGENTS - - URL rewriting: based on the APPEND_SLASH and PREPEND_WWW settings, - this middleware will -- shocking, isn't it -- append missing slashes - and/or prepend missing "www."s. + - URL rewriting: Based on the APPEND_SLASH and PREPEND_WWW settings, + this middleware appends missing slashes and/or prepends missing "www."s. - - ETags: if the USE_ETAGS setting is set, ETags will be calculated from + - ETags: If the USE_ETAGS setting is set, ETags will be calculated from the entire page content and Not Modified responses will be returned appropriately. - - Flat files: for 404 responses, a flat file matching the given path + - Flat files: For 404 responses, a flat file matching the given path will be looked up and used if found. """ From b14a50bb35baae5cb058190bd1b5c38eef74ad82 Mon Sep 17 00:00:00 2001 From: Adrian Holovaty Date: Sun, 6 Nov 2005 22:02:40 +0000 Subject: [PATCH 13/39] Fixed #729 -- prepopulate_from (urlify.js) now removes characters that aren't a-z, 0-9 or spaces git-svn-id: http://code.djangoproject.com/svn/django/trunk@1097 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/contrib/admin/media/js/urlify.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/django/contrib/admin/media/js/urlify.js b/django/contrib/admin/media/js/urlify.js index 5cdb6890c4..8b8dbfa59e 100644 --- a/django/contrib/admin/media/js/urlify.js +++ b/django/contrib/admin/media/js/urlify.js @@ -7,7 +7,7 @@ function URLify(s, num_chars) { "with"]; r = new RegExp('\\b(' + removelist.join('|') + ')\\b', 'gi'); s = s.replace(r, ''); - s = s.replace(/[^\w\s-]/g, ''); // remove unneeded chars + s = s.replace(/[^-A-Z0-9\s]/gi, ''); // remove unneeded chars s = s.replace(/^\s+|\s+$/g, ''); // trim leading/trailing spaces s = s.replace(/\s+/g, '-'); // convert spaces to hyphens s = s.toLowerCase(); // convert to lowercase From e19c9ccfcbd5b240c170df4b39a04af118d26e52 Mon Sep 17 00:00:00 2001 From: Adrian Holovaty Date: Sun, 6 Nov 2005 22:22:02 +0000 Subject: [PATCH 14/39] Reworded docstrings and settings documentation from [1068] git-svn-id: http://code.djangoproject.com/svn/django/trunk@1098 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/core/template/__init__.py | 79 +++++++++++++---------------- django/core/template/defaulttags.py | 9 +--- django/utils/functional.py | 51 ++++++------------- docs/settings.txt | 11 ++-- 4 files changed, 58 insertions(+), 92 deletions(-) diff --git a/django/core/template/__init__.py b/django/core/template/__init__.py index 2f1caf657f..a501d6bbe8 100644 --- a/django/core/template/__init__.py +++ b/django/core/template/__init__.py @@ -236,15 +236,12 @@ class Parser: class TokenParser: """ - You need to subclass this class and implement the - top method to parse your template line. When instantiating - the parser, you pass in the line from the django template - parser. + Subclass this and implement the top() method to parse a template line. When + instantiating the parser, pass in the line from the Django template parser. - If your tag needs to know what tag name it was called with, - you find it in the tagname instance variable of the parser. + The parser's "tagname" instance-variable stores the name of the tag that + the filter was called with. """ - def __init__(self, subject): self.subject = subject self.pointer = 0 @@ -252,31 +249,21 @@ class TokenParser: self.tagname = self.tag() def top(self): - """ - You need to overload this method to do the actual parsing - and return the result. - """ + "Overload this method to do the actual parsing and return the result." raise NotImplemented def more(self): - """ - This returns True if there is more stuff in the tag. - """ + "Returns True if there is more stuff in the tag." return self.pointer < len(self.subject) def back(self): - """ - This method undos the last microparser. This can be - used for lookahead and backtracking. - """ + "Undoes the last microparser. Use this for lookahead and backtracking." if not len(self.backout): raise TemplateSyntaxError, "back called without some previous parsing" self.pointer = self.backout.pop() def tag(self): - """ - This microparser just returns the next tag from the line. - """ + "A microparser that just returns the next tag from the line." subject = self.subject i = self.pointer if i >= len(subject): @@ -292,21 +279,18 @@ class TokenParser: return s def value(self): - """ - This microparser parses for a value - some string constant or - variable name. - """ + "A microparser that parses for a value: some string constant or variable name." subject = self.subject i = self.pointer if i >= len(subject): - raise TemplateSyntaxError, "searching for value expected another value, found end of string: %s" % subject + raise TemplateSyntaxError, "Searching for value. Expected another value but found end of string: %s" % subject if subject[i] in ('"', "'"): p = i i += 1 while i < len(subject) and subject[i] != subject[p]: i += 1 if i >= len(subject): - raise TemplateSyntaxError, "searching for value, unexpected end of string in column %d: %s" % subject + raise TemplateSyntaxError, "Searching for value. Unexpected end of string in column %d: %s" % subject i += 1 res = subject[p:i] while i < len(subject) and subject[i] in (' ', '\t'): @@ -326,18 +310,19 @@ class TokenParser: return s class FilterParser: - """Parse a variable token and its optional filters (all as a single string), - and return a list of tuples of the filter name and arguments. - Sample: - >>> token = 'variable|default:"Default value"|date:"Y-m-d"' - >>> p = FilterParser(token) - >>> p.filters - [('default', 'Default value'), ('date', 'Y-m-d')] - >>> p.var - 'variable' + """ + Parses a variable token and its optional filters (all as a single string), + and return a list of tuples of the filter name and arguments. + Sample: + >>> token = 'variable|default:"Default value"|date:"Y-m-d"' + >>> p = FilterParser(token) + >>> p.filters + [('default', 'Default value'), ('date', 'Y-m-d')] + >>> p.var + 'variable' - This class should never be instantiated outside of the - get_filters_from_token helper function. + This class should never be instantiated outside of the + get_filters_from_token helper function. """ def __init__(self, s): self.s = s @@ -346,8 +331,8 @@ class FilterParser: self.filters = [] self.current_filter_name = None self.current_filter_arg = None - # First read the variable part - decide on wether we need - # to parse a string or a variable by peeking into the stream + # First read the variable part. Decide whether we need to parse a + # string or a variable by peeking into the stream. if self.peek_char() in ('_', '"', "'"): self.var = self.read_constant_string_token() else: @@ -378,15 +363,17 @@ class FilterParser: self.current = None def read_constant_string_token(self): - """Read a constant string that must be delimited by either " - or ' characters. The string is returned with it's delimiters.""" + """ + Reads a constant string that must be delimited by either " or ' + characters. The string is returned with its delimiters. + """ val = '' qchar = None i18n = False self.next_char() if self.current == '_': i18n = True - self.next_char() + self.next_char() if self.current != '(': raise TemplateSyntaxError, "Bad character (expecting '(') '%s'" % self.current self.next_char() @@ -409,8 +396,10 @@ class FilterParser: return val def read_alphanumeric_token(self): - """Read a variable name or filter name, which are continuous strings of - alphanumeric characters + the underscore""" + """ + Reads a variable name or filter name, which are continuous strings of + alphanumeric characters + the underscore. + """ var = '' while 1: self.next_char() diff --git a/django/core/template/defaulttags.py b/django/core/template/defaulttags.py index d7c53fe947..8997d54b79 100644 --- a/django/core/template/defaulttags.py +++ b/django/core/template/defaulttags.py @@ -2,10 +2,7 @@ from django.core.template import Node, NodeList, Template, Context, resolve_variable, resolve_variable_with_filters, get_filters_from_token, registered_filters from django.core.template import TemplateSyntaxError, VariableDoesNotExist, BLOCK_TAG_START, BLOCK_TAG_END, VARIABLE_TAG_START, VARIABLE_TAG_END, register_tag -from django.utils import translation - import sys -import re class CommentNode(Node): def render(self, context): @@ -531,12 +528,10 @@ def do_if(parser, token): {% endif %} {% if not athlete_list or coach_list %} - There are no athletes or there are some coaches (OK, so - writing English translations of boolean logic sounds - stupid; it's not my fault). + There are no athletes, or there are some coaches. {% endif %} - For simplicity, ``if`` tags do not allow ``and`` clauses; use nested ``if`` + For simplicity, ``if`` tags do not allow ``and`` clauses. Use nested ``if`` tags instead:: {% if athlete_list %} diff --git a/django/utils/functional.py b/django/utils/functional.py index 2b3ca8293e..f2ea12b1b2 100644 --- a/django/utils/functional.py +++ b/django/utils/functional.py @@ -4,24 +4,17 @@ def curry(*args, **kwargs): return _curried def lazy(func, *resultclasses): - """ - lazy turns any callable passed in into a lazy evaluated callable. - you need to give result classes or types - at least one is needed - so that the automatic forcing of the lazy evaluation code is - triggered. Results are not memoized - the function is evaluated - on every access. + Turns any callable into a lazy evaluated callable. You need to give result + classes or types -- at least one is needed so that the automatic forcing of + the lazy evaluation code is triggered. Results are not memoized; the + function is evaluated on every access. """ - class __proxy__: - - """ - This inner class encapsulates the code that should be evaluated - lazyly. On calling of one of the magic methods it will force - the evaluation and store the result - afterwards the result - is delivered directly. So the result is memoized. - """ - + # This inner class encapsulates the code that should be evaluated + # lazily. On calling of one of the magic methods it will force + # the evaluation and store the result. Afterwards, the result + # is delivered directly. So the result is memoized. def __init__(self, args, kw): self.__func = func self.__args = args @@ -31,35 +24,23 @@ def lazy(func, *resultclasses): self.__dispatch[resultclass] = {} for (k, v) in resultclass.__dict__.items(): setattr(self, k, self.__promise__(resultclass, k, v)) - + def __promise__(self, klass, funcname, func): - - """ - This function builds a wrapper around some magic method and - registers that magic method for the given type and methodname. - """ - + # Builds a wrapper around some magic method and registers that magic + # method for the given type and method name. def __wrapper__(*args, **kw): - """ - This wrapper function automatically triggers the evaluation of - a lazy value. It then applies the given magic method of the - result type. - """ + # Automatically triggers the evaluation of a lazy value and + # applies the given magic method of the result type. res = self.__func(*self.__args, **self.__kw) return self.__dispatch[type(res)][funcname](res, *args, **kw) - + if not self.__dispatch.has_key(klass): self.__dispatch[klass] = {} self.__dispatch[klass][funcname] = func return __wrapper__ - + def __wrapper__(*args, **kw): - """ - This wrapper function just creates the proxy object that is returned - instead of the actual value. - """ + # Creates the proxy object, instead of the actual value. return __proxy__(args, kw) return __wrapper__ - - diff --git a/docs/settings.txt b/docs/settings.txt index 1d65d44c88..e5dd32f4c1 100644 --- a/docs/settings.txt +++ b/docs/settings.txt @@ -355,12 +355,13 @@ See http://www.thaiopensource.com/relaxng/jing.html . LANGUAGE_CODE ------------- -Default: ``'en'`` +Default: ``'en-us'`` -A string representing the language code for this installation. This should -be in locale format, that's 'en_US' for us-english. If you want to send -out the language in your HTML code, use the LANGUAGE_CODE attribute of the -request, instead, as the chosen language will depend on the browsers settings. +A string representing the language code for this installation. This should be +in standard language format. For example, U.S. English is ``"en-us"``. See the +`internationalization docs`_. + +.. _internationalization docs: http://www.djangoproject.com/documentation/i18n/ MANAGERS -------- From 557aa1572ce6b6e5428021c937fdef298dea700e Mon Sep 17 00:00:00 2001 From: Adrian Holovaty Date: Sun, 6 Nov 2005 22:28:05 +0000 Subject: [PATCH 15/39] Fixed #741 -- Made models.core.Session.get_decoded() fault-tolerant, in case of funky pickled data. Thanks, kieranholland git-svn-id: http://code.djangoproject.com/svn/django/trunk@1099 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/models/core.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/django/models/core.py b/django/models/core.py index 89695c21b2..c4327ee649 100644 --- a/django/models/core.py +++ b/django/models/core.py @@ -1,3 +1,5 @@ +import base64, md5, random, sys +import cPickle as pickle from django.core import meta, validators from django.utils.translation import gettext_lazy as _ @@ -107,9 +109,6 @@ class FlatFile(meta.Model): def get_absolute_url(self): return self.url -import base64, md5, random, sys -import cPickle as pickle - class Session(meta.Model): session_key = meta.CharField(_('session key'), maxlength=40, primary_key=True) session_data = meta.TextField(_('session data')) @@ -132,7 +131,12 @@ class Session(meta.Model): if md5.new(pickled + SECRET_KEY).hexdigest() != tamper_check: from django.core.exceptions import SuspiciousOperation raise SuspiciousOperation, "User tampered with session cookie." - return pickle.loads(pickled) + try: + return pickle.loads(pickled) + # Unpickling can cause a variety of exceptions. If something happens, + # just return an empty dictionary (an empty session). + except: + return {} def _module_encode(session_dict): "Returns the given session dictionary pickled and encoded as a string." From 6d1b5b3b1a7111dcd975dc0cb925fbb499e9292a Mon Sep 17 00:00:00 2001 From: Adrian Holovaty Date: Sun, 6 Nov 2005 22:30:01 +0000 Subject: [PATCH 16/39] Fixed #727 -- Fixed leftover %() syntax in password_reset_email template. Thanks, Hugo git-svn-id: http://code.djangoproject.com/svn/django/trunk@1100 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- .../admin/templates/registration/password_reset_email.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/django/contrib/admin/templates/registration/password_reset_email.html b/django/contrib/admin/templates/registration/password_reset_email.html index b9a0257392..b7f31e484c 100644 --- a/django/contrib/admin/templates/registration/password_reset_email.html +++ b/django/contrib/admin/templates/registration/password_reset_email.html @@ -2,7 +2,7 @@ {% trans "You're receiving this e-mail because you requested a password reset" %} {% trans "for your user account at %(site_name)s" %}. -{% trans "Your new password is: %(new_password)s" %} +{% blocktrans %}Your new password is: {{ new_password }}{% endblocktrans %} {% trans "Feel free to change this password by going to this page:" %} @@ -12,4 +12,4 @@ http://{{ domain }}/password_change/ {% trans "Thanks for using our site!" %} -{% trans "The %(site_name)s team" %} +{% blocktrans %}The {{ site_name }} team{% endblocktrans %} From 611015d858ced31ed593936ab6f2ef436c5c9bd5 Mon Sep 17 00:00:00 2001 From: Adrian Holovaty Date: Sun, 6 Nov 2005 22:32:19 +0000 Subject: [PATCH 17/39] Fixed #738 -- Updated cs translation. Thanks, radek svarz git-svn-id: http://code.djangoproject.com/svn/django/trunk@1101 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/conf/locale/cs/LC_MESSAGES/django.mo | Bin 16988 -> 17702 bytes django/conf/locale/cs/LC_MESSAGES/django.po | 241 +++++++------------- 2 files changed, 85 insertions(+), 156 deletions(-) diff --git a/django/conf/locale/cs/LC_MESSAGES/django.mo b/django/conf/locale/cs/LC_MESSAGES/django.mo index 82973470106c4a46dc0ea7208aee4e3356c2c0bb..60d771ef3e41db8ccb0afa2fee8d081666f9501d 100644 GIT binary patch delta 4875 zcmZwKcW@Nf0mtztBtSINix6cgY6gKCO&}p8ny50xrWo*n4oL{z;ky$c+F_atp%@ur zOmT=!aWI%f6g$RXs!3!sW=H~_0fOV;VZeVl!AYDrp2_!j`!x8E?C`tKdwY9tU)$Ai zYhBcVSE9mqTE%QP9JQnq2{kaLd6Y4qHq}{UVp|$B0vlluoQP8}h!gP&&czO`2rfsO zFt1@W?!x-`CRXBpjKTQUk?X?7q0ojCN!SR7xL=r&$hBrXHpl0XdznSp6W5>`K8XA? zNBGe1&!KKmi?R4Q4#F?6Ew<)nY9|G|nXoZ~Dd+~Xusc>@L)?mq_&O%zSr>@c|r#hfxE1gex(cby58V)b+2TuHT8_NCWo70qbE@M~r7cmJx z#s2sm_QPIrZU;T6H7`M3Uyf=gh>dX>HpBJU3#;Rp|0gJ%<%HJmDynBUQB!o=*1twI z_z=~=BkY4w9Zlr-X{ZqnMgEzI_WT0mQd5O$zZ%t%J=g>fb!7h4;Bijm;(45oQSrt& zI1@ME3S5KHJR&`D17_f1R7dXMi`a~fp#g12ZL+sf9Y2X0&>7THeuC=IXJLE64dfo? z&!{Q?0k!*MyST=qHc=l`gWFJ3`v&IXKBVvFF3!OpknLn6bb)yTY-(R!m zZ`=9<)bIa^+N|{%Z4>Tq+EUQ2?1t)jZ(Hw=Tx*75eJr)-eW>fIP&Zm@>sv5}`c7Nl zYrj8)4LN@t)$!BTOBmKByJ}B-i5kHJRKwq+ZWP0`@DejmU_BxF)eHtKhC!xY%?rX0D}Y{6{& z2zheM_oyGlv*q)-U&tntJ;V+a17A~Zq zo)n>`a=O)nL#UV8?+>6Fd=H<+6W9V?S+%5-+hRh`g8XCT6{v! z|8)wQ+P`2^{1^7b82;7{!xYTJa#X|bT8~>#qZ+=58pu^tJ2#M~%wI7Y+h@5Wjz@K< zJI3nyPqtsAqi!$|n_(VmNhV-xT!CtMD{61-!RGiOI#`RE(r-}LJ+kV(tC?wrW3elG zu^fBq`M*XXI*Jzqo}vC9-m_Z!4_M&AcneuJ(}9KjITj*QXTC%={4Huk^#-{eh_yCH z4XB;1cR@Wp38(?)V^||AqR<|TF^DTro8((m1OLTBjA3Uc;{=?8ORyE*z|r^sxzuFR z>jbPo-LM)ppkufJucHTN3}OB|P&my_%fUb5P;5;_yL>Wgs#f9z{0do4lfkp5Ju)AM z<3`l?pQH9bR~k{rlTmA*hVwBC)v;Zu_RkFsyPM}BC)#r2AE=Qx$#Wl@_NXZ@vi1A; zJoRquOx>Uw8{sb0QtU?uPhlb6#6;|#@4kQvF^{?zwS))46x6^8RL{@aFRs}74bPNIA8PkrLoLZo zjNAydn}4+R#>}^_YlrH1XVi5`_IxI4X0lNo&qvMdXw;^gje2SpA{`2w6>h<7LiKzv zs)1vu8^4bl*(H1a4;W4T7RKOR)JX548vZxx_l-ul@0FGqMV*JsY$Q6^r{*nkQqR9` z`dd;#bf~edq%+Y7wBvQqZlqz2R)?lhOZKKJ9KR!L$g3nobetf+Btca;dJ;d;OuR>Q z|NndZp0k?fbTWrrA-l=*MDKzlM8^k2%N0*FTY3ui6HWOGWGU%Oj*?WOBZ*uhlSo** zRL4THhpZ#jB(j;%N4Al=Lr+7Gx(c2qeQbT+PtMP!yn+0Nyh{p*j*H|J$s@fY>rX+) zOD>Vm9ef@md&y-oio8x{kbUG8qT?5lPxr}CaVjY$4w+5rj1IQbs8>u_;ZDBf&Cm)j{5=XX>r^x%{XJi36LwtYbuMP4Q! zk??jt#tnb!Wen4BfiWFpBVD@onag~B^z85v2YkW!+fcjQ^1Fe_5! zZ#iBdIpkNQoa`iJHS1f{#x@Kr@s^Z%d^O|aqGMv_QmP);IVI6d_68Pv1CBQk@CTga zerahbW^!4@qJ?Gi%e=)-L1~%K8}z=lymO=03q2uck*CCK=GT>iHC2f-qf&=2@c2sn zPQfzoyiz9=@c4pUQ0DhFp5$HR4}?<32TRI|Q}ZiJf~iyd)svEYRR29`SmX56wEj-| z!0gOH)j7!r!$k`#1D=JcBmIGjV7B916sZPtG6y?uF~^sXo|co7?j$BUDyDVINl$l% zI%y79Q_s!GsQYS2PL_(vk;{gpr#UNDxIf{Vv=n}m&TldXH=dSSSS@m<;% vD)V`28V|^BSkp51a=nCLh#8z$&iBDk;KDv%xyRI|-liHAHy0Yw2pG+u%b2#T=iMMRNB%!IZu%}|giRum*32{#{UD($A% z(n@zz3fFXdcrz;>C5E$3v)iuQ)Q%IbJ$5(SX>Hc6b~blszrXuG%=90A_jAs<|9k%D zod5a%>D}S_c#F$(B|7j)!_iO1kn&(-LR`kQM5xu6$A%j-3%BE~_&(O+4ZI!aL>aRb z_u**#9_hl2h&JXHOu!%xi?9wyq8HWA5gf<$%_$1HzyOZNuP_9MGpaNkjTz|1 ze7qkMaX)HB-a>VJ1$F+vFb@-GtiozshEJmg_FvS%0%DDs%Joe+g@>>lwRESfeb$Sp zCH%due~6{j2T%h|8s&7Hh85JaP!np$PTXwkF7A)ck3tP34n6)3Y(ttg3pJ2j)HWzY zomY^n+kO@KGuQdho(Sbj4Il=?F$vXQW<2XZox)Ta>TnGv z;~#J<{u4Lhx&&v_-NZ@M$ML9WAhoy+H=_m=&c@K@iboB6B5Fbfs1=%q8qiFnD^u;E zz=k%>s7b^b-v1^OWe#zE9vfqD#8rWB; zfqrBCA8Id!u+D0aM-BK^RKIzs>r6x5L8b!z&;Mcynn@$-#5Pn1U8n(ULyfo_dF`9s zsE&JV`>Uw)PhyIT&4{(s|B}IN!{Q0f9%@AGsWaGyv6r3>|92p&aU(1(xU zoA&$SET`R#dVFS~W>k;*-GitVXh#ijE9zG4K^`FUJO*PQ@|HFivsnKy3Rh^*1+SrI zavin1|Bbq*g%h2BGP99YHVaV~+K5cn>_PqRG_qe!KW5`KEXGk(cmT`-)cGB#$M=AT z0;^$OL+$b_sOK{_huL5YYGwX}8sGp<#m{g(j^R-W$GxbT^`HjwB5Fl^)>BwQ{k;9& zR!yi0bGK?Y@BFZj&pDwdWtCYQAov`s0)mzQ6qQbR$PkpcnwEm638?lIThB+`!V=Vbr3^K|YK+A?)P+}~ez(bE8+Ks~4LztY zPU3L9fIPD1BMion8O|+;M0K2w+NAlmUWz(zE^4MVwtcZ}Z$_=eO4L9-Ybj_cyHJnI z9@Nut2sMD?*7K;5e}L-Xuc!>>Qvf859CdeTkUfBt1&i8@{;{e(-Hb>vQRl#~)3 zx9j;oL18yJL-vzjlZE7MqT@}{?k_nXt6;9J*P!n6Jfi)e<5i-)qm6uy%pr~BUZR7C z!2c#(fIsE>{tM;n<*b`ZUs29E<2T8P&++>Og^ z`4ucDdv*Wcu#G>#BepCi65bJVDp8IXfQY;`RNsny{$LDQXG?Tk*Jr|2?`E@KLk+$x`U)i$w8R`8&{TSu>PCd;} zE1wfc1bKjT5*_2oTjVKUP}F-vdM?KWdOuA}4NlIOoSQqLCp#(BSC(GqN^E$bennGj z*n-BDt!=BbtJ|BJ8?wtfn%c8#TZ@yuUuKkrdhnUA{u4^bnxMgRZ+ diff --git a/django/conf/locale/cs/LC_MESSAGES/django.po b/django/conf/locale/cs/LC_MESSAGES/django.po index 9efc833280..cdb5efa839 100644 --- a/django/conf/locale/cs/LC_MESSAGES/django.po +++ b/django/conf/locale/cs/LC_MESSAGES/django.po @@ -5,15 +5,18 @@ # msgid "" msgstr "" -"Project-Id-Version: django\n" -"Report-Msgid-Bugs-To: \n" +"Project-Id-Version: Django Czech translation\n" +"Report-Msgid-Bugs-To: Radek Svarz \n" "POT-Creation-Date: 2005-11-04 09:29-0600\n" -"PO-Revision-Date: 2005-10-31 19:42+0100\n" +"PO-Revision-Date: 2005-11-06 18:39+0100\n" "Last-Translator: Radek Svarz \n" "Language-Team: Czech\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\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" +"X-Poedit-Language: Czech\n" +"X-Poedit-Country: CZECH REPUBLIC\n" #: contrib/admin/templates/admin/base.html:23 msgid "Welcome," @@ -48,9 +51,8 @@ msgid "We're sorry, but the requested page could not be found." msgstr "Je nám líto, ale vyžádaná stránka nebyla nalezena." #: contrib/admin/templates/admin/500.html:4 -#, fuzzy msgid "Server error" -msgstr "Chyba serveru (500)" +msgstr "Chyba serveru" #: contrib/admin/templates/admin/500.html:6 msgid "Server error (500)" @@ -61,12 +63,8 @@ msgid "Server Error (500)" msgstr "Chyba serveru (500)" #: contrib/admin/templates/admin/500.html:10 -msgid "" -"There's been an error. It's been reported to the site administrators via e-" -"mail and should be fixed shortly. Thanks for your patience." -msgstr "" -"Nastala chyba. Ta byla oznámena administrátorovi serveru pomocí e-mailu a " -"měla by být brzy odstraněna. Děkujeme za trpělivost." +msgid "There's been an error. It's been reported to the site administrators via e-mail and should be fixed shortly. Thanks for your patience." +msgstr "Nastala chyba. Ta byla oznámena administrátorovi serveru pomocí e-mailu a měla by být brzy odstraněna. Děkujeme za trpělivost." #: contrib/admin/templates/admin/object_history.html:5 msgid "History" @@ -76,7 +74,8 @@ msgstr "Historie" msgid "Date/time" msgstr "Datum/čas" -#: contrib/admin/templates/admin/object_history.html:19 models/auth.py:47 +#: contrib/admin/templates/admin/object_history.html:19 +#: models/auth.py:47 msgid "User" msgstr "Uživatel" @@ -89,12 +88,8 @@ msgid "DATE_WITH_TIME_FULL" msgstr "Plné datum s časem" #: contrib/admin/templates/admin/object_history.html:36 -msgid "" -"This object doesn't have a change history. It probably wasn't added via this " -"admin site." -msgstr "" -"Tento objekt nemá historii změn. Pravděpodobně nebyl přidán přes " -"administrátorské rozhraní." +msgid "This object doesn't have a change history. It probably wasn't added via this admin site." +msgstr "Tento objekt nemá historii změn. Pravděpodobně nebyl přidán přes administrátorské rozhraní." #: contrib/admin/templates/admin/base_site.html:4 msgid "Django site admin" @@ -106,22 +101,13 @@ msgstr "Django správa" #: contrib/admin/templates/admin/delete_confirmation.html:7 #, fuzzy, python-format -msgid "" -"Deleting the %(object_name)s '%(object)s' would result in deleting related " -"objects, but your account doesn't have permission to delete the following " -"types of objects:" -msgstr "" -"Mazání %(object_name)s '%(object)s' by vyústilo v mazání souvisejících " -"objektů, ale Váš účet nemá oprávnění pro mazání následujících typů objektů:" +msgid "Deleting the %(object_name)s '%(object)s' would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:" +msgstr "Mazání %(object_name)s '%(object)s' by vyústilo ve vymazání souvisejících objektů, ale Váš účet nemá oprávnění pro mazání následujících typů objektů:" #: contrib/admin/templates/admin/delete_confirmation.html:14 #, python-format -msgid "" -"Are you sure you want to delete the %(object_name)s \"%(object)s\"? All of " -"the following related items will be deleted:" -msgstr "" -"Jste si jist(á), že chcete smazat %(object_name)s \"%(object)s\"? Všechny " -"následující související položky budou smazány:" +msgid "Are you sure you want to delete the %(object_name)s \"%(object)s\"? All of the following related items will be deleted:" +msgstr "Jste si jist(á), že chcete smazat %(object_name)s \"%(object)s\"? Všechny následující související položky budou smazány:" #: contrib/admin/templates/admin/delete_confirmation.html:18 msgid "Yes, I'm sure" @@ -192,12 +178,8 @@ msgid "Your password was changed." msgstr "Vaše heslo bylo změněno." #: contrib/admin/templates/registration/password_change_form.html:12 -msgid "" -"Please enter your old password, for security's sake, and then enter your new " -"password twice so we can verify you typed it in correctly." -msgstr "" -"Prosíme, pro zabezpečení vložte svoje staré heslo a poté vložte dvakrát nové " -"heslo, takže můžeme ověřit, že jste ho napsal(a) správně." +msgid "Please enter your old password, for security's sake, and then enter your new password twice so we can verify you typed it in correctly." +msgstr "Prosíme, pro zabezpečení vložte svoje staré heslo a poté vložte dvakrát nové heslo, takže můžeme ověřit, že jste ho napsal(a) správně." #: contrib/admin/templates/registration/password_change_form.html:17 msgid "Old password:" @@ -227,12 +209,8 @@ msgid "Password reset successful" msgstr "Obnovení hesla bylo úspěšné" #: contrib/admin/templates/registration/password_reset_done.html:12 -msgid "" -"We've e-mailed a new password to the e-mail address you submitted. You " -"should be receiving it shortly." -msgstr "" -"Poslali jsme Vám e-mailem nové heslo na adresu, kterou jste zadal(a). Měl(a) " -"byste ji dostat během okamžiku." +msgid "We've e-mailed a new password to the e-mail address you submitted. You should be receiving it shortly." +msgstr "Poslali jsme Vám e-mailem nové heslo na adresu, kterou jste zadal(a). Měl(a) byste ji dostat během okamžiku." #: contrib/admin/templates/registration/password_reset_email.html:2 msgid "You're receiving this e-mail because you requested a password reset" @@ -266,12 +244,8 @@ msgid "The %(site_name)s team" msgstr "Tým %(site_name)s" #: contrib/admin/templates/registration/password_reset_form.html:12 -msgid "" -"Forgotten your password? Enter your e-mail address below, and we'll reset " -"your password and e-mail the new one to you." -msgstr "" -"Zapomněl(a) jste heslo? Vložte níže Vaši e-mailovou adresu a my Vaše heslo " -"obnovíme a zašleme Vám e-mailem nové." +msgid "Forgotten your password? Enter your e-mail address below, and we'll reset your password and e-mail the new one to you." +msgstr "Zapomněl(a) jste heslo? Vložte níže Vaši e-mailovou adresu a my Vaše heslo obnovíme a zašleme Vám e-mailem nové." #: contrib/admin/templates/registration/password_reset_form.html:16 msgid "E-mail address:" @@ -345,23 +319,28 @@ msgstr "Leden" msgid "February" msgstr "Únor" -#: utils/dates.py:14 utils/dates.py:27 +#: utils/dates.py:14 +#: utils/dates.py:27 msgid "March" msgstr "Březen" -#: utils/dates.py:14 utils/dates.py:27 +#: utils/dates.py:14 +#: utils/dates.py:27 msgid "April" msgstr "Duben" -#: utils/dates.py:14 utils/dates.py:27 +#: utils/dates.py:14 +#: utils/dates.py:27 msgid "May" msgstr "Květen" -#: utils/dates.py:14 utils/dates.py:27 +#: utils/dates.py:14 +#: utils/dates.py:27 msgid "June" msgstr "Červen" -#: utils/dates.py:15 utils/dates.py:27 +#: utils/dates.py:15 +#: utils/dates.py:27 msgid "July" msgstr "Červenec" @@ -433,7 +412,10 @@ msgstr "weby" msgid "label" msgstr "nadpis" -#: models/core.py:23 models/core.py:34 models/auth.py:6 models/auth.py:19 +#: models/core.py:23 +#: models/core.py:34 +#: models/auth.py:6 +#: models/auth.py:19 msgid "name" msgstr "jméno" @@ -462,23 +444,16 @@ msgid "redirect from" msgstr "přesměrovat z" #: models/core.py:63 -msgid "" -"This should be an absolute path, excluding the domain name. Example: '/" -"events/search/'." -msgstr "" -"Toto by měla být absolutní cesta, bez domény. Např. '/udalosti/hledat/'." +msgid "This should be an absolute path, excluding the domain name. Example: '/events/search/'." +msgstr "Toto by měla být absolutní cesta, bez domény. Např. '/udalosti/hledat/'." #: models/core.py:64 msgid "redirect to" msgstr "přesměrovat na" #: models/core.py:65 -msgid "" -"This can be either an absolute path (as above) or a full URL starting with " -"'http://'." -msgstr "" -"Toto může být buď absolutní cesta (jako nahoře) nebo plné URL začínající na " -"'http://'." +msgid "This can be either an absolute path (as above) or a full URL starting with 'http://'." +msgstr "Toto může být buď absolutní cesta (jako nahoře) nebo plné URL začínající na 'http://'." #: models/core.py:67 msgid "redirect" @@ -493,10 +468,8 @@ msgid "URL" msgstr "URL" #: models/core.py:82 -msgid "" -"Example: '/about/contact/'. Make sure to have leading and trailing slashes." -msgstr "" -"Příklad: '/o/kontakt/'. Ujistěte se, že máte počáteční a konečná lomítka." +msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgstr "Příklad: '/o/kontakt/'. Ujistěte se, že máte počáteční a konečná lomítka." #: models/core.py:83 msgid "title" @@ -515,12 +488,8 @@ msgid "template name" msgstr "jméno šablony" #: models/core.py:87 -msgid "" -"Example: 'flatfiles/contact_page'. If this isn't provided, the system will " -"use 'flatfiles/default'." -msgstr "" -"Například: 'flatfiles/kontaktni_stranka'. Pokud toto není zadáno, systém " -"použije 'flatfiles/default'." +msgid "Example: 'flatfiles/contact_page'. If this isn't provided, the system will use 'flatfiles/default'." +msgstr "Například: 'flatfiles/kontaktni_stranka'. Pokud toto není zadáno, systém použije 'flatfiles/default'." #: models/core.py:88 msgid "registration required" @@ -528,19 +497,15 @@ msgstr "nutná registrace" #: models/core.py:88 msgid "If this is checked, only logged-in users will be able to view the page." -msgstr "" -"Pokud je zaškrtnuto, pouze přihlášení uživatelé budou moci prohlížet tuto " -"stránku." +msgstr "Pokud je zaškrtnuto, pouze přihlášení uživatelé budou moci prohlížet tuto stránku." #: models/core.py:92 -#, fuzzy msgid "flat page" -msgstr "plochá strana" +msgstr "statická stránka" #: models/core.py:93 -#, fuzzy msgid "flat pages" -msgstr "ploché stránky" +msgstr "statické stránky" #: models/core.py:114 msgid "session key" @@ -570,7 +535,8 @@ msgstr "codename" msgid "Permission" msgstr "Oprávnění" -#: models/auth.py:11 models/auth.py:58 +#: models/auth.py:11 +#: models/auth.py:58 msgid "Permissions" msgstr "Oprávnění" @@ -578,7 +544,8 @@ msgstr "Oprávnění" msgid "Group" msgstr "Skupina" -#: models/auth.py:23 models/auth.py:60 +#: models/auth.py:23 +#: models/auth.py:60 msgid "Groups" msgstr "Skupiny" @@ -609,7 +576,7 @@ msgstr "Použije se MD5 hash -- ne čisté heslo." #: models/auth.py:38 #, fuzzy msgid "staff status" -msgstr "stav pracovníků" +msgstr "povolí přístup do administrativní aplikace" #: models/auth.py:38 msgid "Designates whether the user can log into this admin site." @@ -632,12 +599,8 @@ msgid "date joined" msgstr "datum zaregistrování" #: models/auth.py:44 -msgid "" -"In addition to the permissions manually assigned, this user will also get " -"all permissions granted to each group he/she is in." -msgstr "" -"Kromě manuálně přidělených oprávnění uživatel dostane všechna oprávnění pro " -"každou skupinu, ve které je." +msgid "In addition to the permissions manually assigned, this user will also get all permissions granted to each group he/she is in." +msgstr "Kromě manuálně přidělených oprávnění uživatel dostane všechna oprávnění pro každou skupinu, ve které je." #: models/auth.py:48 msgid "Users" @@ -686,7 +649,7 @@ msgstr "Italsky" #: conf/global_settings.py:43 msgid "Norwegian" -msgstr "" +msgstr "Norsky" #: conf/global_settings.py:44 msgid "Brazilian" @@ -697,13 +660,12 @@ msgid "Russian" msgstr "Rusky" #: conf/global_settings.py:46 -#, fuzzy msgid "Serbian" msgstr "Srbsky" #: conf/global_settings.py:47 msgid "Simplified Chinese" -msgstr "" +msgstr "Jednoduchá čínština" #: core/validators.py:58 msgid "This value must contain only letters, numbers and underscores." @@ -711,8 +673,7 @@ msgstr "Tato hodnota musí obsahovat pouze znaky, čísla nebo podtržítka." #: core/validators.py:62 msgid "This value must contain only letters, numbers, underscores and slashes." -msgstr "" -"Tato hodnota musí obsahovat pouze znaky, čísla, podtržítka nebo lomítka." +msgstr "Tato hodnota musí obsahovat pouze znaky, čísla, podtržítka nebo lomítka." #: core/validators.py:70 msgid "Uppercase letters are not allowed here." @@ -771,12 +732,8 @@ msgid "Enter a valid e-mail address." msgstr "Vložte platnou e-mailovou adresu." #: core/validators.py:149 -msgid "" -"Upload a valid image. The file you uploaded was either not an image or a " -"corrupted image." -msgstr "" -"Nahrajte na server platný obrázek. Soubor, který jste nahrál(a) nebyl " -"obrázek, nebo byl porušen." +msgid "Upload a valid image. The file you uploaded was either not an image or a corrupted image." +msgstr "Nahrajte na server platný obrázek. Soubor, který jste nahrál(a) nebyl obrázek, nebo byl porušen." #: core/validators.py:156 #, python-format @@ -831,6 +788,7 @@ msgid "Watch your mouth! The word %s is not allowed here." msgid_plural "Watch your mouth! The words %s are not allowed here." msgstr[0] "Mluvte slušně! Slovo %s zde není přípustné." msgstr[1] "Mluvte slušně! Slova %s zde nejsou přípustná." +msgstr[2] "Mluvte slušně! Slova %s zde nejsou přípustná." #: core/validators.py:233 #, python-format @@ -841,7 +799,8 @@ msgstr "Toto pole se musí shodovat s polem '%s'." msgid "Please enter something for at least one field." msgstr "Prosíme, vložte něco alespoň pro jedno pole." -#: core/validators.py:261 core/validators.py:272 +#: core/validators.py:261 +#: core/validators.py:272 msgid "Please enter both fields or leave them both empty." msgstr "Prosíme, vložte obě pole, nebo je nechte obě prázdná." @@ -871,21 +830,18 @@ msgstr "Prosíme, vložte platné číslo." #: core/validators.py:346 #, python-format msgid "Please enter a valid decimal number with at most %s total digit." -msgid_plural "" -"Please enter a valid decimal number with at most %s total digits." +msgid_plural "Please enter a valid decimal number with at most %s total digits." msgstr[0] "Prosíme, vložte platné číslo s nejvíce %s cifrou celkem." msgstr[1] "Prosíme, vložte platné číslo s nejvíce %s ciframi celkem." +msgstr[2] "Prosíme, vložte platné číslo s nejvíce %s ciframi celkem." #: core/validators.py:349 #, python-format msgid "Please enter a valid decimal number with at most %s decimal place." -msgid_plural "" -"Please enter a valid decimal number with at most %s decimal places." -msgstr[0] "" -"Prosíme, vložte platné číslo s nejvíce %s cifrou za desetinnou čárkou celkem." -msgstr[1] "" -"Prosíme, vložte platné číslo s nejvíce %s ciframi za desetinnou čárkou " -"celkem." +msgid_plural "Please enter a valid decimal number with at most %s decimal places." +msgstr[0] "Prosíme, vložte platné číslo s nejvíce %s cifrou za desetinnou čárkou celkem." +msgstr[1] "Prosíme, vložte platné číslo s nejvíce %s ciframi za desetinnou čárkou celkem." +msgstr[2] "Prosíme, vložte platné číslo s nejvíce %s ciframi za desetinnou čárkou celkem." #: core/validators.py:359 #, python-format @@ -912,71 +868,44 @@ msgstr "Nemohl jsem získat nic z %s." #: core/validators.py:426 #, python-format -msgid "" -"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." +msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." msgstr "URL %(url)s vrátilo neplatnou hlavičku Content-Type '%(contenttype)s'." #: core/validators.py:459 #, python-format -msgid "" -"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " -"\"%(start)s\".)" -msgstr "" -"Prosíme, zavřete nezavřenou značku %(tag)s z řádky %(line)s. (Řádka začíná s " -"\"%(start)s\".)" +msgid "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with \"%(start)s\".)" +msgstr "Prosíme, zavřete nezavřenou značku %(tag)s z řádky %(line)s. (Řádka začíná s \"%(start)s\".)" #: core/validators.py:463 #, python-format -msgid "" -"Some text starting on line %(line)s is not allowed in that context. (Line " -"starts with \"%(start)s\".)" -msgstr "" -"Nějaký text začínající na řádce %(line)s není povolen v tomto kontextu. " -"(Řádka začíná s \"%(start)s\".)" +msgid "Some text starting on line %(line)s is not allowed in that context. (Line starts with \"%(start)s\".)" +msgstr "Nějaký text začínající na řádce %(line)s není povolen v tomto kontextu. (Řádka začíná s \"%(start)s\".)" #: core/validators.py:468 #, python-format -msgid "" -"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" -"(start)s\".)" -msgstr "" -"\"%(attr)s\" na řádce %(line)s je neplatný atribut. (Řádka začíná s \"%" -"(start)s\".)" +msgid "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%(start)s\".)" +msgstr "\"%(attr)s\" na řádce %(line)s je neplatný atribut. (Řádka začíná s \"%(start)s\".)" #: core/validators.py:473 #, python-format -msgid "" -"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" -"(start)s\".)" -msgstr "" -"\"<%(tag)s>\" na řádce %(line)s je neplatná značka. (Řádka začíná s \"%" -"(start)s\".)" +msgid "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%(start)s\".)" +msgstr "\"<%(tag)s>\" na řádce %(line)s je neplatná značka. (Řádka začíná s \"%(start)s\".)" #: core/validators.py:477 #, python-format -msgid "" -"A tag on line %(line)s is missing one or more required attributes. (Line " -"starts with \"%(start)s\".)" -msgstr "" -"Značce na řádce %(line)s schází jeden nebo více požadovaných atributů. " -"(Řádka začíná s \"%(start)s\".)" +msgid "A tag on line %(line)s is missing one or more required attributes. (Line starts with \"%(start)s\".)" +msgstr "Značce na řádce %(line)s schází jeden nebo více požadovaných atributů. (Řádka začíná s \"%(start)s\".)" #: core/validators.py:482 #, python-format -msgid "" -"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " -"starts with \"%(start)s\".)" -msgstr "" -"Atribut \"%(attr)s\" na řádce %(line)s má neplatnou hodnotu. (Řádka začína s " -"\"%(start)s\".)" +msgid "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line starts with \"%(start)s\".)" +msgstr "Atribut \"%(attr)s\" na řádce %(line)s má neplatnou hodnotu. (Řádka začína s \"%(start)s\".)" #: core/meta/fields.py:95 msgid " Separate multiple IDs with commas." msgstr "Oddělte více identifikátorů čárkami." #: core/meta/fields.py:98 -msgid "" -" Hold down \"Control\", or \"Command\" on a Mac, to select more than one." -msgstr "" -"Podržte \"Control\", nebo \"Command\" na Macu pro vybrání více jak jedné " -"položky." +msgid " Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgstr "Podržte \"Control\", nebo \"Command\" na Macu pro vybrání více jak jedné položky." + From 4947ae42b83373c0076bd21ff8c31c4b861de884 Mon Sep 17 00:00:00 2001 From: Adrian Holovaty Date: Sun, 6 Nov 2005 22:34:16 +0000 Subject: [PATCH 18/39] Fixed #732 -- Updated de translation. Thanks, lucky@knup.de git-svn-id: http://code.djangoproject.com/svn/django/trunk@1102 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/conf/locale/de/LC_MESSAGES/django.mo | Bin 17824 -> 17966 bytes django/conf/locale/de/LC_MESSAGES/django.po | 503 ++++++++------------ 2 files changed, 209 insertions(+), 294 deletions(-) diff --git a/django/conf/locale/de/LC_MESSAGES/django.mo b/django/conf/locale/de/LC_MESSAGES/django.mo index 61cf03fb7432db1fd0f9921906c4e806db99d3cb..38e4d48b9a19e3feb9c7ec8898937784c0911b31 100644 GIT binary patch delta 4749 zcmYk<33OD|0mkt=AwU9w5CResgn_VRMFJ$OLS$b8f^4!gB$H%Jn7|}qhrtbGEnx(t zRRj@=h=Dp3kj14SiWXbj0@{|P!YMr!ij_mpu~JU|-@Kc1e8(@pd+)q?cX{`{!CmWJ zwHsW)tIeag8jdeW8?vE+F)dxjJcv`PG2;@98H(dE6}RI=Jc&U7>h4BADB(Zxn?WI<9?)1a~wP3XQ&I`MgBAQ z`J?a0axry~h%uOi`>;Ls!B4RzM)4=X1UZ31dm1uO9Ti{)oPiB7h@Ei_reQ7iz{~h3 zHh#oenRKMdj6t1Wh&i|pN8>3h#F$pj0Lw9k{>=gky>Tfn#4u_JGgwcVgPKWiTYmyI z^AWZ_7W1i3LJfEuY6W)UaNL8M*tfU>f3)=_t(ly@u$F?pP=k>R*!oWE9@IegqqfB% z)On|{3!cS1yp6e-n(Pd4DryhRMx9@Xx=tB3!ay?X--N;n8ZvP`HpOG8dwC8uu-~Ir z;G(TxMP2X)>igefSNs9>{j?Nk#=VdxGaS`E7a5~jfV%$r6xLrO*-ArW+=aT}K^%Z5 za4P^z2dEK! zY)|+d(xW;zuo;dRsn@^~~f(=n)fz6v|xF?<@Y;1tZ`B9GxFwI;LP0Z_kM(ddYRQ*l7rcaN_zU#2jah7XbdOfZ`%t&6 z7S+*7)c4QZ_KUXu4K}5J^Dhc|KL2MwXhN^rl&w)S?P%*=Q3LFQ^>L1EFGiiW0M*el zTVI1(u^L<7WOO?J-KzedgA8`OorLv{23^`>i(?p&x1YQ`N= z=jC7wK8_l|Fw}rYqs|+T&2Uz_ef}%#2`f-vd>&I>{1~B+`r!;?vN1W+*&8FUfchI) zhIf&DWu|92wr@o0=MyU(0kw-@|HLM4pQK@n^?B6Hd7Ajamhzr zU@rE-GSsf#i(~N$vN$HIoAVh>nPMpJc)7mw5@wFjk+JTBHK|N{vCC_?!4agKIw%TSU=SDhoJ^E z2IKYo&!E66nes>j&oSx?@1QPp95sN`wtfz^GM{5S{t?+%<_5OFX1o^F-U;VR#?imoMnNOmgIbz*aVVa}B5cHs*B+_Bjkq0GVyE8D3cQJWwO&9CB#sU9 z7WTpBcmwr9`wwa&34NUjBx6wbssja$C=GQ&chrwhKh%;>L0zZ_lW-AgV4G3r-$$*; zLu6l?2JAcyBoDn!HL;t>SWQNM-G80X-0ViPdeCHMy=Lek`ETBP~WhqX>m8d2E8lONH ze>Bs<*aQn~eHun4fXivG!4cSWkTI)p3hH}bp`NP0p;qz^@*pts!OrvA6Vs^sunlfO zZOTKaFI-1$s(YwgR*&g4!&p=Y$*A3(irTyxs9Tqd8t@?00LIzRXV~^&2?g!WYTK|L zbuV|IF1#DHHx8g)Ku1smxQ!aX_o(ygabwj%9BKeb7>%hI*;}ZAbjSLbj|@0yhEdQ3 z#-J`Z8TEw{)E5?@W)ehoumQE1UO^2sj5_b6{ro)Y`xou!*HG8Lg*xv$)O8+WGd=%} zhB+fjL3Pv~T{w@dAv!uan3L8?xR10ZJXMi@18&1N$abPboh~8lRWpW!$ugpS#WpeJ zEtbdGZBe|3v=x3rq!BNgg4yh-R-% zyn?hMhe%hVV?60jj*vZ}J55^6+)Ih2Fux&n$8ieJkWa`fwlM==wB>iOKB=|!Q8<>& zC&$QH@*3F@@-%HVauuZy$O!V&VYS~RTsK7Cq{F3YIoaJJExA2u>DH}Lfv2)6dt$)juPpae zRRsFF3#!XJmG03M<#WC6{^iw$WlQqQ{MGZj7I{Mt(>?J89)C%-r^K5*(d(Jl*BzRb zk=bBERiLCpR;VT;#g!F4n6cg!J;LW-8tR>OHF~ty?++(uuZ@bU%yw7%i`>(^zA8`n zz+*REu0VKGPOi&2<&*B4qhcb{sVpoFP0U@{M&Ddi5vaQ9FY*Se{UvU1ptz#EB;fUN z!rk0fX>}+3^aHnhX?5U1VOa^&uUcAVBHd@_ZH{tz!>4;sb|o+Lashv_r?9ljTWJ@{ zN0(+~C?T_DD829e=u&TWRd{>fqNwnH`;UvN=kr#EHVo_-@(*ll%lDljznI@5D#}|G c-Z7}y6*HO9dCJQxL-mK8h@4FCWD delta 4630 zcmYk<33N?&0>|_rF*-UkHSMYS{_<{mdXJya|9`jta{u=}-dyL{ zRqybA+%9mlVY^7Wk|iySY40%RR%`7w#vNu%2KL7uSc5sZ9kcL0=3`nrV>;p<V zY=&pBIiABRyo7<69^QDK*NmbN!Hz5p!rA@qv(A9J0* zbp2ga0}rqjevA9jK_kg{5ZmKt7-qbjKp~nP!R%E-eXu(Y#g;e|W3UKgaRUy(W7rM< zj+&XE4*navQ0J#(f1HD3aR(OQUr`+#7fA$#nb@#=yS3c6qcHr~Ll*V@*hIPE*=*PX(?co}uw52%rbbTNja>4w^$g!Ij1qSiJe`CQc#b!+b8Tp z+BAnzQ+*!w7W@gdca@5H-TKyb^lG>DUVw;WM}kr{Y8GhuPeWOUyD<$M#?*euf%( zJkzED48UfzZ-!9NRHtHZd0!OK~r}R)o>8K(3(iJ9fmEak3l`tY}80*VM{DQJ*ow$hH6pQ zue0}Wwd?y(*T02Yq#tNM?VBqUv>I=rdVa^Qe~t9Xe2*G=4|=Eb;!x)eL^U+bu8+Y$ z>N$2j*FIi=E!kg&t+2*+DSEZI*4R6CphmC{bz>i@p_9l*&YVZx=r(G^cTnejgRRiS z`8yDV>ToFPya;TI(Wv_;+Q-x4n15aPlumH)8-R1D&x$w3g%?n3;~|d2$qBr(xC>cN zrgb0xqj94;_5`ZoR9uA_s2RD0dW6?d1HOUk$X9)se;xQAJNOwe4qDZ->3|w>4Du$K zp{S8gw=KqC>XoPlyr_Y!z@xYxN8!l6{`Y@9@>MslVsAW#p?KR%L9fd_)D7CQw3D$D zYE@6h(O8d6j=7HdQF(;wSbsO`0JCuju0)-G8mqB2C#!>XsDZ9V{djG}-RM0-K_m0< zl4}YVU=S{}>vgCL>+Sj`OryRHH3K(MQ~o86#jj8!OQMyEsoYa`1LptYw+K>ZLN!t2-$y(}Dk$Tpz{ zau_v$qo_ypKB_}!?c;w$uYPR)OhG+-fVz=M@pmX3b))A|H(G{qxCS*7KJ?%x*cqQ< z1!iC#(kF8Oc@fMf$nTa39qRv}xo{`-oT1GBGzt&c(FrF!$!8XeF%x|lgWur-?9MMr zF20OgfaS8TyAkOt7hOFRHubTYLf4zy{Q6-hvw0PShhigzE57)a!NDK7PgCe-pJR@7l*7p&sR9BmMXFhEvd@ z=!*K_#GpFxEUE*uQ5~p4HBgJ{z*-E%&8X|Qp*pe`b^Y6@4!?`K{v_&tAEM5`ft>F( zpHt9CzD70h18Ok^vy#-)UZ@+pP{)U$Zjfmo&qg(ni#jhKb>4hbgG;bEu1B?Fp#$fU z7xn&Y>*dEBx6Q%5M2j++^dv8nU1T%SrbcTBYtxJ;Z;^#W3yWpZ_(RnV)%~;kg#|OrkEGBNqwFrSX4RU`mPBUdSwxQ5JN2RXkZd9=$$Ml2=|NVL zUy`P6DTQ#m(h)sm8!6Jd(Fdey>(f-QeIH}Vuk88-oJAVQ9HMQ9pCA9`7r614EFT}Y z_r8PUNFZ5Z@0*W>8g3|sG;)HRA};b8SwJetyW|;?M6{jsV~(MZOt$M{qh0nVz!pBIk&_Do?p{Xi1Cyr9=F;#7gd_Z#v2AV1o)zppLSRc zDJy+lhvWzNyiaBYSXWa=ke*gb+EstsZH7k#_\n" +"POT-Creation-Date: 2005-11-06 13:40+0100\n" +"PO-Revision-Date: 2005-11-06 13:54+0100\n" +"Last-Translator: Lukas Kolbe \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-1\n" "Content-Transfer-Encoding: 8bit\n" +"Language-Team: \n" -#: contrib/admin/templates/admin/base.html:23 -msgid "Welcome," -msgstr "Willkommen," +#: contrib/admin/models/admin.py:6 +msgid "action time" +msgstr "Zeit der Aktion" -#: contrib/admin/templates/admin/base.html:23 -msgid "Change password" -msgstr "Passwort ndern" +#: contrib/admin/models/admin.py:9 +msgid "object id" +msgstr "Objekt ID" -#: contrib/admin/templates/admin/base.html:23 -msgid "Log out" -msgstr "Abmelden" +#: contrib/admin/models/admin.py:10 +msgid "object repr" +msgstr "Objekt Darst." + +#: contrib/admin/models/admin.py:11 +msgid "action flag" +msgstr "Aktionskennzeichen" + +#: contrib/admin/models/admin.py:12 +msgid "change message" +msgstr "nderungsmeldung" + +#: contrib/admin/models/admin.py:15 +msgid "log entry" +msgstr "Logeintrag" + +#: contrib/admin/models/admin.py:16 +msgid "log entries" +msgstr "Logeintrge" -#: contrib/admin/templates/admin/base.html:29 -#: contrib/admin/templates/admin/500.html:4 #: contrib/admin/templates/admin/object_history.html:5 -#: contrib/admin/templates/registration/logged_out.html:4 +#: contrib/admin/templates/admin/500.html:4 +#: contrib/admin/templates/admin/base.html:29 #: contrib/admin/templates/registration/password_change_done.html:4 -#: contrib/admin/templates/registration/password_change_form.html:4 -#: contrib/admin/templates/registration/password_reset_done.html:4 #: contrib/admin/templates/registration/password_reset_form.html:4 +#: contrib/admin/templates/registration/logged_out.html:4 +#: contrib/admin/templates/registration/password_reset_done.html:4 +#: contrib/admin/templates/registration/password_change_form.html:4 msgid "Home" msgstr "Start" -#: contrib/admin/templates/admin/404.html:4 -#: contrib/admin/templates/admin/404.html:8 -msgid "Page not found" -msgstr "Seite nicht gefunden" +#: contrib/admin/templates/admin/object_history.html:5 +msgid "History" +msgstr "Geschichte" -#: contrib/admin/templates/admin/404.html:10 -msgid "We're sorry, but the requested page could not be found." -msgstr "" -"Es tut uns leid, aber die angeforderte Seite kann nicht gefunden werden." +#: contrib/admin/templates/admin/object_history.html:18 +msgid "Date/time" +msgstr "Datum/Zeit" + +#: contrib/admin/templates/admin/object_history.html:19 +#: models/auth.py:47 +msgid "User" +msgstr "Benutzer" + +#: contrib/admin/templates/admin/object_history.html:20 +msgid "Action" +msgstr "Aktion" + +#: contrib/admin/templates/admin/object_history.html:26 +msgid "DATE_WITH_TIME_FULL" +msgstr "j. N Y, H:i" + +#: contrib/admin/templates/admin/object_history.html:36 +msgid "This object doesn't have a change history. It probably wasn't added via this admin site." +msgstr "Dieses Objekt hat keine nderungsgeschichte. Es wurde mglicherweise nicht ber diese Verwaltungsseiten angelegt." + +#: contrib/admin/templates/admin/base_site.html:4 +msgid "Django site admin" +msgstr "Django Systemverwaltung" + +#: contrib/admin/templates/admin/base_site.html:7 +msgid "Django administration" +msgstr "Django Verwaltung" #: contrib/admin/templates/admin/500.html:4 msgid "Server error" @@ -60,77 +100,21 @@ msgid "Server Error (500)" msgstr "Serverfehler (500)" #: contrib/admin/templates/admin/500.html:10 -msgid "" -"There's been an error. It's been reported to the site administrators via e-" -"mail and should be fixed shortly. Thanks for your patience." -msgstr "" -"Es hat einen Fehler gegeben. Dieser Fehler wurde an die Serververwalter per " -"eMail weitergegeben und sollte bald behoben sein. Vielen Dank fr Ihr " -"Verstndnis." +msgid "There's been an error. It's been reported to the site administrators via e-mail and should be fixed shortly. Thanks for your patience." +msgstr "Es hat einen Fehler gegeben. Dieser Fehler wurde an die Serververwalter per eMail weitergegeben und sollte bald behoben sein. Vielen Dank fr Ihr Verstndnis." -#: contrib/admin/templates/admin/object_history.html:5 -msgid "History" -msgstr "Geschichte" +#: contrib/admin/templates/admin/404.html:4 +#: contrib/admin/templates/admin/404.html:8 +msgid "Page not found" +msgstr "Seite nicht gefunden" -#: contrib/admin/templates/admin/object_history.html:18 -msgid "Date/time" -msgstr "Datum/Zeit" - -#: contrib/admin/templates/admin/object_history.html:19 models/auth.py:47 -msgid "User" -msgstr "Benutzer" - -#: contrib/admin/templates/admin/object_history.html:20 -msgid "Action" -msgstr "Aktion" - -#: contrib/admin/templates/admin/object_history.html:26 -msgid "DATE_WITH_TIME_FULL" -msgstr "j. N Y, H:i" - -#: contrib/admin/templates/admin/object_history.html:36 -msgid "" -"This object doesn't have a change history. It probably wasn't added via this " -"admin site." -msgstr "" -"Dieses Objekt hat keine nderungsgeschichte. Es wurde mglicherweise nicht " -"ber diese Verwaltungsseiten angelegt." - -#: contrib/admin/templates/admin/base_site.html:4 -msgid "Django site admin" -msgstr "Django Systemverwaltung" - -#: contrib/admin/templates/admin/base_site.html:7 -msgid "Django administration" -msgstr "Django Verwaltung" - -#: contrib/admin/templates/admin/delete_confirmation.html:7 -#, python-format -msgid "" -"Deleting the %(object_name)s '%(object)s' would result in deleting related " -"objects, but your account doesn't have permission to delete the following " -"types of objects:" -msgstr "" -"Die Lschung des %(object_name)s '%(object)s' htte die Lschung von " -"abhngigen Daten zur Folge, aber Sie haben nicht die ntigen Rechte um die " -"folgenden abhngigen Daten zu lschen:" - -#: contrib/admin/templates/admin/delete_confirmation.html:14 -#, python-format -msgid "" -"Are you sure you want to delete the %(object_name)s \"%(object)s\"? All of " -"the following related items will be deleted:" -msgstr "" -"Sind Sie sicher, das Sie %(object_name)s \"%(object)s\" lschen wollen? Es " -"werden zustzlich die folgenden abhngigen Daten mit gelscht:" - -#: contrib/admin/templates/admin/delete_confirmation.html:18 -msgid "Yes, I'm sure" -msgstr "Ja, ich bin sicher" +#: contrib/admin/templates/admin/404.html:10 +msgid "We're sorry, but the requested page could not be found." +msgstr "Es tut uns leid, aber die angeforderte Seite kann nicht gefunden werden." #: contrib/admin/templates/admin/index.html:27 msgid "Add" -msgstr "Zufgen" +msgstr "Hinzufgen" #: contrib/admin/templates/admin/index.html:33 msgid "Change" @@ -138,7 +122,7 @@ msgstr " #: contrib/admin/templates/admin/index.html:43 msgid "You don't have permission to edit anything." -msgstr "Sie haben keine Berechtigung irgendwas zu ndern." +msgstr "Sie haben keine Berechtigung irgendetwas zu ndern." #: contrib/admin/templates/admin/index.html:51 msgid "Recent Actions" @@ -158,23 +142,41 @@ msgstr "Benutzername:" #: contrib/admin/templates/admin/login.html:18 msgid "Password:" -msgstr "Passwort:" +msgstr "Kennwort:" #: contrib/admin/templates/admin/login.html:20 msgid "Have you forgotten your password?" -msgstr "Haben Sie ihr Passwort vergessen?" +msgstr "Haben Sie ihr Kennwort vergessen?" #: contrib/admin/templates/admin/login.html:24 msgid "Log in" msgstr "Anmelden" -#: contrib/admin/templates/registration/logged_out.html:8 -msgid "Thanks for spending some quality time with the Web site today." -msgstr "Danke, dass Sie eine Weile bei uns waren." +#: contrib/admin/templates/admin/base.html:23 +msgid "Welcome," +msgstr "Willkommen," -#: contrib/admin/templates/registration/logged_out.html:10 -msgid "Log in again" -msgstr "Neu anmelden" +#: contrib/admin/templates/admin/base.html:23 +msgid "Change password" +msgstr "Kennwort ndern" + +#: contrib/admin/templates/admin/base.html:23 +msgid "Log out" +msgstr "Abmelden" + +#: contrib/admin/templates/admin/delete_confirmation.html:7 +#, python-format +msgid "Deleting the %(object_name)s '%(object)s' would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:" +msgstr "Die Lschung des %(object_name)s '%(object)s' htte die Lschung von abhngigen Daten zur Folge, aber Sie haben nicht die ntigen Rechte um die folgenden abhngigen Daten zu lschen:" + +#: contrib/admin/templates/admin/delete_confirmation.html:14 +#, python-format +msgid "Are you sure you want to delete the %(object_name)s \"%(object)s\"? All of the following related items will be deleted:" +msgstr "Sind Sie sicher, das Sie %(object_name)s \"%(object)s\" lschen wollen? Es werden zustzlich die folgenden abhngigen Daten mit gelscht:" + +#: contrib/admin/templates/admin/delete_confirmation.html:18 +msgid "Yes, I'm sure" +msgstr "Ja, ich bin sicher" #: contrib/admin/templates/registration/password_change_done.html:4 #: contrib/admin/templates/registration/password_change_form.html:4 @@ -186,20 +188,50 @@ msgstr "Kennwort #: contrib/admin/templates/registration/password_change_done.html:6 #: contrib/admin/templates/registration/password_change_done.html:10 msgid "Password change successful" -msgstr "Erfolgreiche Kennwortnderung" +msgstr "Kennwortnderung erfolgreich" #: contrib/admin/templates/registration/password_change_done.html:12 msgid "Your password was changed." msgstr "Ihr Kennwort wurde gendert." +#: contrib/admin/templates/registration/password_reset_form.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:6 +#: contrib/admin/templates/registration/password_reset_done.html:4 +msgid "Password reset" +msgstr "Kennwort zurcksetzen" + +#: contrib/admin/templates/registration/password_reset_form.html:12 +msgid "Forgotten your password? Enter your e-mail address below, and we'll reset your password and e-mail the new one to you." +msgstr "Sie haben Ihr Kennwort vergessen? Geben Sie bitte Ihre eMail-Adresse ein und wir setzen das Kennwort auf einen neuen Wert und schicken den per eMail an Sie raus." + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "E-mail address:" +msgstr "eMail-Adresse:" + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "Reset my password" +msgstr "Mein Kennwort zurcksetzen" + +#: contrib/admin/templates/registration/logged_out.html:8 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "Danke, dass Sie heute eine Weile bei uns waren." + +#: contrib/admin/templates/registration/logged_out.html:10 +msgid "Log in again" +msgstr "Neu anmelden" + +#: contrib/admin/templates/registration/password_reset_done.html:6 +#: contrib/admin/templates/registration/password_reset_done.html:10 +msgid "Password reset successful" +msgstr "Kennwort erfolgreich zurckgesetzt" + +#: contrib/admin/templates/registration/password_reset_done.html:12 +msgid "We've e-mailed a new password to the e-mail address you submitted. You should be receiving it shortly." +msgstr "Wir haben Ihnen ein neues Kennwort per eMail zugeschickt an die Adresse, die Sie uns gegeben haben. Es sollte in Krze ankommen." + #: contrib/admin/templates/registration/password_change_form.html:12 -msgid "" -"Please enter your old password, for security's sake, and then enter your new " -"password twice so we can verify you typed it in correctly." -msgstr "" -"Bitte geben Sie aus Sicherheitsgrnden erst Ihr altes Kennwort und darunter " -"dann zweimal (um sicherzustellen, das Sie es korrekt eingegeben haben) das " -"neue Kennwort ein." +msgid "Please enter your old password, for security's sake, and then enter your new password twice so we can verify you typed it in correctly." +msgstr "Bitte geben Sie aus Sicherheitsgrnden erst Ihr altes Kennwort und darunter dann zweimal (um sicherzustellen, das Sie es korrekt eingegeben haben) das neue Kennwort ein." #: contrib/admin/templates/registration/password_change_form.html:17 msgid "Old password:" @@ -217,25 +249,6 @@ msgstr "Kennwortwiederholung:" msgid "Change my password" msgstr "Mein Kennwort ndern" -#: contrib/admin/templates/registration/password_reset_done.html:4 -#: contrib/admin/templates/registration/password_reset_form.html:4 -#: contrib/admin/templates/registration/password_reset_form.html:6 -msgid "Password reset" -msgstr "Kennwort zurcksetzen" - -#: contrib/admin/templates/registration/password_reset_done.html:6 -#: contrib/admin/templates/registration/password_reset_done.html:10 -msgid "Password reset successful" -msgstr "Erfolgreich Kennwort zurckgesetzt" - -#: contrib/admin/templates/registration/password_reset_done.html:12 -msgid "" -"We've e-mailed a new password to the e-mail address you submitted. You " -"should be receiving it shortly." -msgstr "" -"Wir haben Ihnen ein neues Kennwort per eMail zugeschickt an die Adresse, die " -"Sie uns gegeben haben. Es sollte in Krze ankommen." - #: contrib/admin/templates/registration/password_reset_email.html:2 msgid "You're receiving this e-mail because you requested a password reset" msgstr "Sie erhalten diese Mail, weil Sie ein neues Kennwort" @@ -267,51 +280,6 @@ msgstr "Vielen Dank, das Sie unsere Seiten benutzen!" msgid "The %(site_name)s team" msgstr "Das Team von %(site_name)s" -#: contrib/admin/templates/registration/password_reset_form.html:12 -msgid "" -"Forgotten your password? Enter your e-mail address below, and we'll reset " -"your password and e-mail the new one to you." -msgstr "" -"Sie haben Ihr Kennwort vergessen? Geben Sie bitte Ihre eMail-Adresse ein und " -"wir setzen das Kennwort auf einen neuen Wert und schicken den per eMail an " -"Sie raus." - -#: contrib/admin/templates/registration/password_reset_form.html:16 -msgid "E-mail address:" -msgstr "eMail-Adresse:" - -#: contrib/admin/templates/registration/password_reset_form.html:16 -msgid "Reset my password" -msgstr "Mein Kennwort zurcksetzen" - -#: contrib/admin/models/admin.py:6 -msgid "action time" -msgstr "Zeit der Aktion" - -#: contrib/admin/models/admin.py:9 -msgid "object id" -msgstr "Objekt ID" - -#: contrib/admin/models/admin.py:10 -msgid "object repr" -msgstr "Objekt Darst." - -#: contrib/admin/models/admin.py:11 -msgid "action flag" -msgstr "Aktionskennzeichen" - -#: contrib/admin/models/admin.py:12 -msgid "change message" -msgstr "nderungsmeldung" - -#: contrib/admin/models/admin.py:15 -msgid "log entry" -msgstr "Logeintrag" - -#: contrib/admin/models/admin.py:16 -msgid "log entries" -msgstr "Logeintrge" - #: utils/dates.py:6 msgid "Monday" msgstr "Montag" @@ -346,25 +314,30 @@ msgstr "Januar" #: utils/dates.py:14 msgid "February" -msgstr "Februa" +msgstr "Februar" -#: utils/dates.py:14 utils/dates.py:27 +#: utils/dates.py:14 +#: utils/dates.py:27 msgid "March" msgstr "Mrz" -#: utils/dates.py:14 utils/dates.py:27 +#: utils/dates.py:14 +#: utils/dates.py:27 msgid "April" msgstr "April" -#: utils/dates.py:14 utils/dates.py:27 +#: utils/dates.py:14 +#: utils/dates.py:27 msgid "May" msgstr "Mai" -#: utils/dates.py:14 utils/dates.py:27 +#: utils/dates.py:14 +#: utils/dates.py:27 msgid "June" msgstr "Juni" -#: utils/dates.py:15 utils/dates.py:27 +#: utils/dates.py:15 +#: utils/dates.py:27 msgid "July" msgstr "Juli" @@ -436,7 +409,10 @@ msgstr "Websites" msgid "label" msgstr "Label" -#: models/core.py:23 models/core.py:34 models/auth.py:6 models/auth.py:19 +#: models/core.py:23 +#: models/core.py:34 +#: models/auth.py:6 +#: models/auth.py:19 msgid "name" msgstr "Name" @@ -465,24 +441,16 @@ msgid "redirect from" msgstr "Umleitung von" #: models/core.py:63 -msgid "" -"This should be an absolute path, excluding the domain name. Example: '/" -"events/search/'." -msgstr "" -"Hier sollte ein absoluter Pfad stehen, ohne den Domainnamen. Beispiel: '/" -"events/search/'." +msgid "This should be an absolute path, excluding the domain name. Example: '/events/search/'." +msgstr "Hier sollte ein absoluter Pfad stehen, ohne den Domainnamen. Beispiel: '/events/search/'." #: models/core.py:64 msgid "redirect to" msgstr "Umleitung zu" #: models/core.py:65 -msgid "" -"This can be either an absolute path (as above) or a full URL starting with " -"'http://'." -msgstr "" -"Hier mus entweder ein absoluter Pfad oder eine komplette URL mit http:// am " -"Anfang stehen." +msgid "This can be either an absolute path (as above) or a full URL starting with 'http://'." +msgstr "Hier muss entweder ein absoluter Pfad oder eine komplette URL mit http:// am Anfang stehen." #: models/core.py:67 msgid "redirect" @@ -497,10 +465,8 @@ msgid "URL" msgstr "URL" #: models/core.py:82 -msgid "" -"Example: '/about/contact/'. Make sure to have leading and trailing slashes." -msgstr "" -"Beispiel: '/about/contact/'. Wichtig: vorne und hinten muss ein / stehen." +msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgstr "Beispiel: '/about/contact/'. Wichtig: vorne und hinten muss ein / stehen." #: models/core.py:83 msgid "title" @@ -519,12 +485,8 @@ msgid "template name" msgstr "Name der Vorlage" #: models/core.py:87 -msgid "" -"Example: 'flatfiles/contact_page'. If this isn't provided, the system will " -"use 'flatfiles/default'." -msgstr "" -"Beispiel: 'flatfiles/contact_page'. Wenn dieses Feld nicht gefllt ist, wird " -"'flatfiles/default' als Standard gewhlt." +msgid "Example: 'flatfiles/contact_page'. If this isn't provided, the system will use 'flatfiles/default'." +msgstr "Beispiel: 'flatfiles/contact_page'. Wenn dieses Feld nicht gefllt ist, wird 'flatfiles/default' als Standard gewhlt." #: models/core.py:88 msgid "registration required" @@ -532,8 +494,7 @@ msgstr "Registrierung erforderlich" #: models/core.py:88 msgid "If this is checked, only logged-in users will be able to view the page." -msgstr "" -"Wenn hier ein Haken ist, knnen nur angemeldete Benutzer diese Seite sehen." +msgstr "Wenn hier ein Haken ist, knnen nur angemeldete Benutzer diese Seite sehen." #: models/core.py:92 msgid "flat page" @@ -553,7 +514,7 @@ msgstr "Sitzungsdaten" #: models/core.py:116 msgid "expire date" -msgstr "Ablaufdatum" +msgstr "Verfallsdatum" #: models/core.py:118 msgid "session" @@ -571,7 +532,8 @@ msgstr "Codename" msgid "Permission" msgstr "Berechtigung" -#: models/auth.py:11 models/auth.py:58 +#: models/auth.py:11 +#: models/auth.py:58 msgid "Permissions" msgstr "Berechtigungen" @@ -579,7 +541,8 @@ msgstr "Berechtigungen" msgid "Group" msgstr "Gruppe" -#: models/auth.py:23 models/auth.py:60 +#: models/auth.py:23 +#: models/auth.py:60 msgid "Groups" msgstr "Gruppen" @@ -601,11 +564,11 @@ msgstr "eMail-Adresse" #: models/auth.py:37 msgid "password" -msgstr "Passwort" +msgstr "Kennwort" #: models/auth.py:37 msgid "Use an MD5 hash -- not the raw password." -msgstr "Nicht das Passwort selber eintragen, sondern dessen MD5 signatur." +msgstr "Nicht das Kennwort selber eintragen, sondern dessen MD5 signatur." #: models/auth.py:38 msgid "staff status" @@ -613,8 +576,7 @@ msgstr "Administrator" #: models/auth.py:38 msgid "Designates whether the user can log into this admin site." -msgstr "" -"Gibt an, ob der Benutzer sich an der Administrationsseite anmelden kann." +msgstr "Gibt an, ob der Benutzer sich an der Administrationsseite anmelden kann." #: models/auth.py:39 msgid "active" @@ -633,12 +595,8 @@ msgid "date joined" msgstr "Mitglied seit" #: models/auth.py:44 -msgid "" -"In addition to the permissions manually assigned, this user will also get " -"all permissions granted to each group he/she is in." -msgstr "" -"Zustzlich zu den manuell angelegten Rechten erhlt dieser Benutzer auch " -"alle Rechte, die seine zugewiesenen Gruppen haben." +msgid "In addition to the permissions manually assigned, this user will also get all permissions granted to each group he/she is in." +msgstr "Zustzlich zu den manuell angelegten Rechten erhlt dieser Benutzer auch alle Rechte, die seine zugewiesenen Gruppen haben." #: models/auth.py:48 msgid "Users" @@ -686,7 +644,7 @@ msgstr "Italienisch" #: conf/global_settings.py:43 msgid "Norwegian" -msgstr "" +msgstr "Norwegisch" #: conf/global_settings.py:44 msgid "Brazilian" @@ -702,17 +660,15 @@ msgstr "Serbisch" #: conf/global_settings.py:47 msgid "Simplified Chinese" -msgstr "" +msgstr "vereinfachtes Chinesisch" #: core/validators.py:58 msgid "This value must contain only letters, numbers and underscores." -msgstr "Der Wert darf nur Buchstaben, Ziffern und Unterstriche enthalten." +msgstr "Dieser Wert darf nur Buchstaben, Ziffern und Unterstriche enthalten." #: core/validators.py:62 msgid "This value must contain only letters, numbers, underscores and slashes." -msgstr "" -"Der Wert darf nur Buchstaben, Ziffern, Unterstriche und Schrgstriche " -"enthalten." +msgstr "Dieser Wert darf nur Buchstaben, Ziffern, Unterstriche und Schrgstriche enthalten." #: core/validators.py:70 msgid "Uppercase letters are not allowed here." @@ -764,20 +720,15 @@ msgstr "Bitte eine g #: core/validators.py:133 msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." -msgstr "" -"Bitte eine gltige Datum+Zeit Angabe im Format JJJJ-MM-TT SS:MM eingeben." +msgstr "Bitte eine gltige Datums- und Zeitangabe im Format JJJJ-MM-TT SS:MM eingeben." #: core/validators.py:137 msgid "Enter a valid e-mail address." msgstr "Bitte eine gltige eMail-Adresse eingeben" #: core/validators.py:149 -msgid "" -"Upload a valid image. The file you uploaded was either not an image or a " -"corrupted image." -msgstr "" -"Bitte ein Bild hochladen. Die Datei, die hochgeladen wurde, ist kein Bild " -"oder ist defekt." +msgid "Upload a valid image. The file you uploaded was either not an image or a corrupted image." +msgstr "Bitte ein Bild hochladen. Die Datei, die hochgeladen wurde, ist kein Bild oder ist defekt." #: core/validators.py:156 #, python-format @@ -787,8 +738,7 @@ msgstr "Die URL %s zeigt nicht auf ein g #: core/validators.py:160 #, python-format msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." -msgstr "" -"Telefonnummern mssen im Format XXX-XXX-XXXX sein. \"%s\" ist ungltig." +msgstr "Telefonnummern mssen im Format XXX-XXX-XXXX sein. \"%s\" ist ungltig." #: core/validators.py:168 #, python-format @@ -841,23 +791,22 @@ msgstr "Dieses Feld muss zum Feld '%s' passen." #: core/validators.py:252 msgid "Please enter something for at least one field." -msgstr "Bitte mindestens eins der Felder ausfllen." +msgstr "Bitte mindestens eines der Felder ausfllen." -#: core/validators.py:261 core/validators.py:272 +#: core/validators.py:261 +#: core/validators.py:272 msgid "Please enter both fields or leave them both empty." msgstr "Bitte entweder beide Felder ausfllen, oder beide leer lassen." #: core/validators.py:279 #, python-format msgid "This field must be given if %(field)s is %(value)s" -msgstr "" -"Dieses Feld muss gefllt sein, wenn Feld %(field)s den Wert %(value)s hat." +msgstr "Dieses Feld muss gefllt sein, wenn Feld %(field)s den Wert %(value)s hat." #: core/validators.py:291 #, python-format msgid "This field must be given if %(field)s is not %(value)s" -msgstr "" -"Dieses Feld muss gefllt sein, wenn Feld %(field)s nicht %(value)s ist." +msgstr "Dieses Feld muss gefllt sein, wenn Feld %(field)s nicht %(value)s ist." #: core/validators.py:310 msgid "Duplicate values are not allowed." @@ -875,33 +824,26 @@ msgstr "Bitte eine g #: core/validators.py:346 #, python-format msgid "Please enter a valid decimal number with at most %s total digit." -msgid_plural "" -"Please enter a valid decimal number with at most %s total digits." +msgid_plural "Please enter a valid decimal number with at most %s total digits." msgstr[0] "Bitte eine gltige Dezimalzahl mit maximal %s Ziffer eingeben." msgstr[1] "Bitte eine gltige Dezimalzahl mit maximal %s Ziffern eingeben." #: core/validators.py:349 #, python-format msgid "Please enter a valid decimal number with at most %s decimal place." -msgid_plural "" -"Please enter a valid decimal number with at most %s decimal places." -msgstr[0] "" -"Bitte eine gltige Dezimalzahl mit maximal %s Dezimalstelle eingeben." -msgstr[1] "" -"Bitte eine gltige Dezimalzahl mit maximal %s Dezimalstellen eingeben." +msgid_plural "Please enter a valid decimal number with at most %s decimal places." +msgstr[0] "Bitte eine gltige Dezimalzahl mit maximal %s Dezimalstelle eingeben." +msgstr[1] "Bitte eine gltige Dezimalzahl mit maximal %s Dezimalstellen eingeben." #: core/validators.py:359 #, python-format msgid "Make sure your uploaded file is at least %s bytes big." -msgstr "" -"Bitte sicherstellen, da die hochgeladene Datei mindestens %s Bytes gross " -"ist." +msgstr "Bitte sicherstellen, da die hochgeladene Datei mindestens %s Bytes gross ist." #: core/validators.py:360 #, python-format msgid "Make sure your uploaded file is at most %s bytes big." -msgstr "" -"Bitte sicherstellen, da die hochgeladene Datei maximal %s Bytes gross ist." +msgstr "Bitte sicherstellen, da die hochgeladene Datei maximal %s Bytes gross ist." #: core/validators.py:373 msgid "The format for this field is wrong." @@ -918,71 +860,44 @@ msgstr "Konnte nichts von %s empfangen." #: core/validators.py:426 #, python-format -msgid "" -"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." +msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." msgstr "Die URL %(url)s lieferte den falschen Content-Type '%(contenttype)s'." #: core/validators.py:459 #, python-format -msgid "" -"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " -"\"%(start)s\".)" -msgstr "" -"Bitte das ungeschlossene %(tag)s Tag in Zeile %(line)s schlieen. Die Zeile " -"beginnt mit \"%(start)s\"." +msgid "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with \"%(start)s\".)" +msgstr "Bitte das ungeschlossene %(tag)s Tag in Zeile %(line)s schlieen. Die Zeile beginnt mit \"%(start)s\"." #: core/validators.py:463 #, python-format -msgid "" -"Some text starting on line %(line)s is not allowed in that context. (Line " -"starts with \"%(start)s\".)" -msgstr "" -"In Zeile %(line)s ist Text, der nicht in dem Kontext erlaubt ist. Die Zeile " -"beginnt mit \"%(start)s\"." +msgid "Some text starting on line %(line)s is not allowed in that context. (Line starts with \"%(start)s\".)" +msgstr "In Zeile %(line)s ist Text, der nicht in dem Kontext erlaubt ist. Die Zeile beginnt mit \"%(start)s\"." #: core/validators.py:468 #, python-format -msgid "" -"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" -"(start)s\".)" -msgstr "" -"Das Attribute %(attr)s in Zeile %(line)s ist ungltig. Die Zeile beginnt mit " -"\"%(start)s\"." +msgid "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%(start)s\".)" +msgstr "Das Attribute %(attr)s in Zeile %(line)s ist ungltig. Die Zeile beginnt mit \"%(start)s\"." #: core/validators.py:473 #, python-format -msgid "" -"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" -"(start)s\".)" -msgstr "" -"<%(tag)s> in Zeile %(line)s ist ungltig. Die Zeile beginnt mit \"%(start)s" -"\"." +msgid "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%(start)s\".)" +msgstr "<%(tag)s> in Zeile %(line)s ist ungltig. Die Zeile beginnt mit \"%(start)s\"." #: core/validators.py:477 #, python-format -msgid "" -"A tag on line %(line)s is missing one or more required attributes. (Line " -"starts with \"%(start)s\".)" -msgstr "" -"Ein Tag in Zeile %(line)s hat eines oder mehrere Pflichtattribute nicht. Die " -"Zeile beginnt mit \"%(start)s\"." +msgid "A tag on line %(line)s is missing one or more required attributes. (Line starts with \"%(start)s\".)" +msgstr "Ein Tag in Zeile %(line)s hat eines oder mehrere Pflichtattribute nicht. Die Zeile beginnt mit \"%(start)s\"." #: core/validators.py:482 #, python-format -msgid "" -"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " -"starts with \"%(start)s\".)" -msgstr "" -"Das Attribut %(attr)s in Zeile %(line)s hat einen ungltigen Wert. Die Zeile " -"beginnt mit \"%(start)s\"." +msgid "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line starts with \"%(start)s\".)" +msgstr "Das Attribut %(attr)s in Zeile %(line)s hat einen ungltigen Wert. Die Zeile beginnt mit \"%(start)s\"." #: core/meta/fields.py:95 msgid " Separate multiple IDs with commas." msgstr "Mehrere IDs knnen mit Komma getrennt werden." #: core/meta/fields.py:98 -msgid "" -" Hold down \"Control\", or \"Command\" on a Mac, to select more than one." -msgstr "" -" Um mehr als eine Selektion zu treffen, \"Control\" oder auf dem Mac " -"\"Command\" beim Klicken gedrckt halten." +msgid " Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgstr " Um mehr als eine Selektion zu treffen, \"Strg\", oder auf dem Mac \"Command\", beim Klicken gedrckt halten." + From 029257874572c23455c66d2a9289df930c25c515 Mon Sep 17 00:00:00 2001 From: Adrian Holovaty Date: Sun, 6 Nov 2005 22:46:56 +0000 Subject: [PATCH 19/39] Fixed #312 -- Fixed bug when adding images in the admin when edit_inline and width field is set. Thanks, nichyoung git-svn-id: http://code.djangoproject.com/svn/django/trunk@1104 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/core/meta/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/django/core/meta/__init__.py b/django/core/meta/__init__.py index 2e39f72e95..93f5aa4d0d 100644 --- a/django/core/meta/__init__.py +++ b/django/core/meta/__init__.py @@ -1567,7 +1567,7 @@ def manipulator_save(opts, klass, add, change, self, new_data): # Save any uploaded files. for f in rel_opts.fields: if isinstance(f, FileField) and rel_new_data.get(f.name, False): - f.save_file(rel_new_data, new_rel_obj, change and old_rel_obj or None, change, rel=True) + f.save_file(rel_new_data, new_rel_obj, change and old_rel_obj or None, old_rel_obj is not None, rel=True) # Calculate whether any fields have changed. if change: From 911a6dfe04df57a1f33b533eb71e9624f1ed5f14 Mon Sep 17 00:00:00 2001 From: Adrian Holovaty Date: Sun, 6 Nov 2005 22:53:07 +0000 Subject: [PATCH 20/39] Fixed #319 -- Updated docs/model-api.txt to note that prepopulate_from doesn't accept DateTimeFields git-svn-id: http://code.djangoproject.com/svn/django/trunk@1105 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- docs/model-api.txt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/model-api.txt b/docs/model-api.txt index edf94dd17c..b27a298d8e 100644 --- a/docs/model-api.txt +++ b/docs/model-api.txt @@ -387,7 +387,10 @@ Here are all available field types: meta.SlugField(prepopulate_from=("pre_name", "name")) - The admin represents this as an ```` (a single-line input). + ``prepopulate_from`` doesn't accept DateTimeFields. + + The admin represents ``SlugField`` as an ```` (a + single-line input). ``SmallIntegerField`` Like an ``IntegerField``, but only allows values under a certain From a218cf57988e2b6bea59734ea84ddf8a59df14f1 Mon Sep 17 00:00:00 2001 From: Adrian Holovaty Date: Sun, 6 Nov 2005 22:59:18 +0000 Subject: [PATCH 21/39] Fixed #281 -- Made e-mail address validation much more strict and accurate. git-svn-id: http://code.djangoproject.com/svn/django/trunk@1106 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/core/validators.py | 3 ++- docs/model-api.txt | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/django/core/validators.py b/django/core/validators.py index 5260fe6b8b..bdcce990f8 100644 --- a/django/core/validators.py +++ b/django/core/validators.py @@ -17,7 +17,8 @@ alnumurl_re = re.compile(r'^[\w/]+$') ansi_date_re = re.compile('^%s$' % _datere) ansi_time_re = re.compile('^%s$' % _timere) ansi_datetime_re = re.compile('^%s %s$' % (_datere, _timere)) -email_re = re.compile(r'^[-\w.+]+@\w[\w.-]+$') +# From http://www.twilightsoul.com/Default.aspx?tabid=134 +email_re = re.compile(r'^((([\t\x20]*[!#-\'\*\+\-/-9=\?A-Z\^-~]+[\t\x20]*|"[\x01-\x09\x0B\x0C\x0E-\x21\x23-\x5B\x5D-\x7F]*")+)?[\t\x20]*<([\t\x20]*[!#-\'\*\+\-/-9=\?A-Z\^-~]+(\.[!#-\'\*\+\-/-9=\?A-Z\^-~]+)*|"[\x01-\x09\x0B\x0C\x0E-\x21\x23-\x5B\x5D-\x7F]*")@(([a-zA-Z0-9][-a-zA-Z0-9]*[a-zA-Z0-9]\.)+[a-zA-Z]{2,}|\[(([0-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\])>[\t\x20]*|([\t\x20]*[!#-\'\*\+\-/-9=\?A-Z\^-~]+(\.[!#-\'\*\+\-/-9=\?A-Z\^-~]+)*|"[\x01-\x09\x0B\x0C\x0E-\x21\x23-\x5B\x5D-\x7F]*")@(([a-zA-Z0-9][-a-zA-Z0-9]*[a-zA-Z0-9]\.)+[a-zA-Z]{2,}|\[(([0-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\]))$') integer_re = re.compile(r'^-?\d+$') ip4_re = re.compile(r'^(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}$') phone_re = re.compile(r'^[A-PR-Y0-9]{3}-[A-PR-Y0-9]{3}-[A-PR-Y0-9]{4}$', re.IGNORECASE) diff --git a/docs/model-api.txt b/docs/model-api.txt index b27a298d8e..9922072b8a 100644 --- a/docs/model-api.txt +++ b/docs/model-api.txt @@ -244,7 +244,7 @@ Here are all available field types: ``EmailField`` A ``CharField`` that checks that the value is a valid e-mail address. - (Currently, this is a loose test.) This doesn't accept ``maxlength``. + This doesn't accept ``maxlength``. ``FileField`` A file-upload field. From 1b626e40839d24f2e7cd09ca7a4d5bd440ca49e7 Mon Sep 17 00:00:00 2001 From: Adrian Holovaty Date: Sun, 6 Nov 2005 23:02:54 +0000 Subject: [PATCH 22/39] Fixed #723 -- Documented 'django-admin installperms' git-svn-id: http://code.djangoproject.com/svn/django/trunk@1107 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- docs/django-admin.txt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/django-admin.txt b/docs/django-admin.txt index ad7ee9d137..a7a15f2a2e 100644 --- a/docs/django-admin.txt +++ b/docs/django-admin.txt @@ -88,6 +88,13 @@ install [modelmodule modelmodule ...] Executes the equivalent of ``sqlall`` for the given model module(s). +installperms [modelmodule modelmodule ...] +------------------------------------------ + +Installs any admin permissions for the given model module(s) that aren't +already installed in the database. Outputs a message telling how many +permissions were added, if any. + runserver [optional port number, or ipaddr:port] ------------------------------------------------ From af4bef19add46f4673ac4c648c8805808ed65eec Mon Sep 17 00:00:00 2001 From: Adrian Holovaty Date: Sun, 6 Nov 2005 23:08:29 +0000 Subject: [PATCH 23/39] Documented meta.Admin list_select_related option from [1092] git-svn-id: http://code.djangoproject.com/svn/django/trunk@1108 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- docs/model-api.txt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/model-api.txt b/docs/model-api.txt index 9922072b8a..a9190c78fe 100644 --- a/docs/model-api.txt +++ b/docs/model-api.txt @@ -900,6 +900,14 @@ object, which takes the following parameters. All are optional. (This example also has ``search_fields`` defined; see below). +``list_select_related`` + Either ``True`` or ``False``. Default is ``False``. If ``True``, the admin + change list page will use the ``select_related`` database-API parameter in + its query that retrieves the list of items. + + Note that Django will use ``select_related``, regardless of this setting, + if one of the ``list_display`` fields is a ``ForeignKey``. + ``ordering`` A list or tuple (see the `META options`_, above) that gives a different ordering for the admin change list. If this isn't given, the From 5defabca111fd56011395e81cf250c3c58143589 Mon Sep 17 00:00:00 2001 From: Adrian Holovaty Date: Sun, 6 Nov 2005 23:16:24 +0000 Subject: [PATCH 24/39] Reordered MEDIA_ROOT and MEDIA_URL in global_settings so they're not in the COMMENTS section git-svn-id: http://code.djangoproject.com/svn/django/trunk@1109 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/conf/global_settings.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/django/conf/global_settings.py b/django/conf/global_settings.py index 6a181ba40e..b8d4d06e58 100644 --- a/django/conf/global_settings.py +++ b/django/conf/global_settings.py @@ -146,6 +146,14 @@ SECRET_KEY = '' # Path to the "jing" executable -- needed to validate XMLFields JING_PATH = "/usr/bin/jing" +# Absolute path to the directory that holds media. +# Example: "/home/media/media.lawrence.com/" +MEDIA_ROOT = '' + +# URL that handles the media served from MEDIA_ROOT. +# Example: "http://media.lawrence.com" +MEDIA_URL = '' + ############## # MIDDLEWARE # ############## @@ -203,11 +211,3 @@ COMMENTS_FIRST_FEW = 0 # A tuple of IP addresses that have been banned from participating in various # Django-powered features. BANNED_IPS = () - -# Absolute path to the directory that holds media. -# Example: "/home/media/media.lawrence.com/" -MEDIA_ROOT = '' - -# URL that handles the media served from MEDIA_ROOT. -# Example: "http://media.lawrence.com" -MEDIA_URL = '' From 92241e21b80efd0884730fb908c79eb45a847eac Mon Sep 17 00:00:00 2001 From: Adrian Holovaty Date: Sun, 6 Nov 2005 23:30:06 +0000 Subject: [PATCH 25/39] Reformatted docs/templates.txt to put headings in filter and tag references, so each tag/filter gets a permalink git-svn-id: http://code.djangoproject.com/svn/django/trunk@1110 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- docs/templates.txt | 1039 +++++++++++++++++++++++++------------------- 1 file changed, 586 insertions(+), 453 deletions(-) diff --git a/docs/templates.txt b/docs/templates.txt index debec88a74..2e681f384e 100644 --- a/docs/templates.txt +++ b/docs/templates.txt @@ -289,567 +289,700 @@ available, and what they do. Built-in tag reference ---------------------- -``block`` - Define a block that can be overridden by child templates. See `Template - inheritance`_ for more information. +block +~~~~~ -``comment`` - Ignore everything between ``{% comment %}`` and ``{% endcomment %}`` +Define a block that can be overridden by child templates. See +`Template inheritance`_ for more information. -``cycle`` - Cycle among the given strings each time this tag is encountered. +comment +~~~~~~~ - Within a loop, cycles among the given strings each time through - the loop:: +Ignore everything between ``{% comment %}`` and ``{% endcomment %}`` - {% for o in some_list %} - - ... - - {% endfor %} +cycle +~~~~~ - Outside of a loop, give the values a unique name the first time you call it, - then use that name each successive time through:: +Cycle among the given strings each time this tag is encountered. - ... - ... - ... +Within a loop, cycles among the given strings each time through the loop:: - You can use any number of values, separated by commas. Make sure not to put - spaces between the values -- only commas. - -``debug`` - Output a whole load of debugging information, including the current context and - imported modules. - -``extends`` - Signal that this template extends a parent template. - - This tag may be used in two ways: ``{% extends "base" %}`` (with quotes) uses - the literal value "base" as the name of the parent template to extend, or ``{% - extends variable %}`` uses the value of ``variable`` as the name of the parent - template to extend. - - See `Template inheritance`_ for more information. - -``filter`` - Filter the contents of the variable through variable filters. - - Filters can also be piped through each other, and they can have arguments -- - just like in variable syntax. - - Sample usage:: - - {% filter escape|lower %} - This text will be HTML-escaped, and will appear in all lowercase. - {% endfilter %} - -``firstof`` - Outputs the first variable passed that is not False. Outputs nothing if all the - passed variables are False. - - Sample usage:: - - {% firstof var1 var2 var3 %} - - This is equivalent to:: - - {% if var1 %} - {{ var1 }} - {% else %}{% if var2 %} - {{ var2 }} - {% else %}{% if var3 %} - {{ var3 }} - {% endif %}{% endif %}{% endif %} - - but obviously much cleaner! - -``for`` - Loop over each item in an array. For example, to display a list of athletes - given ``athlete_list``:: - -
    - {% for athlete in athlete_list %} -
  • {{ athlete.name }}
  • - {% endfor %} -
- - You can also loop over a list in reverse by using ``{% for obj in list reversed %}``. - - The for loop sets a number of variables available within the loop: - - ========================== ================================================ - Variable Description - ========================== ================================================ - ``forloop.counter`` The current iteration of the loop (1-indexed) - ``forloop.counter0`` The current iteration of the loop (0-indexed) - ``forloop.revcounter`` The number of iterations from the end of the - loop (1-indexed) - ``forloop.revcounter0`` The number of iterations from the end of the - loop (0-indexed) - ``forloop.first`` True if this is the first time through the loop - ``forloop.last`` True if this is the last time through the loop - ``forloop.parentloop`` For nested loops, this is the loop "above" the - current one - ========================== ================================================ - -``if`` - The ``{% if %}`` tag evaluates a variable, and if that variable is "true" (i.e. - exists, is not empty, and is not a false boolean value) the contents of the - block are output:: - - {% if athlete_list %} - Number of athletes: {{ athlete_list|length }} - {% else %} - No athletes. - {% endif %} - - In the above, if ``athlete_list`` is not empty, the number of athletes will be - displayed by the ``{{ athlete_list|length }}`` variable. - - As you can see, the ``if`` tag can take an option ``{% else %}`` clause that - will be displayed if the test fails. - - ``if`` tags may use ``or`` or ``not`` to test a number of variables or to negate - a given variable:: - - {% if not athlete_list %} - There are no athletes. - {% endif %} - - {% if athlete_list or coach_list %} - There are some athletes or some coaches. - {% endif %} - - {% if not athlete_list or coach_list %} - There are no athletes or there are some coaches (OK, so - writing English translations of boolean logic sounds - stupid; it's not my fault). - {% endif %} - - For simplicity, ``if`` tags do not allow ``and`` clauses; use nested ``if`` - tags instead:: - - {% if athlete_list %} - {% if coach_list %} - Number of athletes: {{ athlete_list|length }}. - Number of coaches: {{ coach_list|length }}. - {% endif %} - {% endif %} - -``ifchanged`` - Check if a value has changed from the last iteration of a loop. - - The 'ifchanged' block tag is used within a loop. It checks its own rendered - contents against its previous state and only displays its content if the value - has changed:: - -

Archive for {{ year }}

- - {% for day in days %} - {% ifchanged %}

{{ day|date:"F" }}

{% endifchanged %} - {{ day|date:"j" }} - {% endfor %} - -``ifequal`` - Output the contents of the block if the two arguments equal each other. - - Example:: - - {% ifequal user.id comment.user_id %} + {% for o in some_list %} + ... - {% endifequal %} + + {% endfor %} - As in the ``{% if %}`` tag, an ``{% else %}`` clause is optional. +Outside of a loop, give the values a unique name the first time you call it, +then use that name each successive time through:: - The arguments can be hard-coded strings, so the following is valid:: + ... + ... + ... - {% ifequal user.username "adrian" %} - ... - {% endifequal %} +You can use any number of values, separated by commas. Make sure not to put +spaces between the values -- only commas. -``ifnotequal`` - Just like ``ifequal``, except it tests that the two arguments are not equal. +debug +~~~~~ -``load`` - Load a custom template tag set. +Output a whole load of debugging information, including the current context and +imported modules. - See `Custom tag and filter libraries`_ for more information. +extends +~~~~~~~ -``now`` - Display the date, formatted according to the given string. +Signal that this template extends a parent template. - Uses the same format as PHP's ``date()`` function (http://php.net/date) - with some custom extensions. +This tag may be used in two ways: ``{% extends "base" %}`` (with quotes) uses +the literal value "base" as the name of the parent template to extend, or ``{% +extends variable %}`` uses the value of ``variable`` as the name of the parent +template to extend. - Available format strings: +See `Template inheritance`_ for more information. - ================ ====================================== ===================== - Format character Description Example output - ================ ====================================== ===================== - a ``'a.m.'`` or ``'p.m.'`` (Note that ``'a.m.'`` - this is slightly different than PHP's - output, because this includes periods - to match Associated Press style.) - A ``'AM'`` or ``'PM'``. ``'AM'`` - B Not implemented. - d Day of the month, 2 digits with ``'01'`` to ``'31'`` - leading zeros. - D Day of the week, textual, 3 letters. ``'Fri'`` - f Time, in 12-hour hours and minutes, ``'1'``, ``'1:30'`` - with minutes left off if they're zero. - Proprietary extension. - F Month, textual, long. ``'January'`` - g Hour, 12-hour format without leading ``'1'`` to ``'12'`` - zeros. - G Hour, 24-hour format without leading ``'0'`` to ``'23'`` - zeros. - h Hour, 12-hour format. ``'01'`` to ``'12'`` - H Hour, 24-hour format. ``'00'`` to ``'23'`` - i Minutes. ``'00'`` to ``'59'`` - I Not implemented. - j Day of the month without leading ``'1'`` to ``'31'`` - zeros. - l Day of the week, textual, long. ``'Friday'`` - L Boolean for whether it's a leap year. ``True`` or ``False`` - m Month, 2 digits with leading zeros. ``'01'`` to ``'12'`` - M Month, textual, 3 letters. ``'Jan'`` - n Month without leading zeros. ``'1'`` to ``'12'`` - N Month abbreviation in Associated Press ``'Jan.'``, ``'Feb.'``, ``'March'``, ``'May'`` - style. Proprietary extension. - O Difference to Greenwich time in hours. ``'+0200'`` - P Time, in 12-hour hours, minutes and ``'1 a.m.'``, ``'1:30 p.m.'``, ``'midnight'``, ``'noon'``, ``'12:30 p.m.'`` - 'a.m.'/'p.m.', with minutes left off - if they're zero and the special-case - strings 'midnight' and 'noon' if - appropriate. Proprietary extension. - r RFC 822 formatted date. ``'Thu, 21 Dec 2000 16:01:07 +0200'`` - s Seconds, 2 digits with leading zeros. ``'00'`` to ``'59'`` - S English ordinal suffix for day of the ``'st'``, ``'nd'``, ``'rd'`` or ``'th'`` - month, 2 characters. - t Not implemented. - T Time zone of this machine. ``'EST'``, ``'MDT'`` - U Not implemented. - w Day of the week, digits without ``'0'`` (Sunday) to ``'6'`` (Saturday) - leading zeros. - W ISO-8601 week number of year, with ``1``, ``23`` - weeks starting on Monday. - y Year, 2 digits. ``'99'`` - Y Year, 4 digits. ``'1999'`` - z Day of the year. ``0`` to ``365`` - Z Time zone offset in seconds. The ``-43200`` to ``43200`` - offset for timezones west of UTC is - always negative, and for those east of - UTC is always positive. - ================ ====================================== ===================== +filter +~~~~~~ - Example:: +Filter the contents of the variable through variable filters. - It is {% now "jS F Y H:i" %} +Filters can also be piped through each other, and they can have arguments -- +just like in variable syntax. - Note that you can backslash-escape a format string if you want to use the - "raw" value. In this example, "f" is backslash-escaped, because otherwise - "f" is a format string that displays the time. The "o" doesn't need to be - escaped, because it's not a format character.:: +Sample usage:: - It is the {% "jS o\f F" %} + {% filter escape|lower %} + This text will be HTML-escaped, and will appear in all lowercase. + {% endfilter %} - (Displays "It is the 4th of September" %} +firstof +~~~~~~~ -``regroup`` - Regroup a list of alike objects by a common attribute. +Outputs the first variable passed that is not False. Outputs nothing if all the +passed variables are False. - This complex tag is best illustrated by use of an example: say that ``people`` - is a list of ``Person`` objects that have ``first_name``, ``last_name``, and - ``gender`` attributes, and you'd like to display a list that looks like: +Sample usage:: - * Male: - * George Bush - * Bill Clinton - * Female: - * Margaret Thatcher - * Condoleezza Rice - * Unknown: - * Pat Smith + {% firstof var1 var2 var3 %} - The following snippet of template code would accomplish this dubious task:: +This is equivalent to:: - {% regroup people by gender as grouped %} + {% if var1 %} + {{ var1 }} + {% else %}{% if var2 %} + {{ var2 }} + {% else %}{% if var3 %} + {{ var3 }} + {% endif %}{% endif %}{% endif %} + +for +~~~ + +Loop over each item in an array. For example, to display a list of athletes +given ``athlete_list``:: + +
    + {% for athlete in athlete_list %} +
  • {{ athlete.name }}
  • + {% endfor %} +
+ +You can also loop over a list in reverse by using ``{% for obj in list reversed %}``. + +The for loop sets a number of variables available within the loop: + + ========================== ================================================ + Variable Description + ========================== ================================================ + ``forloop.counter`` The current iteration of the loop (1-indexed) + ``forloop.counter0`` The current iteration of the loop (0-indexed) + ``forloop.revcounter`` The number of iterations from the end of the + loop (1-indexed) + ``forloop.revcounter0`` The number of iterations from the end of the + loop (0-indexed) + ``forloop.first`` True if this is the first time through the loop + ``forloop.last`` True if this is the last time through the loop + ``forloop.parentloop`` For nested loops, this is the loop "above" the + current one + ========================== ================================================ + +if +~~ + +The ``{% if %}`` tag evaluates a variable, and if that variable is "true" (i.e. +exists, is not empty, and is not a false boolean value) the contents of the +block are output:: + + {% if athlete_list %} + Number of athletes: {{ athlete_list|length }} + {% else %} + No athletes. + {% endif %} + +In the above, if ``athlete_list`` is not empty, the number of athletes will be +displayed by the ``{{ athlete_list|length }}`` variable. + +As you can see, the ``if`` tag can take an option ``{% else %}`` clause that +will be displayed if the test fails. + +``if`` tags may use ``or`` or ``not`` to test a number of variables or to negate +a given variable:: + + {% if not athlete_list %} + There are no athletes. + {% endif %} + + {% if athlete_list or coach_list %} + There are some athletes or some coaches. + {% endif %} + + {% if not athlete_list or coach_list %} + There are no athletes or there are some coaches (OK, so + writing English translations of boolean logic sounds + stupid; it's not my fault). + {% endif %} + +For simplicity, ``if`` tags do not allow ``and`` clauses; use nested ``if`` +tags instead:: + + {% if athlete_list %} + {% if coach_list %} + Number of athletes: {{ athlete_list|length }}. + Number of coaches: {{ coach_list|length }}. + {% endif %} + {% endif %} + +ifchanged +~~~~~~~~~ + +Check if a value has changed from the last iteration of a loop. + +The 'ifchanged' block tag is used within a loop. It checks its own rendered +contents against its previous state and only displays its content if the value +has changed:: + +

Archive for {{ year }}

+ + {% for day in days %} + {% ifchanged %}

{{ day|date:"F" }}

{% endifchanged %} + {{ day|date:"j" }} + {% endfor %} + +ifequal +~~~~~~~ + +Output the contents of the block if the two arguments equal each other. + +Example:: + + {% ifequal user.id comment.user_id %} + ... + {% endifequal %} + +As in the ``{% if %}`` tag, an ``{% else %}`` clause is optional. + +The arguments can be hard-coded strings, so the following is valid:: + + {% ifequal user.username "adrian" %} + ... + {% endifequal %} + +ifnotequal +~~~~~~~~~~ + +Just like ``ifequal``, except it tests that the two arguments are not equal. + +load +~~~~ + +Load a custom template tag set. + +See `Custom tag and filter libraries`_ for more information. + +now +~~~ + +Display the date, formatted according to the given string. + +Uses the same format as PHP's ``date()`` function (http://php.net/date) +with some custom extensions. + +Available format strings: + +================ ====================================== ===================== +Format character Description Example output +================ ====================================== ===================== +a ``'a.m.'`` or ``'p.m.'`` (Note that ``'a.m.'`` + this is slightly different than PHP's + output, because this includes periods + to match Associated Press style.) +A ``'AM'`` or ``'PM'``. ``'AM'`` +B Not implemented. +d Day of the month, 2 digits with ``'01'`` to ``'31'`` + leading zeros. +D Day of the week, textual, 3 letters. ``'Fri'`` +f Time, in 12-hour hours and minutes, ``'1'``, ``'1:30'`` + with minutes left off if they're zero. + Proprietary extension. +F Month, textual, long. ``'January'`` +g Hour, 12-hour format without leading ``'1'`` to ``'12'`` + zeros. +G Hour, 24-hour format without leading ``'0'`` to ``'23'`` + zeros. +h Hour, 12-hour format. ``'01'`` to ``'12'`` +H Hour, 24-hour format. ``'00'`` to ``'23'`` +i Minutes. ``'00'`` to ``'59'`` +I Not implemented. +j Day of the month without leading ``'1'`` to ``'31'`` + zeros. +l Day of the week, textual, long. ``'Friday'`` +L Boolean for whether it's a leap year. ``True`` or ``False`` +m Month, 2 digits with leading zeros. ``'01'`` to ``'12'`` +M Month, textual, 3 letters. ``'Jan'`` +n Month without leading zeros. ``'1'`` to ``'12'`` +N Month abbreviation in Associated Press ``'Jan.'``, ``'Feb.'``, ``'March'``, ``'May'`` + style. Proprietary extension. +O Difference to Greenwich time in hours. ``'+0200'`` +P Time, in 12-hour hours, minutes and ``'1 a.m.'``, ``'1:30 p.m.'``, ``'midnight'``, ``'noon'``, ``'12:30 p.m.'`` + 'a.m.'/'p.m.', with minutes left off + if they're zero and the special-case + strings 'midnight' and 'noon' if + appropriate. Proprietary extension. +r RFC 822 formatted date. ``'Thu, 21 Dec 2000 16:01:07 +0200'`` +s Seconds, 2 digits with leading zeros. ``'00'`` to ``'59'`` +S English ordinal suffix for day of the ``'st'``, ``'nd'``, ``'rd'`` or ``'th'`` + month, 2 characters. +t Not implemented. +T Time zone of this machine. ``'EST'``, ``'MDT'`` +U Not implemented. +w Day of the week, digits without ``'0'`` (Sunday) to ``'6'`` (Saturday) + leading zeros. +W ISO-8601 week number of year, with ``1``, ``23`` + weeks starting on Monday. +y Year, 2 digits. ``'99'`` +Y Year, 4 digits. ``'1999'`` +z Day of the year. ``0`` to ``365`` +Z Time zone offset in seconds. The ``-43200`` to ``43200`` + offset for timezones west of UTC is + always negative, and for those east of + UTC is always positive. +================ ====================================== ===================== + +Example:: + + It is {% now "jS F Y H:i" %} + +Note that you can backslash-escape a format string if you want to use the +"raw" value. In this example, "f" is backslash-escaped, because otherwise +"f" is a format string that displays the time. The "o" doesn't need to be +escaped, because it's not a format character.:: + + It is the {% "jS o\f F" %} + +(Displays "It is the 4th of September" %} + +regroup +~~~~~~~ + +Regroup a list of alike objects by a common attribute. + +This complex tag is best illustrated by use of an example: say that ``people`` +is a list of ``Person`` objects that have ``first_name``, ``last_name``, and +``gender`` attributes, and you'd like to display a list that looks like: + + * Male: + * George Bush + * Bill Clinton + * Female: + * Margaret Thatcher + * Condoleezza Rice + * Unknown: + * Pat Smith + +The following snippet of template code would accomplish this dubious task:: + + {% regroup people by gender as grouped %} +
    + {% for group in grouped %} +
  • {{ group.grouper }}
      - {% for group in grouped %} -
    • {{ group.grouper }} -
        - {% for item in group.list %} -
      • {{ item }}
      • - {% endfor %} -
      - {% endfor %} + {% for item in group.list %} +
    • {{ item }}
    • + {% endfor %}
    + {% endfor %} +
- As you can see, ``{% regroup %}`` populates a variable with a list of objects - with ``grouper`` and ``list`` attributes. ``grouper`` contains the item that - was grouped by; ``list`` contains the list of objects that share that - ``grouper``. In this case, ``grouper`` would be ``Male``, ``Female`` and - ``Unknown``, and ``list`` is the list of people with those genders. +As you can see, ``{% regroup %}`` populates a variable with a list of objects +with ``grouper`` and ``list`` attributes. ``grouper`` contains the item that +was grouped by; ``list`` contains the list of objects that share that +``grouper``. In this case, ``grouper`` would be ``Male``, ``Female`` and +``Unknown``, and ``list`` is the list of people with those genders. - Note that ``{% regroup %}`` does not work when the list to be grouped is not - sorted by the key you are grouping by! This means that if your list of people - was not sorted by gender, you'd need to make sure it is sorted before using it, - i.e.:: +Note that ``{% regroup %}`` does not work when the list to be grouped is not +sorted by the key you are grouping by! This means that if your list of people +was not sorted by gender, you'd need to make sure it is sorted before using it, +i.e.:: - {% regroup people|dictsort:"gender" by gender as grouped %} + {% regroup people|dictsort:"gender" by gender as grouped %} -``ssi`` - Output the contents of a given file into the page. +ssi +~~~ - Like a simple "include" tag, ``{% ssi %}`` includes the contents of another - file -- which must be specified using an absolute path -- in the current - page:: +Output the contents of a given file into the page. - {% ssi /home/html/ljworld.com/includes/right_generic.html %} +Like a simple "include" tag, ``{% ssi %}`` includes the contents of another +file -- which must be specified using an absolute path -- in the current +page:: - If the optional "parsed" parameter is given, the contents of the included - file are evaluated as template code, within the current context:: + {% ssi /home/html/ljworld.com/includes/right_generic.html %} - {% ssi /home/html/ljworld.com/includes/right_generic.html parsed %} +If the optional "parsed" parameter is given, the contents of the included +file are evaluated as template code, within the current context:: - Note that if you use ``{% ssi %}``, you'll need to define - `ALLOWED_INCLUDE_ROOTS`_ in your Django settings, as a security measure. + {% ssi /home/html/ljworld.com/includes/right_generic.html parsed %} + +Note that if you use ``{% ssi %}``, you'll need to define +`ALLOWED_INCLUDE_ROOTS`_ in your Django settings, as a security measure. .. _ALLOWED_INCLUDE_ROOTS: http://www.djangoproject.com/documentation/settings/#allowed-include-roots -``templatetag`` - Output one of the bits used to compose template tags. +templatetag +~~~~~~~~~~~ - Since the template system has no concept of "escaping", to display one of the - bits used in template tags, you must use the ``{% templatetag %}`` tag. +Output one of the syntax characters used to compose template tags. - The argument tells which template bit to output: +Since the template system has no concept of "escaping", to display one of the +bits used in template tags, you must use the ``{% templatetag %}`` tag. - ================== ======= - Argument Outputs - ================== ======= - ``openblock`` ``{%`` - ``closeblock`` ``%}`` - ``openvariable`` ``{{`` - ``closevariable`` ``}}`` - ================== ======= +The argument tells which template bit to output: -``widthratio`` - For creating bar charts and such, this tag calculates the ratio of a given value - to a maximum value, and then applies that ratio to a constant. + ================== ======= + Argument Outputs + ================== ======= + ``openblock`` ``{%`` + ``closeblock`` ``%}`` + ``openvariable`` ``{{`` + ``closevariable`` ``}}`` + ================== ======= - For example:: +widthratio +~~~~~~~~~~ - +For creating bar charts and such, this tag calculates the ratio of a given value +to a maximum value, and then applies that ratio to a constant. - Above, if ``this_value`` is 175 and ``max_value`` is 200, the the image in the - above example will be 88 pixels wide (because 175/200 = .875; .875 * 100 = 87.5 - which is rounded up to 88). +For example:: + + + +Above, if ``this_value`` is 175 and ``max_value`` is 200, the the image in the +above example will be 88 pixels wide (because 175/200 = .875; .875 * 100 = 87.5 +which is rounded up to 88). Built-in filter reference ------------------------- -``add`` - Adds the arg to the value. +add +~~~ -``addslashes`` - Adds slashes. Useful for passing strings to JavaScript, for example. +Adds the arg to the value. -``capfirst`` - Capitalizes the first character of the value. +addslashes +~~~~~~~~~~ -``center`` - Centers the value in a field of a given width. +Adds slashes. Useful for passing strings to JavaScript, for example. -``cut`` - Removes all values of arg from the given string. -``date`` - Formats a date according to the given format (same as the ``now`` tag). +capfirst +~~~~~~~~ -``default`` - If value is unavailable, use given default. +Capitalizes the first character of the value. -``default_if_none`` - If value is ``None``, use given default. +center +~~~~~~ -``dictsort`` - Takes a list of dicts, returns that list sorted by the property given in the - argument. +Centers the value in a field of a given width. -``dictsortreversed`` - Takes a list of dicts, returns that list sorted in reverse order by the property - given in the argument. +cut +~~~ -``divisibleby`` - Returns true if the value is divisible by the argument. +Removes all values of arg from the given string. -``escape`` - Escapes a string's HTML. +date +~~~~ -``filesizeformat`` - Format the value like a 'human-readable' file size (i.e. 13 KB, 4.1 MB, 102 - bytes, etc). +Formats a date according to the given format (same as the ``now`` tag). -``first`` - Returns the first item in a list. +default +~~~~~~~ -``fix_ampersands`` - Replaces ampersands with ``&`` entities. +If value is unavailable, use given default. -``floatformat`` - Displays a floating point number as 34.2 (with one decimal places) - but - only if there's a point to be displayed. +default_if_none +~~~~~~~~~~~~~~~ -``get_digit`` - Given a whole number, returns the requested digit of it, where 1 is the - right-most digit, 2 is the second-right-most digit, etc. Returns the - original value for invalid input (if input or argument is not an integer, - or if argument is less than 1). Otherwise, output is always an integer. +If value is ``None``, use given default. -``join`` - Joins a list with a string, like Python's ``str.join(list)``. +dictsort +~~~~~~~~ -``length`` - Returns the length of the value. Useful for lists. +Takes a list of dicts, returns that list sorted by the property given in the +argument. -``length_is`` - Returns a boolean of whether the value's length is the argument. +dictsortreversed +~~~~~~~~~~~~~~~~ -``linebreaks`` - Converts newlines into

and
s. +Takes a list of dicts, returns that list sorted in reverse order by the +property given in the argument. -``linebreaksbr`` - Converts newlines into
s. +divisibleby +~~~~~~~~~~~ -``linenumbers`` - Displays text with line numbers. +Returns true if the value is divisible by the argument. -``ljust`` - Left-aligns the value in a field of a given width. +escape +~~~~~~ - **Argument:** field size +Escapes a string's HTML. Specifically, it makes these replacements: -``lower`` - Converts a string into all lowercase. + * ``"&"`` to ``"&"`` + * ``<`` to ``"<"`` + * ``>`` to ``">"`` + * ``'"'`` (double quote) to ``"""`` -``make_list`` - Returns the value turned into a list. For an integer, it's a list of - digits. For a string, it's a list of characters. +filesizeformat +~~~~~~~~~~~~~~ -``phone2numeric`` - Takes a phone number and converts it in to its numerical equivalent. +Format the value like a 'human-readable' file size (i.e. 13 KB, 4.1 MB, 102 +bytes, etc). -``pluralize`` - Returns 's' if the value is not 1, for '1 vote' vs. '2 votes'. +first +~~~~~ -``pprint`` - A wrapper around pprint.pprint -- for debugging, really. +Returns the first item in a list. -``random`` - Returns a random item from the list. +fix_ampersands +~~~~~~~~~~~~~~ -``removetags`` - Removes a space separated list of [X]HTML tags from the output. +Replaces ampersands with ``&`` entities. -``rjust`` - Right-aligns the value in a field of a given width. +floatformat - **Argument:** field size +Displays a floating point number as 34.2 (with one decimal places) -- but only +if there's a point to be displayed. -``slice`` - Returns a slice of the list. +get_digit +~~~~~~~~~ - Uses the same syntax as Python's list slicing; see - http://diveintopython.org/native_data_types/lists.html#odbchelper.list.slice - for an introduction. +Given a whole number, returns the requested digit of it, where 1 is the +right-most digit, 2 is the second-right-most digit, etc. Returns the original +value for invalid input (if input or argument is not an integer, or if argument +is less than 1). Otherwise, output is always an integer. - Example: ``{{ some_list|slice:":2" }}`` +join +~~~~ -``slugify`` - Converts to lowercase, removes non-word characters (alphanumerics and - underscores) and converts spaces to hyphens. Also strips leading and - trailing whitespace. +Joins a list with a string, like Python's ``str.join(list)``. -``stringformat`` - Formats the variable according to the argument, a string formatting specifier. - This specifier uses Python string formating syntax, with the exception that - the leading "%" is dropped. +length +~~~~~~ - See http://docs.python.org/lib/typesseq-strings.html for documentation - of Python string formatting +Returns the length of the value. Useful for lists. -``striptags`` - Strips all [X]HTML tags. +length_is +~~~~~~~~~ -``time`` - Formats a time according to the given format (same as the ``now`` tag). +Returns a boolean of whether the value's length is the argument. -``timesince`` - Formats a date as the time since that date (i.e. "4 days, 6 hours"). +linebreaks +~~~~~~~~~~ -``title`` - Converts a string into titlecase. +Converts newlines into

and
s. -``truncatewords`` - Truncates a string after a certain number of words. +linebreaksbr +~~~~~~~~~~~~ - **Argument:** Number of words to truncate after +Converts newlines into
s. -``unordered_list`` - Recursively takes a self-nested list and returns an HTML unordered list -- - WITHOUT opening and closing

    tags. +linenumbers +~~~~~~~~~~~ - The list is assumed to be in the proper format. For example, if ``var`` contains - ``['States', [['Kansas', [['Lawrence', []], ['Topeka', []]]], ['Illinois', []]]]``, - then ``{{ var|unordered_list }}`` would return:: +Displays text with line numbers. -
  • States -
      -
    • Kansas -
        -
      • Lawrence
      • -
      • Topeka
      • -
      -
    • -
    • Illinois
    • -
    -
  • +ljust +~~~~~ -``upper`` - Converts a string into all uppercase. +Left-aligns the value in a field of a given width. -``urlencode`` - Escapes a value for use in a URL. +**Argument:** field size -``urlize`` - Converts URLs in plain text into clickable links. +lower +~~~~~ -``urlizetrunc`` - Converts URLs into clickable links, truncating URLs to the given character - limit. +Converts a string into all lowercase. - **Argument:** Length to truncate URLs to +make_list +~~~~~~~~~ -``wordcount`` - Returns the number of words. +Returns the value turned into a list. For an integer, it's a list of +digits. For a string, it's a list of characters. -``wordwrap`` - Wraps words at specified line length. +phone2numeric +~~~~~~~~~~~~~ - **Argument:** number of words at which to wrap the text +Converts a phone number to its numerical equivalent. -``yesno`` - Given a string mapping values for true, false and (optionally) None, - returns one of those strings according to the value: +pluralize +~~~~~~~~~ - ========== ====================== ================================== - Value Argument Outputs - ========== ====================== ================================== - ``True`` ``"yeah,no,maybe"`` ``yeah`` - ``False`` ``"yeah,no,maybe"`` ``no`` - ``None`` ``"yeah,no,maybe"`` ``maybe`` - ``None`` ``"yeah,no"`` ``"no"`` (converts None to False - if no mapping for None is given) - ========== ====================== ================================== +Returns 's' if the value is not 1, for '1 vote' vs. '2 votes'. + +pprint +~~~~~~ + +A wrapper around pprint.pprint -- for debugging, really. + +random +~~~~~~ + +Returns a random item from the list. + +removetags +~~~~~~~~~~ + +Removes a space separated list of [X]HTML tags from the output. + +rjust +~~~~~ + +Right-aligns the value in a field of a given width. + +**Argument:** field size + +slice +~~~~~ + +Returns a slice of the list. + +Uses the same syntax as Python's list slicing. See +http://diveintopython.org/native_data_types/lists.html#odbchelper.list.slice +for an introduction. + +Example: ``{{ some_list|slice:":2" }}`` + +slugify +~~~~~~~ + +Converts to lowercase, removes non-word characters (alphanumerics and +underscores) and converts spaces to hyphens. Also strips leading and trailing +whitespace. + +stringformat +~~~~~~~~~~~~ + +Formats the variable according to the argument, a string formatting specifier. +This specifier uses Python string formating syntax, with the exception that +the leading "%" is dropped. + +See http://docs.python.org/lib/typesseq-strings.html for documentation of +Python string formatting + +striptags +~~~~~~~~~ + +Strips all [X]HTML tags. + +time +~~~~ + +Formats a time according to the given format (same as the ``now`` tag). + +timesince +~~~~~~~~~ + +Formats a date as the time since that date (i.e. "4 days, 6 hours"). + +title +~~~~~ + +Converts a string into titlecase. + +truncatewords +~~~~~~~~~~~~~ + +Truncates a string after a certain number of words. + +**Argument:** Number of words to truncate after + +unordered_list +~~~~~~~~~~~~~~ + +Recursively takes a self-nested list and returns an HTML unordered list -- +WITHOUT opening and closing
      tags. + +The list is assumed to be in the proper format. For example, if ``var`` contains +``['States', [['Kansas', [['Lawrence', []], ['Topeka', []]]], ['Illinois', []]]]``, +then ``{{ var|unordered_list }}`` would return:: + +
    • States +
        +
      • Kansas +
          +
        • Lawrence
        • +
        • Topeka
        • +
        +
      • +
      • Illinois
      • +
      +
    • + +upper +~~~~~ + +Converts a string into all uppercase. + +urlencode +~~~~~~~~~ + +Escapes a value for use in a URL. + +urlize +~~~~~~ + +Converts URLs in plain text into clickable links. + +urlizetrunc +~~~~~~~~~~~ + +Converts URLs into clickable links, truncating URLs to the given character limit. + +**Argument:** Length to truncate URLs to + +wordcount +~~~~~~~~~ + +Returns the number of words. + +wordwrap +~~~~~~~~ + +Wraps words at specified line length. + +**Argument:** number of words at which to wrap the text + +yesno +~~~~~ + +Given a string mapping values for true, false and (optionally) None, +returns one of those strings according to the value: + +========== ====================== ================================== +Value Argument Outputs +========== ====================== ================================== +``True`` ``"yeah,no,maybe"`` ``yeah`` +``False`` ``"yeah,no,maybe"`` ``no`` +``None`` ``"yeah,no,maybe"`` ``maybe`` +``None`` ``"yeah,no"`` ``"no"`` (converts None to False + if no mapping for None is given) +========== ====================== ================================== From aa89487fd0cd72857cf95fd5fdd66833ba960b55 Mon Sep 17 00:00:00 2001 From: Adrian Holovaty Date: Sun, 6 Nov 2005 23:32:22 +0000 Subject: [PATCH 26/39] Fixed ReST bug in [1110] git-svn-id: http://code.djangoproject.com/svn/django/trunk@1111 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- docs/templates.txt | 68 +++++++++++++++++++++++----------------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/docs/templates.txt b/docs/templates.txt index 2e681f384e..0ac8e0172b 100644 --- a/docs/templates.txt +++ b/docs/templates.txt @@ -509,64 +509,64 @@ with some custom extensions. Available format strings: -================ ====================================== ===================== -Format character Description Example output -================ ====================================== ===================== -a ``'a.m.'`` or ``'p.m.'`` (Note that ``'a.m.'`` +================ ======================================== ===================== +Format character Description Example output +================ ======================================== ===================== +a ``'a.m.'`` or ``'p.m.'`` (Note that ``'a.m.'`` this is slightly different than PHP's output, because this includes periods to match Associated Press style.) -A ``'AM'`` or ``'PM'``. ``'AM'`` +A ``'AM'`` or ``'PM'``. ``'AM'`` B Not implemented. -d Day of the month, 2 digits with ``'01'`` to ``'31'`` +d Day of the month, 2 digits with ``'01'`` to ``'31'`` leading zeros. -D Day of the week, textual, 3 letters. ``'Fri'`` -f Time, in 12-hour hours and minutes, ``'1'``, ``'1:30'`` +D Day of the week, textual, 3 letters. ``'Fri'`` +f Time, in 12-hour hours and minutes, ``'1'``, ``'1:30'`` with minutes left off if they're zero. Proprietary extension. -F Month, textual, long. ``'January'`` -g Hour, 12-hour format without leading ``'1'`` to ``'12'`` +F Month, textual, long. ``'January'`` +g Hour, 12-hour format without leading ``'1'`` to ``'12'`` zeros. -G Hour, 24-hour format without leading ``'0'`` to ``'23'`` +G Hour, 24-hour format without leading ``'0'`` to ``'23'`` zeros. -h Hour, 12-hour format. ``'01'`` to ``'12'`` -H Hour, 24-hour format. ``'00'`` to ``'23'`` -i Minutes. ``'00'`` to ``'59'`` +h Hour, 12-hour format. ``'01'`` to ``'12'`` +H Hour, 24-hour format. ``'00'`` to ``'23'`` +i Minutes. ``'00'`` to ``'59'`` I Not implemented. -j Day of the month without leading ``'1'`` to ``'31'`` +j Day of the month without leading ``'1'`` to ``'31'`` zeros. -l Day of the week, textual, long. ``'Friday'`` -L Boolean for whether it's a leap year. ``True`` or ``False`` -m Month, 2 digits with leading zeros. ``'01'`` to ``'12'`` -M Month, textual, 3 letters. ``'Jan'`` -n Month without leading zeros. ``'1'`` to ``'12'`` -N Month abbreviation in Associated Press ``'Jan.'``, ``'Feb.'``, ``'March'``, ``'May'`` +l Day of the week, textual, long. ``'Friday'`` +L Boolean for whether it's a leap year. ``True`` or ``False`` +m Month, 2 digits with leading zeros. ``'01'`` to ``'12'`` +M Month, textual, 3 letters. ``'Jan'`` +n Month without leading zeros. ``'1'`` to ``'12'`` +N Month abbreviation in Associated Press ``'Jan.'``, ``'Feb.'``, ``'March'``, ``'May'`` style. Proprietary extension. -O Difference to Greenwich time in hours. ``'+0200'`` -P Time, in 12-hour hours, minutes and ``'1 a.m.'``, ``'1:30 p.m.'``, ``'midnight'``, ``'noon'``, ``'12:30 p.m.'`` +O Difference to Greenwich time in hours. ``'+0200'`` +P Time, in 12-hour hours, minutes and ``'1 a.m.'``, ``'1:30 p.m.'``, ``'midnight'``, ``'noon'``, ``'12:30 p.m.'`` 'a.m.'/'p.m.', with minutes left off if they're zero and the special-case strings 'midnight' and 'noon' if appropriate. Proprietary extension. -r RFC 822 formatted date. ``'Thu, 21 Dec 2000 16:01:07 +0200'`` -s Seconds, 2 digits with leading zeros. ``'00'`` to ``'59'`` -S English ordinal suffix for day of the ``'st'``, ``'nd'``, ``'rd'`` or ``'th'`` +r RFC 822 formatted date. ``'Thu, 21 Dec 2000 16:01:07 +0200'`` +s Seconds, 2 digits with leading zeros. ``'00'`` to ``'59'`` +S English ordinal suffix for day of the ``'st'``, ``'nd'``, ``'rd'`` or ``'th'`` month, 2 characters. t Not implemented. -T Time zone of this machine. ``'EST'``, ``'MDT'`` +T Time zone of this machine. ``'EST'``, ``'MDT'`` U Not implemented. -w Day of the week, digits without ``'0'`` (Sunday) to ``'6'`` (Saturday) +w Day of the week, digits without ``'0'`` (Sunday) to ``'6'`` (Saturday) leading zeros. -W ISO-8601 week number of year, with ``1``, ``23`` +W ISO-8601 week number of year, with ``1``, ``23`` weeks starting on Monday. -y Year, 2 digits. ``'99'`` -Y Year, 4 digits. ``'1999'`` -z Day of the year. ``0`` to ``365`` -Z Time zone offset in seconds. The ``-43200`` to ``43200`` +y Year, 2 digits. ``'99'`` +Y Year, 4 digits. ``'1999'`` +z Day of the year. ``0`` to ``365`` +Z Time zone offset in seconds. The ``-43200`` to ``43200`` offset for timezones west of UTC is always negative, and for those east of UTC is always positive. -================ ====================================== ===================== +================ ======================================== ===================== Example:: From eb590d894da8b34e7afc82445b48c15274c9a781 Mon Sep 17 00:00:00 2001 From: Adrian Holovaty Date: Sun, 6 Nov 2005 23:33:23 +0000 Subject: [PATCH 27/39] Changed headers in docs/templates.txt to match style from other documentation git-svn-id: http://code.djangoproject.com/svn/django/trunk@1112 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- docs/templates.txt | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/templates.txt b/docs/templates.txt index 0ac8e0172b..bb34b1e92d 100644 --- a/docs/templates.txt +++ b/docs/templates.txt @@ -10,8 +10,8 @@ or CheetahTemplate_, you should feel right at home with Django's templates. .. _Smarty: http://smarty.php.net/ .. _CheetahTemplate: http://www.cheetahtemplate.org/ -What's a template? -================== +Templates +========= A template is simply a text file. All Django templates, by convention, have ".html" extensions, but they can generate any text-based format (HTML, XML, @@ -48,8 +48,8 @@ explained later in this document.:: JavaScript and CSV. You can use the template language for any text-based format. -What's a variable? -================== +Variables +========= Variables look like this: ``{{ variable }}``. When the template engine encounters a variable, it evaluates that variable and replaces it with the @@ -78,8 +78,8 @@ are available in a given template. You can modify variables for display by using **filters**. -What's a filter? -================ +Filters +======= Filters look like this: ``{{ name|lower }}``. This displays the value of the ``{{ name }}`` variable after being filtered through the ``lower`` filter, @@ -95,8 +95,8 @@ Certain filters take arguments. A filter argument looks like this: The `Built-in filter reference`_ below describes all the built-in filters. -What's a tag? -============= +Tags +==== Tags look like this: ``{% tag %}``. Tags are more complex than variables: Some create text in the output, some control flow by performing loops or logic, and From bd0d8a779e90ae2f8c01fbf26133d13760903552 Mon Sep 17 00:00:00 2001 From: Adrian Holovaty Date: Sun, 6 Nov 2005 23:36:28 +0000 Subject: [PATCH 28/39] Fixed ReST bug in templates.txt git-svn-id: http://code.djangoproject.com/svn/django/trunk@1113 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- docs/templates.txt | 116 ++++++++++++++++++++++----------------------- 1 file changed, 58 insertions(+), 58 deletions(-) diff --git a/docs/templates.txt b/docs/templates.txt index bb34b1e92d..0f11f9f9ed 100644 --- a/docs/templates.txt +++ b/docs/templates.txt @@ -509,64 +509,64 @@ with some custom extensions. Available format strings: -================ ======================================== ===================== -Format character Description Example output -================ ======================================== ===================== -a ``'a.m.'`` or ``'p.m.'`` (Note that ``'a.m.'`` - this is slightly different than PHP's - output, because this includes periods - to match Associated Press style.) -A ``'AM'`` or ``'PM'``. ``'AM'`` -B Not implemented. -d Day of the month, 2 digits with ``'01'`` to ``'31'`` - leading zeros. -D Day of the week, textual, 3 letters. ``'Fri'`` -f Time, in 12-hour hours and minutes, ``'1'``, ``'1:30'`` - with minutes left off if they're zero. - Proprietary extension. -F Month, textual, long. ``'January'`` -g Hour, 12-hour format without leading ``'1'`` to ``'12'`` - zeros. -G Hour, 24-hour format without leading ``'0'`` to ``'23'`` - zeros. -h Hour, 12-hour format. ``'01'`` to ``'12'`` -H Hour, 24-hour format. ``'00'`` to ``'23'`` -i Minutes. ``'00'`` to ``'59'`` -I Not implemented. -j Day of the month without leading ``'1'`` to ``'31'`` - zeros. -l Day of the week, textual, long. ``'Friday'`` -L Boolean for whether it's a leap year. ``True`` or ``False`` -m Month, 2 digits with leading zeros. ``'01'`` to ``'12'`` -M Month, textual, 3 letters. ``'Jan'`` -n Month without leading zeros. ``'1'`` to ``'12'`` -N Month abbreviation in Associated Press ``'Jan.'``, ``'Feb.'``, ``'March'``, ``'May'`` - style. Proprietary extension. -O Difference to Greenwich time in hours. ``'+0200'`` -P Time, in 12-hour hours, minutes and ``'1 a.m.'``, ``'1:30 p.m.'``, ``'midnight'``, ``'noon'``, ``'12:30 p.m.'`` - 'a.m.'/'p.m.', with minutes left off - if they're zero and the special-case - strings 'midnight' and 'noon' if - appropriate. Proprietary extension. -r RFC 822 formatted date. ``'Thu, 21 Dec 2000 16:01:07 +0200'`` -s Seconds, 2 digits with leading zeros. ``'00'`` to ``'59'`` -S English ordinal suffix for day of the ``'st'``, ``'nd'``, ``'rd'`` or ``'th'`` - month, 2 characters. -t Not implemented. -T Time zone of this machine. ``'EST'``, ``'MDT'`` -U Not implemented. -w Day of the week, digits without ``'0'`` (Sunday) to ``'6'`` (Saturday) - leading zeros. -W ISO-8601 week number of year, with ``1``, ``23`` - weeks starting on Monday. -y Year, 2 digits. ``'99'`` -Y Year, 4 digits. ``'1999'`` -z Day of the year. ``0`` to ``365`` -Z Time zone offset in seconds. The ``-43200`` to ``43200`` - offset for timezones west of UTC is - always negative, and for those east of - UTC is always positive. -================ ======================================== ===================== + ================ ======================================== ===================== + Format character Description Example output + ================ ======================================== ===================== + a ``'a.m.'`` or ``'p.m.'`` (Note that ``'a.m.'`` + this is slightly different than PHP's + output, because this includes periods + to match Associated Press style.) + A ``'AM'`` or ``'PM'``. ``'AM'`` + B Not implemented. + d Day of the month, 2 digits with ``'01'`` to ``'31'`` + leading zeros. + D Day of the week, textual, 3 letters. ``'Fri'`` + f Time, in 12-hour hours and minutes, ``'1'``, ``'1:30'`` + with minutes left off if they're zero. + Proprietary extension. + F Month, textual, long. ``'January'`` + g Hour, 12-hour format without leading ``'1'`` to ``'12'`` + zeros. + G Hour, 24-hour format without leading ``'0'`` to ``'23'`` + zeros. + h Hour, 12-hour format. ``'01'`` to ``'12'`` + H Hour, 24-hour format. ``'00'`` to ``'23'`` + i Minutes. ``'00'`` to ``'59'`` + I Not implemented. + j Day of the month without leading ``'1'`` to ``'31'`` + zeros. + l Day of the week, textual, long. ``'Friday'`` + L Boolean for whether it's a leap year. ``True`` or ``False`` + m Month, 2 digits with leading zeros. ``'01'`` to ``'12'`` + M Month, textual, 3 letters. ``'Jan'`` + n Month without leading zeros. ``'1'`` to ``'12'`` + N Month abbreviation in Associated Press ``'Jan.'``, ``'Feb.'``, ``'March'``, ``'May'`` + style. Proprietary extension. + O Difference to Greenwich time in hours. ``'+0200'`` + P Time, in 12-hour hours, minutes and ``'1 a.m.'``, ``'1:30 p.m.'``, ``'midnight'``, ``'noon'``, ``'12:30 p.m.'`` + 'a.m.'/'p.m.', with minutes left off + if they're zero and the special-case + strings 'midnight' and 'noon' if + appropriate. Proprietary extension. + r RFC 822 formatted date. ``'Thu, 21 Dec 2000 16:01:07 +0200'`` + s Seconds, 2 digits with leading zeros. ``'00'`` to ``'59'`` + S English ordinal suffix for day of the ``'st'``, ``'nd'``, ``'rd'`` or ``'th'`` + month, 2 characters. + t Not implemented. + T Time zone of this machine. ``'EST'``, ``'MDT'`` + U Not implemented. + w Day of the week, digits without ``'0'`` (Sunday) to ``'6'`` (Saturday) + leading zeros. + W ISO-8601 week number of year, with ``1``, ``23`` + weeks starting on Monday. + y Year, 2 digits. ``'99'`` + Y Year, 4 digits. ``'1999'`` + z Day of the year. ``0`` to ``365`` + Z Time zone offset in seconds. The ``-43200`` to ``43200`` + offset for timezones west of UTC is + always negative, and for those east of + UTC is always positive. + ================ ======================================== ===================== Example:: From 72547994c12bd77b804e7e9a03c94ca80988cc44 Mon Sep 17 00:00:00 2001 From: Adrian Holovaty Date: Sun, 6 Nov 2005 23:37:20 +0000 Subject: [PATCH 29/39] Fixed ReST bug in templates.txt git-svn-id: http://code.djangoproject.com/svn/django/trunk@1114 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- docs/templates.txt | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/docs/templates.txt b/docs/templates.txt index 0f11f9f9ed..955922811b 100644 --- a/docs/templates.txt +++ b/docs/templates.txt @@ -513,59 +513,59 @@ Available format strings: Format character Description Example output ================ ======================================== ===================== a ``'a.m.'`` or ``'p.m.'`` (Note that ``'a.m.'`` - this is slightly different than PHP's - output, because this includes periods - to match Associated Press style.) + this is slightly different than PHP's + output, because this includes periods + to match Associated Press style.) A ``'AM'`` or ``'PM'``. ``'AM'`` B Not implemented. d Day of the month, 2 digits with ``'01'`` to ``'31'`` - leading zeros. + leading zeros. D Day of the week, textual, 3 letters. ``'Fri'`` f Time, in 12-hour hours and minutes, ``'1'``, ``'1:30'`` - with minutes left off if they're zero. - Proprietary extension. + with minutes left off if they're zero. + Proprietary extension. F Month, textual, long. ``'January'`` g Hour, 12-hour format without leading ``'1'`` to ``'12'`` - zeros. + zeros. G Hour, 24-hour format without leading ``'0'`` to ``'23'`` - zeros. + zeros. h Hour, 12-hour format. ``'01'`` to ``'12'`` H Hour, 24-hour format. ``'00'`` to ``'23'`` i Minutes. ``'00'`` to ``'59'`` I Not implemented. j Day of the month without leading ``'1'`` to ``'31'`` - zeros. + zeros. l Day of the week, textual, long. ``'Friday'`` L Boolean for whether it's a leap year. ``True`` or ``False`` m Month, 2 digits with leading zeros. ``'01'`` to ``'12'`` M Month, textual, 3 letters. ``'Jan'`` n Month without leading zeros. ``'1'`` to ``'12'`` N Month abbreviation in Associated Press ``'Jan.'``, ``'Feb.'``, ``'March'``, ``'May'`` - style. Proprietary extension. + style. Proprietary extension. O Difference to Greenwich time in hours. ``'+0200'`` P Time, in 12-hour hours, minutes and ``'1 a.m.'``, ``'1:30 p.m.'``, ``'midnight'``, ``'noon'``, ``'12:30 p.m.'`` - 'a.m.'/'p.m.', with minutes left off - if they're zero and the special-case - strings 'midnight' and 'noon' if - appropriate. Proprietary extension. + 'a.m.'/'p.m.', with minutes left off + if they're zero and the special-case + strings 'midnight' and 'noon' if + appropriate. Proprietary extension. r RFC 822 formatted date. ``'Thu, 21 Dec 2000 16:01:07 +0200'`` s Seconds, 2 digits with leading zeros. ``'00'`` to ``'59'`` S English ordinal suffix for day of the ``'st'``, ``'nd'``, ``'rd'`` or ``'th'`` - month, 2 characters. + month, 2 characters. t Not implemented. T Time zone of this machine. ``'EST'``, ``'MDT'`` U Not implemented. w Day of the week, digits without ``'0'`` (Sunday) to ``'6'`` (Saturday) - leading zeros. + leading zeros. W ISO-8601 week number of year, with ``1``, ``23`` - weeks starting on Monday. + weeks starting on Monday. y Year, 2 digits. ``'99'`` Y Year, 4 digits. ``'1999'`` z Day of the year. ``0`` to ``365`` Z Time zone offset in seconds. The ``-43200`` to ``43200`` - offset for timezones west of UTC is - always negative, and for those east of - UTC is always positive. + offset for timezones west of UTC is + always negative, and for those east of + UTC is always positive. ================ ======================================== ===================== Example:: From d4df074d418ce61b9fca3df7ce887e7a5f54b01f Mon Sep 17 00:00:00 2001 From: Adrian Holovaty Date: Sun, 6 Nov 2005 23:49:03 +0000 Subject: [PATCH 30/39] Fixed #109 -- Created DATE_FORMAT, DATETIME_FORMAT and TIME_FORMAT settings. git-svn-id: http://code.djangoproject.com/svn/django/trunk@1115 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/conf/global_settings.py | 12 +++++++++ django/contrib/admin/views/main.py | 12 +++++---- docs/settings.txt | 39 ++++++++++++++++++++++++++++++ 3 files changed, 58 insertions(+), 5 deletions(-) diff --git a/django/conf/global_settings.py b/django/conf/global_settings.py index b8d4d06e58..a95a956234 100644 --- a/django/conf/global_settings.py +++ b/django/conf/global_settings.py @@ -154,6 +154,18 @@ MEDIA_ROOT = '' # Example: "http://media.lawrence.com" MEDIA_URL = '' +# Default formatting for date objects. See all available format strings here: +# http://www.djangoproject.com/documentation/templates/#now +DATE_FORMAT = 'N j, Y' + +# Default formatting for datetime objects. See all available format strings here: +# http://www.djangoproject.com/documentation/templates/#now +DATETIME_FORMAT = 'N j, Y, P' + +# Default formatting for time objects. See all available format strings here: +# http://www.djangoproject.com/documentation/templates/#now +TIME_FORMAT = 'P' + ############## # MIDDLEWARE # ############## diff --git a/django/contrib/admin/views/main.py b/django/contrib/admin/views/main.py index b188f58947..c4bbee633f 100644 --- a/django/contrib/admin/views/main.py +++ b/django/contrib/admin/views/main.py @@ -10,7 +10,7 @@ from django.models.admin import log from django.utils.html import strip_tags from django.utils.httpwrappers import HttpResponse, HttpResponseRedirect from django.utils.text import capfirst, get_text_list -from django.conf.settings import ADMIN_MEDIA_PREFIX +from django.conf.settings import ADMIN_MEDIA_PREFIX, DATE_FORMAT, DATETIME_FORMAT, TIME_FORMAT import operator # Text to display within changelist table cells if the value is blank. @@ -401,13 +401,15 @@ def change_list(request, app_label, module_name): result_repr = getattr(result, 'get_%s' % f.name)() else: result_repr = EMPTY_CHANGELIST_VALUE - # Dates are special: They're formatted in a certain way. - elif isinstance(f, meta.DateField): + # Dates and times are special: They're formatted in a certain way. + elif isinstance(f, meta.DateField) or isinstance(f, meta.TimeField): if field_val: if isinstance(f, meta.DateTimeField): - result_repr = dateformat.format(field_val, 'N j, Y, P') + result_repr = capfirst(dateformat.format(field_val, DATETIME_FORMAT)) + elif isinstance(f, meta.TimeField): + result_repr = capfirst(dateformat.time_format(field_val, TIME_FORMAT)) else: - result_repr = dateformat.format(field_val, 'N j, Y') + result_repr = capfirst(dateformat.format(field_val, DATE_FORMAT)) else: result_repr = EMPTY_CHANGELIST_VALUE row_class = ' class="nowrap"' diff --git a/docs/settings.txt b/docs/settings.txt index e5dd32f4c1..f14d48b257 100644 --- a/docs/settings.txt +++ b/docs/settings.txt @@ -258,6 +258,32 @@ Default: ``''`` (Empty string) The username to use when connecting to the database. Not used with SQLite. +DATE_FORMAT +----------- + +Default: ``'N j, Y'`` (e.g. ``Feb. 4, 2003``) + +The default formatting to use for date fields on Django admin change-list +pages -- and, possibly, by other parts of the system. See +`allowed date format strings`_. + +See also DATETIME_FORMAT and TIME_FORMAT. + +.. _allowed date format strings: http://www.djangoproject.com/documentation/templates/#now + +DATETIME_FORMAT +--------------- + +Default: ``'N j, Y, P'`` (e.g. ``Feb. 4, 2003, 4 p.m.``) + +The default formatting to use for datetime fields on Django admin change-list +pages -- and, possibly, by other parts of the system. See +`allowed date format strings`_. + +See also DATE_FORMAT and TIME_FORMAT. + +.. _allowed date format strings: http://www.djangoproject.com/documentation/templates/#now + DEBUG ----- @@ -482,6 +508,19 @@ Default: ``('django.core.template.loaders.filesystem.load_template_source',)`` A tuple of callables (as strings) that know how to import templates from various sources. See the `template documentation`_. +TIME_FORMAT +----------- + +Default: ``'P'`` (e.g. ``4 p.m.``) + +The default formatting to use for time fields on Django admin change-list +pages -- and, possibly, by other parts of the system. See +`allowed date format strings`_. + +See also DATE_FORMAT and DATETIME_FORMAT. + +.. _allowed date format strings: http://www.djangoproject.com/documentation/templates/#now + TIME_ZONE --------- From 371f63c210ffd015cdaddba2dc5463f78051be4e Mon Sep 17 00:00:00 2001 From: Adrian Holovaty Date: Sun, 6 Nov 2005 23:53:13 +0000 Subject: [PATCH 31/39] Fixed #742 -- Implemented 't' dateformat. Thanks, radek. git-svn-id: http://code.djangoproject.com/svn/django/trunk@1116 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/utils/dateformat.py | 8 ++------ docs/templates.txt | 2 +- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/django/utils/dateformat.py b/django/utils/dateformat.py index 9913c3f8c4..4e5f2bc8c0 100644 --- a/django/utils/dateformat.py +++ b/django/utils/dateformat.py @@ -13,7 +13,7 @@ Usage: from django.utils.dates import MONTHS, MONTHS_AP, WEEKDAYS from django.utils.tzinfo import LocalTimezone -from calendar import isleap +from calendar import isleap, monthrange import re, time re_formatchars = re.compile(r'(? Date: Sun, 6 Nov 2005 23:57:56 +0000 Subject: [PATCH 32/39] Added note about CacheMiddleware to docs/i18n.txt. git-svn-id: http://code.djangoproject.com/svn/django/trunk@1117 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- docs/i18n.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/i18n.txt b/docs/i18n.txt index 5a75480294..ceda2ade83 100644 --- a/docs/i18n.txt +++ b/docs/i18n.txt @@ -393,6 +393,7 @@ should follow these guidelines: * Make sure it's one of the first middlewares installed. * It should come after ``SessionMiddleware``, because ``LocaleMiddleware`` makes use of session data. + * If you use ``CacheMiddleware``, put ``LocaleMiddleware`` after it. For example, your ``MIDDLEWARE_CLASSES`` might look like this:: From de5ea0d87947cb813ed0696c949e3567c2924efb Mon Sep 17 00:00:00 2001 From: Adrian Holovaty Date: Mon, 7 Nov 2005 03:42:38 +0000 Subject: [PATCH 33/39] Added Slovak (sk) translation. Thanks, Vlado git-svn-id: http://code.djangoproject.com/svn/django/trunk@1118 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/conf/global_settings.py | 1 + django/conf/locale/cs/LC_MESSAGES/django.po | 388 ++++--- django/conf/locale/de/LC_MESSAGES/django.po | 639 +++++++----- django/conf/locale/en/LC_MESSAGES/django.po | 170 +-- django/conf/locale/es/LC_MESSAGES/django.po | 170 +-- django/conf/locale/fr/LC_MESSAGES/django.po | 170 +-- django/conf/locale/gl/LC_MESSAGES/django.po | 170 +-- django/conf/locale/it/LC_MESSAGES/django.po | 170 +-- django/conf/locale/no/LC_MESSAGES/django.po | 170 +-- .../conf/locale/pt_BR/LC_MESSAGES/django.po | 170 +-- django/conf/locale/ru/LC_MESSAGES/django.po | 170 +-- django/conf/locale/sk/LC_MESSAGES/django.mo | Bin 0 -> 17529 bytes django/conf/locale/sk/LC_MESSAGES/django.po | 983 ++++++++++++++++++ django/conf/locale/sr/LC_MESSAGES/django.po | 170 +-- .../conf/locale/zh_CN/LC_MESSAGES/django.po | 170 +-- 15 files changed, 2453 insertions(+), 1258 deletions(-) create mode 100644 django/conf/locale/sk/LC_MESSAGES/django.mo create mode 100644 django/conf/locale/sk/LC_MESSAGES/django.po diff --git a/django/conf/global_settings.py b/django/conf/global_settings.py index a95a956234..fd9e6c81b8 100644 --- a/django/conf/global_settings.py +++ b/django/conf/global_settings.py @@ -45,6 +45,7 @@ LANGUAGES = ( ('ru', _('Russian')), ('sr', _('Serbian')), ('zh-cn', _('Simplified Chinese')), + ('sk', _('Slovak')), ) # Not-necessarily-technical managers of the site. They get broken link diff --git a/django/conf/locale/cs/LC_MESSAGES/django.po b/django/conf/locale/cs/LC_MESSAGES/django.po index cdb5efa839..7b43bb157c 100644 --- a/django/conf/locale/cs/LC_MESSAGES/django.po +++ b/django/conf/locale/cs/LC_MESSAGES/django.po @@ -6,15 +6,16 @@ msgid "" msgstr "" "Project-Id-Version: Django Czech translation\n" -"Report-Msgid-Bugs-To: Radek Svarz \n" -"POT-Creation-Date: 2005-11-04 09:29-0600\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-11-06 21:41-0600\n" "PO-Revision-Date: 2005-11-06 18:39+0100\n" "Last-Translator: Radek Svarz \n" "Language-Team: Czech\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\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" +"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" "X-Poedit-Language: Czech\n" "X-Poedit-Country: CZECH REPUBLIC\n" @@ -63,8 +64,12 @@ msgid "Server Error (500)" msgstr "Chyba serveru (500)" #: contrib/admin/templates/admin/500.html:10 -msgid "There's been an error. It's been reported to the site administrators via e-mail and should be fixed shortly. Thanks for your patience." -msgstr "Nastala chyba. Ta byla oznámena administrátorovi serveru pomocí e-mailu a měla by být brzy odstraněna. Děkujeme za trpělivost." +msgid "" +"There's been an error. It's been reported to the site administrators via e-" +"mail and should be fixed shortly. Thanks for your patience." +msgstr "" +"Nastala chyba. Ta byla oznámena administrátorovi serveru pomocí e-mailu a " +"měla by být brzy odstraněna. Děkujeme za trpělivost." #: contrib/admin/templates/admin/object_history.html:5 msgid "History" @@ -74,8 +79,7 @@ msgstr "Historie" msgid "Date/time" msgstr "Datum/čas" -#: contrib/admin/templates/admin/object_history.html:19 -#: models/auth.py:47 +#: contrib/admin/templates/admin/object_history.html:19 models/auth.py:47 msgid "User" msgstr "Uživatel" @@ -88,8 +92,12 @@ msgid "DATE_WITH_TIME_FULL" msgstr "Plné datum s časem" #: contrib/admin/templates/admin/object_history.html:36 -msgid "This object doesn't have a change history. It probably wasn't added via this admin site." -msgstr "Tento objekt nemá historii změn. Pravděpodobně nebyl přidán přes administrátorské rozhraní." +msgid "" +"This object doesn't have a change history. It probably wasn't added via this " +"admin site." +msgstr "" +"Tento objekt nemá historii změn. Pravděpodobně nebyl přidán přes " +"administrátorské rozhraní." #: contrib/admin/templates/admin/base_site.html:4 msgid "Django site admin" @@ -101,13 +109,22 @@ msgstr "Django správa" #: contrib/admin/templates/admin/delete_confirmation.html:7 #, fuzzy, python-format -msgid "Deleting the %(object_name)s '%(object)s' would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:" -msgstr "Mazání %(object_name)s '%(object)s' by vyústilo ve vymazání souvisejících objektů, ale Váš účet nemá oprávnění pro mazání následujících typů objektů:" +msgid "" +"Deleting the %(object_name)s '%(object)s' would result in deleting related " +"objects, but your account doesn't have permission to delete the following " +"types of objects:" +msgstr "" +"Mazání %(object_name)s '%(object)s' by vyústilo ve vymazání souvisejících " +"objektů, ale Váš účet nemá oprávnění pro mazání následujících typů objektů:" #: contrib/admin/templates/admin/delete_confirmation.html:14 #, python-format -msgid "Are you sure you want to delete the %(object_name)s \"%(object)s\"? All of the following related items will be deleted:" -msgstr "Jste si jist(á), že chcete smazat %(object_name)s \"%(object)s\"? Všechny následující související položky budou smazány:" +msgid "" +"Are you sure you want to delete the %(object_name)s \"%(object)s\"? All of " +"the following related items will be deleted:" +msgstr "" +"Jste si jist(á), že chcete smazat %(object_name)s \"%(object)s\"? Všechny " +"následující související položky budou smazány:" #: contrib/admin/templates/admin/delete_confirmation.html:18 msgid "Yes, I'm sure" @@ -178,8 +195,12 @@ msgid "Your password was changed." msgstr "Vaše heslo bylo změněno." #: contrib/admin/templates/registration/password_change_form.html:12 -msgid "Please enter your old password, for security's sake, and then enter your new password twice so we can verify you typed it in correctly." -msgstr "Prosíme, pro zabezpečení vložte svoje staré heslo a poté vložte dvakrát nové heslo, takže můžeme ověřit, že jste ho napsal(a) správně." +msgid "" +"Please enter your old password, for security's sake, and then enter your new " +"password twice so we can verify you typed it in correctly." +msgstr "" +"Prosíme, pro zabezpečení vložte svoje staré heslo a poté vložte dvakrát nové " +"heslo, takže můžeme ověřit, že jste ho napsal(a) správně." #: contrib/admin/templates/registration/password_change_form.html:17 msgid "Old password:" @@ -209,8 +230,12 @@ msgid "Password reset successful" msgstr "Obnovení hesla bylo úspěšné" #: contrib/admin/templates/registration/password_reset_done.html:12 -msgid "We've e-mailed a new password to the e-mail address you submitted. You should be receiving it shortly." -msgstr "Poslali jsme Vám e-mailem nové heslo na adresu, kterou jste zadal(a). Měl(a) byste ji dostat během okamžiku." +msgid "" +"We've e-mailed a new password to the e-mail address you submitted. You " +"should be receiving it shortly." +msgstr "" +"Poslali jsme Vám e-mailem nové heslo na adresu, kterou jste zadal(a). Měl(a) " +"byste ji dostat během okamžiku." #: contrib/admin/templates/registration/password_reset_email.html:2 msgid "You're receiving this e-mail because you requested a password reset" @@ -244,8 +269,12 @@ msgid "The %(site_name)s team" msgstr "Tým %(site_name)s" #: contrib/admin/templates/registration/password_reset_form.html:12 -msgid "Forgotten your password? Enter your e-mail address below, and we'll reset your password and e-mail the new one to you." -msgstr "Zapomněl(a) jste heslo? Vložte níže Vaši e-mailovou adresu a my Vaše heslo obnovíme a zašleme Vám e-mailem nové." +msgid "" +"Forgotten your password? Enter your e-mail address below, and we'll reset " +"your password and e-mail the new one to you." +msgstr "" +"Zapomněl(a) jste heslo? Vložte níže Vaši e-mailovou adresu a my Vaše heslo " +"obnovíme a zašleme Vám e-mailem nové." #: contrib/admin/templates/registration/password_reset_form.html:16 msgid "E-mail address:" @@ -319,28 +348,23 @@ msgstr "Leden" msgid "February" msgstr "Únor" -#: utils/dates.py:14 -#: utils/dates.py:27 +#: utils/dates.py:14 utils/dates.py:27 msgid "March" msgstr "Březen" -#: utils/dates.py:14 -#: utils/dates.py:27 +#: utils/dates.py:14 utils/dates.py:27 msgid "April" msgstr "Duben" -#: utils/dates.py:14 -#: utils/dates.py:27 +#: utils/dates.py:14 utils/dates.py:27 msgid "May" msgstr "Květen" -#: utils/dates.py:14 -#: utils/dates.py:27 +#: utils/dates.py:14 utils/dates.py:27 msgid "June" msgstr "Červen" -#: utils/dates.py:15 -#: utils/dates.py:27 +#: utils/dates.py:15 utils/dates.py:27 msgid "July" msgstr "Červenec" @@ -392,138 +416,150 @@ msgstr "List." msgid "Dec." msgstr "Pros." -#: models/core.py:5 +#: models/core.py:7 msgid "domain name" msgstr "jméno domény" -#: models/core.py:6 +#: models/core.py:8 msgid "display name" msgstr "zobrazené jméno" -#: models/core.py:8 +#: models/core.py:10 msgid "site" msgstr "web" -#: models/core.py:9 +#: models/core.py:11 msgid "sites" msgstr "weby" -#: models/core.py:22 +#: models/core.py:24 msgid "label" msgstr "nadpis" -#: models/core.py:23 -#: models/core.py:34 -#: models/auth.py:6 -#: models/auth.py:19 +#: models/core.py:25 models/core.py:36 models/auth.py:6 models/auth.py:19 msgid "name" msgstr "jméno" -#: models/core.py:25 +#: models/core.py:27 msgid "package" msgstr "balík" -#: models/core.py:26 +#: models/core.py:28 msgid "packages" msgstr "balíky" -#: models/core.py:36 +#: models/core.py:38 msgid "python module name" msgstr "jméno modulu Pythonu" -#: models/core.py:38 +#: models/core.py:40 msgid "content type" msgstr "typ obsahu" -#: models/core.py:39 +#: models/core.py:41 msgid "content types" msgstr "typy obsahu" -#: models/core.py:62 +#: models/core.py:64 msgid "redirect from" msgstr "přesměrovat z" -#: models/core.py:63 -msgid "This should be an absolute path, excluding the domain name. Example: '/events/search/'." -msgstr "Toto by měla být absolutní cesta, bez domény. Např. '/udalosti/hledat/'." +#: models/core.py:65 +msgid "" +"This should be an absolute path, excluding the domain name. Example: '/" +"events/search/'." +msgstr "" +"Toto by měla být absolutní cesta, bez domény. Např. '/udalosti/hledat/'." -#: models/core.py:64 +#: models/core.py:66 msgid "redirect to" msgstr "přesměrovat na" -#: models/core.py:65 -msgid "This can be either an absolute path (as above) or a full URL starting with 'http://'." -msgstr "Toto může být buď absolutní cesta (jako nahoře) nebo plné URL začínající na 'http://'." - #: models/core.py:67 +msgid "" +"This can be either an absolute path (as above) or a full URL starting with " +"'http://'." +msgstr "" +"Toto může být buď absolutní cesta (jako nahoře) nebo plné URL začínající na " +"'http://'." + +#: models/core.py:69 msgid "redirect" msgstr "přesměrovat" -#: models/core.py:68 +#: models/core.py:70 msgid "redirects" msgstr "přesměrování" -#: models/core.py:81 +#: models/core.py:83 msgid "URL" msgstr "URL" -#: models/core.py:82 -msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes." -msgstr "Příklad: '/o/kontakt/'. Ujistěte se, že máte počáteční a konečná lomítka." +#: models/core.py:84 +msgid "" +"Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgstr "" +"Příklad: '/o/kontakt/'. Ujistěte se, že máte počáteční a konečná lomítka." -#: models/core.py:83 +#: models/core.py:85 msgid "title" msgstr "titulek" -#: models/core.py:84 +#: models/core.py:86 msgid "content" msgstr "obsah" -#: models/core.py:85 +#: models/core.py:87 msgid "enable comments" msgstr "povolit komentáře" -#: models/core.py:86 +#: models/core.py:88 msgid "template name" msgstr "jméno šablony" -#: models/core.py:87 -msgid "Example: 'flatfiles/contact_page'. If this isn't provided, the system will use 'flatfiles/default'." -msgstr "Například: 'flatfiles/kontaktni_stranka'. Pokud toto není zadáno, systém použije 'flatfiles/default'." +#: models/core.py:89 +msgid "" +"Example: 'flatfiles/contact_page'. If this isn't provided, the system will " +"use 'flatfiles/default'." +msgstr "" +"Například: 'flatfiles/kontaktni_stranka'. Pokud toto není zadáno, systém " +"použije 'flatfiles/default'." -#: models/core.py:88 +#: models/core.py:90 msgid "registration required" msgstr "nutná registrace" -#: models/core.py:88 +#: models/core.py:90 msgid "If this is checked, only logged-in users will be able to view the page." -msgstr "Pokud je zaškrtnuto, pouze přihlášení uživatelé budou moci prohlížet tuto stránku." +msgstr "" +"Pokud je zaškrtnuto, pouze přihlášení uživatelé budou moci prohlížet tuto " +"stránku." -#: models/core.py:92 +#: models/core.py:94 msgid "flat page" msgstr "statická stránka" -#: models/core.py:93 +#: models/core.py:95 msgid "flat pages" msgstr "statické stránky" -#: models/core.py:114 +#: models/core.py:113 msgid "session key" msgstr "klíč sezení" -#: models/core.py:115 +#: models/core.py:114 msgid "session data" msgstr "data sezení" -#: models/core.py:116 +#: models/core.py:115 msgid "expire date" msgstr "datum expirace" -#: models/core.py:118 +#: models/core.py:117 msgid "session" msgstr "sezení" -#: models/core.py:119 +#: models/core.py:118 msgid "sessions" msgstr "sezení" @@ -535,8 +571,7 @@ msgstr "codename" msgid "Permission" msgstr "Oprávnění" -#: models/auth.py:11 -#: models/auth.py:58 +#: models/auth.py:11 models/auth.py:58 msgid "Permissions" msgstr "Oprávnění" @@ -544,8 +579,7 @@ msgstr "Oprávnění" msgid "Group" msgstr "Skupina" -#: models/auth.py:23 -#: models/auth.py:60 +#: models/auth.py:23 models/auth.py:60 msgid "Groups" msgstr "Skupiny" @@ -599,8 +633,12 @@ msgid "date joined" msgstr "datum zaregistrování" #: models/auth.py:44 -msgid "In addition to the permissions manually assigned, this user will also get all permissions granted to each group he/she is in." -msgstr "Kromě manuálně přidělených oprávnění uživatel dostane všechna oprávnění pro každou skupinu, ve které je." +msgid "" +"In addition to the permissions manually assigned, this user will also get " +"all permissions granted to each group he/she is in." +msgstr "" +"Kromě manuálně přidělených oprávnění uživatel dostane všechna oprávnění pro " +"každou skupinu, ve které je." #: models/auth.py:48 msgid "Users" @@ -667,94 +705,103 @@ msgstr "Srbsky" msgid "Simplified Chinese" msgstr "Jednoduchá čínština" -#: core/validators.py:58 +#: conf/global_settings.py:48 +msgid "Slovak" +msgstr "" + +#: core/validators.py:59 msgid "This value must contain only letters, numbers and underscores." msgstr "Tato hodnota musí obsahovat pouze znaky, čísla nebo podtržítka." -#: core/validators.py:62 +#: core/validators.py:63 msgid "This value must contain only letters, numbers, underscores and slashes." -msgstr "Tato hodnota musí obsahovat pouze znaky, čísla, podtržítka nebo lomítka." +msgstr "" +"Tato hodnota musí obsahovat pouze znaky, čísla, podtržítka nebo lomítka." -#: core/validators.py:70 +#: core/validators.py:71 msgid "Uppercase letters are not allowed here." msgstr "Velká písmena zde nejsou povolená." -#: core/validators.py:74 +#: core/validators.py:75 msgid "Lowercase letters are not allowed here." msgstr "Malá písmena zde nejsou povolená." -#: core/validators.py:81 +#: core/validators.py:82 msgid "Enter only digits separated by commas." msgstr "Vložte pouze cifry oddělené čárkami." -#: core/validators.py:93 +#: core/validators.py:94 msgid "Enter valid e-mail addresses separated by commas." msgstr "Vložte platné e-mailové adresy oddělené čárkami." -#: core/validators.py:100 +#: core/validators.py:98 msgid "Please enter a valid IP address." msgstr "Prosíme, zadejte platnou IP adresu." -#: core/validators.py:104 +#: core/validators.py:102 msgid "Empty values are not allowed here." msgstr "Zde nejsou povolené prázdné hodnoty." -#: core/validators.py:108 +#: core/validators.py:106 msgid "Non-numeric characters aren't allowed here." msgstr "Znaky, které nejsou čísla, nejsou zde povoleny." -#: core/validators.py:112 +#: core/validators.py:110 msgid "This value can't be comprised solely of digits." msgstr "Tato hodnota nemůže být složená pouze z cifer." -#: core/validators.py:117 +#: core/validators.py:115 msgid "Enter a whole number." msgstr "Vložte celé číslo." -#: core/validators.py:121 +#: core/validators.py:119 msgid "Only alphabetical characters are allowed here." msgstr "Zde jsou povoleny pouze alfanumerické znaky." -#: core/validators.py:125 +#: core/validators.py:123 msgid "Enter a valid date in YYYY-MM-DD format." msgstr "Vložte platné datum ve formátu RRRR-MM-DD." -#: core/validators.py:129 +#: core/validators.py:127 msgid "Enter a valid time in HH:MM format." msgstr "Vložte platný čas ve formátu HH:MM." -#: core/validators.py:133 +#: core/validators.py:131 msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." msgstr "Vložte platné datum a čas ve formátu RRRR-MM-DD HH:MM." -#: core/validators.py:137 +#: core/validators.py:135 msgid "Enter a valid e-mail address." msgstr "Vložte platnou e-mailovou adresu." -#: core/validators.py:149 -msgid "Upload a valid image. The file you uploaded was either not an image or a corrupted image." -msgstr "Nahrajte na server platný obrázek. Soubor, který jste nahrál(a) nebyl obrázek, nebo byl porušen." +#: core/validators.py:147 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "" +"Nahrajte na server platný obrázek. Soubor, který jste nahrál(a) nebyl " +"obrázek, nebo byl porušen." -#: core/validators.py:156 +#: core/validators.py:154 #, python-format msgid "The URL %s does not point to a valid image." msgstr "URL %s neukazuje na platný obrázek." -#: core/validators.py:160 +#: core/validators.py:158 #, python-format msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." msgstr "Telefonní čísla musí být ve formátu XXX-XXX-XXXX. \"%s\" není platné." -#: core/validators.py:168 +#: core/validators.py:166 #, python-format msgid "The URL %s does not point to a valid QuickTime video." msgstr "URL %s neodkazuje na platné video ve formátu QuickTime." -#: core/validators.py:172 +#: core/validators.py:170 msgid "A valid URL is required." msgstr "Je vyžadováno platné URL." -#: core/validators.py:186 +#: core/validators.py:184 #, python-format msgid "" "Valid HTML is required. Specific errors are:\n" @@ -763,26 +810,26 @@ msgstr "" "Je vyžadováno platné HTML. Konkrétní chyby jsou:\n" "%s" -#: core/validators.py:193 +#: core/validators.py:191 #, python-format msgid "Badly formed XML: %s" msgstr "Špatně formované XML: %s" -#: core/validators.py:203 +#: core/validators.py:201 #, python-format msgid "Invalid URL: %s" msgstr "Neplatné URL: %s" -#: core/validators.py:205 +#: core/validators.py:203 #, python-format msgid "The URL %s is a broken link." msgstr "Odkaz na URL %s je rozbitý." -#: core/validators.py:211 +#: core/validators.py:209 msgid "Enter a valid U.S. state abbreviation." msgstr "Vložte platnou zkraku U.S. státu." -#: core/validators.py:226 +#: core/validators.py:224 #, python-format msgid "Watch your mouth! The word %s is not allowed here." msgid_plural "Watch your mouth! The words %s are not allowed here." @@ -790,122 +837,155 @@ msgstr[0] "Mluvte slušně! Slovo %s zde není přípustné." msgstr[1] "Mluvte slušně! Slova %s zde nejsou přípustná." msgstr[2] "Mluvte slušně! Slova %s zde nejsou přípustná." -#: core/validators.py:233 +#: core/validators.py:231 #, python-format msgid "This field must match the '%s' field." msgstr "Toto pole se musí shodovat s polem '%s'." -#: core/validators.py:252 +#: core/validators.py:250 msgid "Please enter something for at least one field." msgstr "Prosíme, vložte něco alespoň pro jedno pole." -#: core/validators.py:261 -#: core/validators.py:272 +#: core/validators.py:259 core/validators.py:270 msgid "Please enter both fields or leave them both empty." msgstr "Prosíme, vložte obě pole, nebo je nechte obě prázdná." -#: core/validators.py:279 +#: core/validators.py:277 #, python-format msgid "This field must be given if %(field)s is %(value)s" msgstr "Toto pole musí být vyplněno, když %(field)s má %(value)s" -#: core/validators.py:291 +#: core/validators.py:289 #, python-format msgid "This field must be given if %(field)s is not %(value)s" msgstr "Toto pole musí být vyplněno, když %(field)s nemá %(value)s" -#: core/validators.py:310 +#: core/validators.py:308 msgid "Duplicate values are not allowed." msgstr "Duplikátní hodnoty nejsou povolené." -#: core/validators.py:333 +#: core/validators.py:331 #, python-format msgid "This value must be a power of %s." msgstr "Tato hodnota musí být mocninou %s." -#: core/validators.py:344 +#: core/validators.py:342 msgid "Please enter a valid decimal number." msgstr "Prosíme, vložte platné číslo." -#: core/validators.py:346 +#: core/validators.py:344 #, python-format msgid "Please enter a valid decimal number with at most %s total digit." -msgid_plural "Please enter a valid decimal number with at most %s total digits." +msgid_plural "" +"Please enter a valid decimal number with at most %s total digits." msgstr[0] "Prosíme, vložte platné číslo s nejvíce %s cifrou celkem." msgstr[1] "Prosíme, vložte platné číslo s nejvíce %s ciframi celkem." msgstr[2] "Prosíme, vložte platné číslo s nejvíce %s ciframi celkem." -#: core/validators.py:349 +#: core/validators.py:347 #, python-format msgid "Please enter a valid decimal number with at most %s decimal place." -msgid_plural "Please enter a valid decimal number with at most %s decimal places." -msgstr[0] "Prosíme, vložte platné číslo s nejvíce %s cifrou za desetinnou čárkou celkem." -msgstr[1] "Prosíme, vložte platné číslo s nejvíce %s ciframi za desetinnou čárkou celkem." -msgstr[2] "Prosíme, vložte platné číslo s nejvíce %s ciframi za desetinnou čárkou celkem." +msgid_plural "" +"Please enter a valid decimal number with at most %s decimal places." +msgstr[0] "" +"Prosíme, vložte platné číslo s nejvíce %s cifrou za desetinnou čárkou celkem." +msgstr[1] "" +"Prosíme, vložte platné číslo s nejvíce %s ciframi za desetinnou čárkou " +"celkem." +msgstr[2] "" +"Prosíme, vložte platné číslo s nejvíce %s ciframi za desetinnou čárkou " +"celkem." -#: core/validators.py:359 +#: core/validators.py:357 #, python-format msgid "Make sure your uploaded file is at least %s bytes big." msgstr "Ujistěte se, že posílaný soubor je velký nejméně %s bytů." -#: core/validators.py:360 +#: core/validators.py:358 #, python-format msgid "Make sure your uploaded file is at most %s bytes big." msgstr "Ujistěte se, že posílaný soubor je velký nejvíce %s bytů." -#: core/validators.py:373 +#: core/validators.py:371 msgid "The format for this field is wrong." msgstr "Formát pro toto pole je špatný." -#: core/validators.py:388 +#: core/validators.py:386 msgid "This field is invalid." msgstr "Toto pole není platné." -#: core/validators.py:423 +#: core/validators.py:421 #, python-format msgid "Could not retrieve anything from %s." msgstr "Nemohl jsem získat nic z %s." -#: core/validators.py:426 +#: core/validators.py:424 #, python-format -msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." +msgid "" +"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." msgstr "URL %(url)s vrátilo neplatnou hlavičku Content-Type '%(contenttype)s'." -#: core/validators.py:459 +#: core/validators.py:457 #, python-format -msgid "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with \"%(start)s\".)" -msgstr "Prosíme, zavřete nezavřenou značku %(tag)s z řádky %(line)s. (Řádka začíná s \"%(start)s\".)" +msgid "" +"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " +"\"%(start)s\".)" +msgstr "" +"Prosíme, zavřete nezavřenou značku %(tag)s z řádky %(line)s. (Řádka začíná s " +"\"%(start)s\".)" -#: core/validators.py:463 +#: core/validators.py:461 #, python-format -msgid "Some text starting on line %(line)s is not allowed in that context. (Line starts with \"%(start)s\".)" -msgstr "Nějaký text začínající na řádce %(line)s není povolen v tomto kontextu. (Řádka začíná s \"%(start)s\".)" +msgid "" +"Some text starting on line %(line)s is not allowed in that context. (Line " +"starts with \"%(start)s\".)" +msgstr "" +"Nějaký text začínající na řádce %(line)s není povolen v tomto kontextu. " +"(Řádka začíná s \"%(start)s\".)" -#: core/validators.py:468 +#: core/validators.py:466 #, python-format -msgid "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%(start)s\".)" -msgstr "\"%(attr)s\" na řádce %(line)s je neplatný atribut. (Řádka začíná s \"%(start)s\".)" +msgid "" +"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" +"(start)s\".)" +msgstr "" +"\"%(attr)s\" na řádce %(line)s je neplatný atribut. (Řádka začíná s \"%" +"(start)s\".)" -#: core/validators.py:473 +#: core/validators.py:471 #, python-format -msgid "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%(start)s\".)" -msgstr "\"<%(tag)s>\" na řádce %(line)s je neplatná značka. (Řádka začíná s \"%(start)s\".)" +msgid "" +"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" +"(start)s\".)" +msgstr "" +"\"<%(tag)s>\" na řádce %(line)s je neplatná značka. (Řádka začíná s \"%" +"(start)s\".)" -#: core/validators.py:477 +#: core/validators.py:475 #, python-format -msgid "A tag on line %(line)s is missing one or more required attributes. (Line starts with \"%(start)s\".)" -msgstr "Značce na řádce %(line)s schází jeden nebo více požadovaných atributů. (Řádka začíná s \"%(start)s\".)" +msgid "" +"A tag on line %(line)s is missing one or more required attributes. (Line " +"starts with \"%(start)s\".)" +msgstr "" +"Značce na řádce %(line)s schází jeden nebo více požadovaných atributů. " +"(Řádka začíná s \"%(start)s\".)" -#: core/validators.py:482 +#: core/validators.py:480 #, python-format -msgid "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line starts with \"%(start)s\".)" -msgstr "Atribut \"%(attr)s\" na řádce %(line)s má neplatnou hodnotu. (Řádka začína s \"%(start)s\".)" +msgid "" +"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " +"starts with \"%(start)s\".)" +msgstr "" +"Atribut \"%(attr)s\" na řádce %(line)s má neplatnou hodnotu. (Řádka začína s " +"\"%(start)s\".)" #: core/meta/fields.py:95 msgid " Separate multiple IDs with commas." msgstr "Oddělte více identifikátorů čárkami." #: core/meta/fields.py:98 -msgid " Hold down \"Control\", or \"Command\" on a Mac, to select more than one." -msgstr "Podržte \"Control\", nebo \"Command\" na Macu pro vybrání více jak jedné položky." - +msgid "" +" Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgstr "" +"Podržte \"Control\", nebo \"Command\" na Macu pro vybrání více jak jedné " +"položky." diff --git a/django/conf/locale/de/LC_MESSAGES/django.po b/django/conf/locale/de/LC_MESSAGES/django.po index 16a4a75ec3..db2d632bee 100644 --- a/django/conf/locale/de/LC_MESSAGES/django.po +++ b/django/conf/locale/de/LC_MESSAGES/django.po @@ -7,85 +7,46 @@ msgid "" msgstr "" "Project-Id-Version: Django 1.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2005-11-06 13:40+0100\n" +"POT-Creation-Date: 2005-11-06 21:41-0600\n" "PO-Revision-Date: 2005-11-06 13:54+0100\n" "Last-Translator: Lukas Kolbe \n" +"Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-1\n" "Content-Transfer-Encoding: 8bit\n" -"Language-Team: \n" -#: contrib/admin/models/admin.py:6 -msgid "action time" -msgstr "Zeit der Aktion" +#: contrib/admin/templates/admin/base.html:23 +msgid "Welcome," +msgstr "Willkommen," -#: contrib/admin/models/admin.py:9 -msgid "object id" -msgstr "Objekt ID" +#: contrib/admin/templates/admin/base.html:23 +msgid "Change password" +msgstr "Kennwort ndern" -#: contrib/admin/models/admin.py:10 -msgid "object repr" -msgstr "Objekt Darst." +#: contrib/admin/templates/admin/base.html:23 +msgid "Log out" +msgstr "Abmelden" -#: contrib/admin/models/admin.py:11 -msgid "action flag" -msgstr "Aktionskennzeichen" - -#: contrib/admin/models/admin.py:12 -msgid "change message" -msgstr "nderungsmeldung" - -#: contrib/admin/models/admin.py:15 -msgid "log entry" -msgstr "Logeintrag" - -#: contrib/admin/models/admin.py:16 -msgid "log entries" -msgstr "Logeintrge" - -#: contrib/admin/templates/admin/object_history.html:5 -#: contrib/admin/templates/admin/500.html:4 #: contrib/admin/templates/admin/base.html:29 -#: contrib/admin/templates/registration/password_change_done.html:4 -#: contrib/admin/templates/registration/password_reset_form.html:4 +#: contrib/admin/templates/admin/500.html:4 +#: contrib/admin/templates/admin/object_history.html:5 #: contrib/admin/templates/registration/logged_out.html:4 -#: contrib/admin/templates/registration/password_reset_done.html:4 +#: contrib/admin/templates/registration/password_change_done.html:4 #: contrib/admin/templates/registration/password_change_form.html:4 +#: contrib/admin/templates/registration/password_reset_done.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:4 msgid "Home" msgstr "Start" -#: contrib/admin/templates/admin/object_history.html:5 -msgid "History" -msgstr "Geschichte" +#: contrib/admin/templates/admin/404.html:4 +#: contrib/admin/templates/admin/404.html:8 +msgid "Page not found" +msgstr "Seite nicht gefunden" -#: contrib/admin/templates/admin/object_history.html:18 -msgid "Date/time" -msgstr "Datum/Zeit" - -#: contrib/admin/templates/admin/object_history.html:19 -#: models/auth.py:47 -msgid "User" -msgstr "Benutzer" - -#: contrib/admin/templates/admin/object_history.html:20 -msgid "Action" -msgstr "Aktion" - -#: contrib/admin/templates/admin/object_history.html:26 -msgid "DATE_WITH_TIME_FULL" -msgstr "j. N Y, H:i" - -#: contrib/admin/templates/admin/object_history.html:36 -msgid "This object doesn't have a change history. It probably wasn't added via this admin site." -msgstr "Dieses Objekt hat keine nderungsgeschichte. Es wurde mglicherweise nicht ber diese Verwaltungsseiten angelegt." - -#: contrib/admin/templates/admin/base_site.html:4 -msgid "Django site admin" -msgstr "Django Systemverwaltung" - -#: contrib/admin/templates/admin/base_site.html:7 -msgid "Django administration" -msgstr "Django Verwaltung" +#: contrib/admin/templates/admin/404.html:10 +msgid "We're sorry, but the requested page could not be found." +msgstr "" +"Es tut uns leid, aber die angeforderte Seite kann nicht gefunden werden." #: contrib/admin/templates/admin/500.html:4 msgid "Server error" @@ -100,17 +61,73 @@ msgid "Server Error (500)" msgstr "Serverfehler (500)" #: contrib/admin/templates/admin/500.html:10 -msgid "There's been an error. It's been reported to the site administrators via e-mail and should be fixed shortly. Thanks for your patience." -msgstr "Es hat einen Fehler gegeben. Dieser Fehler wurde an die Serververwalter per eMail weitergegeben und sollte bald behoben sein. Vielen Dank fr Ihr Verstndnis." +msgid "" +"There's been an error. It's been reported to the site administrators via e-" +"mail and should be fixed shortly. Thanks for your patience." +msgstr "" +"Es hat einen Fehler gegeben. Dieser Fehler wurde an die Serververwalter per " +"eMail weitergegeben und sollte bald behoben sein. Vielen Dank fr Ihr " +"Verstndnis." -#: contrib/admin/templates/admin/404.html:4 -#: contrib/admin/templates/admin/404.html:8 -msgid "Page not found" -msgstr "Seite nicht gefunden" +#: contrib/admin/templates/admin/object_history.html:5 +msgid "History" +msgstr "Geschichte" -#: contrib/admin/templates/admin/404.html:10 -msgid "We're sorry, but the requested page could not be found." -msgstr "Es tut uns leid, aber die angeforderte Seite kann nicht gefunden werden." +#: contrib/admin/templates/admin/object_history.html:18 +msgid "Date/time" +msgstr "Datum/Zeit" + +#: contrib/admin/templates/admin/object_history.html:19 models/auth.py:47 +msgid "User" +msgstr "Benutzer" + +#: contrib/admin/templates/admin/object_history.html:20 +msgid "Action" +msgstr "Aktion" + +#: contrib/admin/templates/admin/object_history.html:26 +msgid "DATE_WITH_TIME_FULL" +msgstr "j. N Y, H:i" + +#: contrib/admin/templates/admin/object_history.html:36 +msgid "" +"This object doesn't have a change history. It probably wasn't added via this " +"admin site." +msgstr "" +"Dieses Objekt hat keine nderungsgeschichte. Es wurde mglicherweise nicht " +"ber diese Verwaltungsseiten angelegt." + +#: contrib/admin/templates/admin/base_site.html:4 +msgid "Django site admin" +msgstr "Django Systemverwaltung" + +#: contrib/admin/templates/admin/base_site.html:7 +msgid "Django administration" +msgstr "Django Verwaltung" + +#: contrib/admin/templates/admin/delete_confirmation.html:7 +#, python-format +msgid "" +"Deleting the %(object_name)s '%(object)s' would result in deleting related " +"objects, but your account doesn't have permission to delete the following " +"types of objects:" +msgstr "" +"Die Lschung des %(object_name)s '%(object)s' htte die Lschung von " +"abhngigen Daten zur Folge, aber Sie haben nicht die ntigen Rechte um die " +"folgenden abhngigen Daten zu lschen:" + +#: contrib/admin/templates/admin/delete_confirmation.html:14 +#, python-format +msgid "" +"Are you sure you want to delete the %(object_name)s \"%(object)s\"? All of " +"the following related items will be deleted:" +msgstr "" +"Sind Sie sicher, das Sie %(object_name)s \"%(object)s\" lschen wollen? Es " +"werden zustzlich die folgenden abhngigen Daten mit gelscht:" + +#: contrib/admin/templates/admin/delete_confirmation.html:18 +msgid "Yes, I'm sure" +msgstr "Ja, ich bin sicher" #: contrib/admin/templates/admin/index.html:27 msgid "Add" @@ -152,31 +169,13 @@ msgstr "Haben Sie ihr Kennwort vergessen?" msgid "Log in" msgstr "Anmelden" -#: contrib/admin/templates/admin/base.html:23 -msgid "Welcome," -msgstr "Willkommen," +#: contrib/admin/templates/registration/logged_out.html:8 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "Danke, dass Sie heute eine Weile bei uns waren." -#: contrib/admin/templates/admin/base.html:23 -msgid "Change password" -msgstr "Kennwort ndern" - -#: contrib/admin/templates/admin/base.html:23 -msgid "Log out" -msgstr "Abmelden" - -#: contrib/admin/templates/admin/delete_confirmation.html:7 -#, python-format -msgid "Deleting the %(object_name)s '%(object)s' would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:" -msgstr "Die Lschung des %(object_name)s '%(object)s' htte die Lschung von abhngigen Daten zur Folge, aber Sie haben nicht die ntigen Rechte um die folgenden abhngigen Daten zu lschen:" - -#: contrib/admin/templates/admin/delete_confirmation.html:14 -#, python-format -msgid "Are you sure you want to delete the %(object_name)s \"%(object)s\"? All of the following related items will be deleted:" -msgstr "Sind Sie sicher, das Sie %(object_name)s \"%(object)s\" lschen wollen? Es werden zustzlich die folgenden abhngigen Daten mit gelscht:" - -#: contrib/admin/templates/admin/delete_confirmation.html:18 -msgid "Yes, I'm sure" -msgstr "Ja, ich bin sicher" +#: contrib/admin/templates/registration/logged_out.html:10 +msgid "Log in again" +msgstr "Neu anmelden" #: contrib/admin/templates/registration/password_change_done.html:4 #: contrib/admin/templates/registration/password_change_form.html:4 @@ -194,44 +193,14 @@ msgstr "Kennwort msgid "Your password was changed." msgstr "Ihr Kennwort wurde gendert." -#: contrib/admin/templates/registration/password_reset_form.html:4 -#: contrib/admin/templates/registration/password_reset_form.html:6 -#: contrib/admin/templates/registration/password_reset_done.html:4 -msgid "Password reset" -msgstr "Kennwort zurcksetzen" - -#: contrib/admin/templates/registration/password_reset_form.html:12 -msgid "Forgotten your password? Enter your e-mail address below, and we'll reset your password and e-mail the new one to you." -msgstr "Sie haben Ihr Kennwort vergessen? Geben Sie bitte Ihre eMail-Adresse ein und wir setzen das Kennwort auf einen neuen Wert und schicken den per eMail an Sie raus." - -#: contrib/admin/templates/registration/password_reset_form.html:16 -msgid "E-mail address:" -msgstr "eMail-Adresse:" - -#: contrib/admin/templates/registration/password_reset_form.html:16 -msgid "Reset my password" -msgstr "Mein Kennwort zurcksetzen" - -#: contrib/admin/templates/registration/logged_out.html:8 -msgid "Thanks for spending some quality time with the Web site today." -msgstr "Danke, dass Sie heute eine Weile bei uns waren." - -#: contrib/admin/templates/registration/logged_out.html:10 -msgid "Log in again" -msgstr "Neu anmelden" - -#: contrib/admin/templates/registration/password_reset_done.html:6 -#: contrib/admin/templates/registration/password_reset_done.html:10 -msgid "Password reset successful" -msgstr "Kennwort erfolgreich zurckgesetzt" - -#: contrib/admin/templates/registration/password_reset_done.html:12 -msgid "We've e-mailed a new password to the e-mail address you submitted. You should be receiving it shortly." -msgstr "Wir haben Ihnen ein neues Kennwort per eMail zugeschickt an die Adresse, die Sie uns gegeben haben. Es sollte in Krze ankommen." - #: contrib/admin/templates/registration/password_change_form.html:12 -msgid "Please enter your old password, for security's sake, and then enter your new password twice so we can verify you typed it in correctly." -msgstr "Bitte geben Sie aus Sicherheitsgrnden erst Ihr altes Kennwort und darunter dann zweimal (um sicherzustellen, das Sie es korrekt eingegeben haben) das neue Kennwort ein." +msgid "" +"Please enter your old password, for security's sake, and then enter your new " +"password twice so we can verify you typed it in correctly." +msgstr "" +"Bitte geben Sie aus Sicherheitsgrnden erst Ihr altes Kennwort und darunter " +"dann zweimal (um sicherzustellen, das Sie es korrekt eingegeben haben) das " +"neue Kennwort ein." #: contrib/admin/templates/registration/password_change_form.html:17 msgid "Old password:" @@ -249,6 +218,25 @@ msgstr "Kennwortwiederholung:" msgid "Change my password" msgstr "Mein Kennwort ndern" +#: contrib/admin/templates/registration/password_reset_done.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:6 +msgid "Password reset" +msgstr "Kennwort zurcksetzen" + +#: contrib/admin/templates/registration/password_reset_done.html:6 +#: contrib/admin/templates/registration/password_reset_done.html:10 +msgid "Password reset successful" +msgstr "Kennwort erfolgreich zurckgesetzt" + +#: contrib/admin/templates/registration/password_reset_done.html:12 +msgid "" +"We've e-mailed a new password to the e-mail address you submitted. You " +"should be receiving it shortly." +msgstr "" +"Wir haben Ihnen ein neues Kennwort per eMail zugeschickt an die Adresse, die " +"Sie uns gegeben haben. Es sollte in Krze ankommen." + #: contrib/admin/templates/registration/password_reset_email.html:2 msgid "You're receiving this e-mail because you requested a password reset" msgstr "Sie erhalten diese Mail, weil Sie ein neues Kennwort" @@ -280,6 +268,51 @@ msgstr "Vielen Dank, das Sie unsere Seiten benutzen!" msgid "The %(site_name)s team" msgstr "Das Team von %(site_name)s" +#: contrib/admin/templates/registration/password_reset_form.html:12 +msgid "" +"Forgotten your password? Enter your e-mail address below, and we'll reset " +"your password and e-mail the new one to you." +msgstr "" +"Sie haben Ihr Kennwort vergessen? Geben Sie bitte Ihre eMail-Adresse ein und " +"wir setzen das Kennwort auf einen neuen Wert und schicken den per eMail an " +"Sie raus." + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "E-mail address:" +msgstr "eMail-Adresse:" + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "Reset my password" +msgstr "Mein Kennwort zurcksetzen" + +#: contrib/admin/models/admin.py:6 +msgid "action time" +msgstr "Zeit der Aktion" + +#: contrib/admin/models/admin.py:9 +msgid "object id" +msgstr "Objekt ID" + +#: contrib/admin/models/admin.py:10 +msgid "object repr" +msgstr "Objekt Darst." + +#: contrib/admin/models/admin.py:11 +msgid "action flag" +msgstr "Aktionskennzeichen" + +#: contrib/admin/models/admin.py:12 +msgid "change message" +msgstr "nderungsmeldung" + +#: contrib/admin/models/admin.py:15 +msgid "log entry" +msgstr "Logeintrag" + +#: contrib/admin/models/admin.py:16 +msgid "log entries" +msgstr "Logeintrge" + #: utils/dates.py:6 msgid "Monday" msgstr "Montag" @@ -316,28 +349,23 @@ msgstr "Januar" msgid "February" msgstr "Februar" -#: utils/dates.py:14 -#: utils/dates.py:27 +#: utils/dates.py:14 utils/dates.py:27 msgid "March" msgstr "Mrz" -#: utils/dates.py:14 -#: utils/dates.py:27 +#: utils/dates.py:14 utils/dates.py:27 msgid "April" msgstr "April" -#: utils/dates.py:14 -#: utils/dates.py:27 +#: utils/dates.py:14 utils/dates.py:27 msgid "May" msgstr "Mai" -#: utils/dates.py:14 -#: utils/dates.py:27 +#: utils/dates.py:14 utils/dates.py:27 msgid "June" msgstr "Juni" -#: utils/dates.py:15 -#: utils/dates.py:27 +#: utils/dates.py:15 utils/dates.py:27 msgid "July" msgstr "Juli" @@ -389,138 +417,150 @@ msgstr "Nov." msgid "Dec." msgstr "Dez." -#: models/core.py:5 +#: models/core.py:7 msgid "domain name" msgstr "Domainname" -#: models/core.py:6 +#: models/core.py:8 msgid "display name" msgstr "Anzeigename" -#: models/core.py:8 +#: models/core.py:10 msgid "site" msgstr "Website" -#: models/core.py:9 +#: models/core.py:11 msgid "sites" msgstr "Websites" -#: models/core.py:22 +#: models/core.py:24 msgid "label" msgstr "Label" -#: models/core.py:23 -#: models/core.py:34 -#: models/auth.py:6 -#: models/auth.py:19 +#: models/core.py:25 models/core.py:36 models/auth.py:6 models/auth.py:19 msgid "name" msgstr "Name" -#: models/core.py:25 +#: models/core.py:27 msgid "package" msgstr "Paket" -#: models/core.py:26 +#: models/core.py:28 msgid "packages" msgstr "Pakete" -#: models/core.py:36 +#: models/core.py:38 msgid "python module name" msgstr "Python Modulname" -#: models/core.py:38 +#: models/core.py:40 msgid "content type" msgstr "Inhaltstyp" -#: models/core.py:39 +#: models/core.py:41 msgid "content types" msgstr "Inhaltstypen" -#: models/core.py:62 +#: models/core.py:64 msgid "redirect from" msgstr "Umleitung von" -#: models/core.py:63 -msgid "This should be an absolute path, excluding the domain name. Example: '/events/search/'." -msgstr "Hier sollte ein absoluter Pfad stehen, ohne den Domainnamen. Beispiel: '/events/search/'." +#: models/core.py:65 +msgid "" +"This should be an absolute path, excluding the domain name. Example: '/" +"events/search/'." +msgstr "" +"Hier sollte ein absoluter Pfad stehen, ohne den Domainnamen. Beispiel: '/" +"events/search/'." -#: models/core.py:64 +#: models/core.py:66 msgid "redirect to" msgstr "Umleitung zu" -#: models/core.py:65 -msgid "This can be either an absolute path (as above) or a full URL starting with 'http://'." -msgstr "Hier muss entweder ein absoluter Pfad oder eine komplette URL mit http:// am Anfang stehen." - #: models/core.py:67 +msgid "" +"This can be either an absolute path (as above) or a full URL starting with " +"'http://'." +msgstr "" +"Hier muss entweder ein absoluter Pfad oder eine komplette URL mit http:// am " +"Anfang stehen." + +#: models/core.py:69 msgid "redirect" msgstr "Umleitung" -#: models/core.py:68 +#: models/core.py:70 msgid "redirects" msgstr "Umleitungen" -#: models/core.py:81 +#: models/core.py:83 msgid "URL" msgstr "URL" -#: models/core.py:82 -msgid "Example: '/about/contact/'. Make sure to have leading and trailing slashes." -msgstr "Beispiel: '/about/contact/'. Wichtig: vorne und hinten muss ein / stehen." +#: models/core.py:84 +msgid "" +"Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgstr "" +"Beispiel: '/about/contact/'. Wichtig: vorne und hinten muss ein / stehen." -#: models/core.py:83 +#: models/core.py:85 msgid "title" msgstr "Titel" -#: models/core.py:84 +#: models/core.py:86 msgid "content" msgstr "Inhalt" -#: models/core.py:85 +#: models/core.py:87 msgid "enable comments" msgstr "Kommentare aktivieren" -#: models/core.py:86 +#: models/core.py:88 msgid "template name" msgstr "Name der Vorlage" -#: models/core.py:87 -msgid "Example: 'flatfiles/contact_page'. If this isn't provided, the system will use 'flatfiles/default'." -msgstr "Beispiel: 'flatfiles/contact_page'. Wenn dieses Feld nicht gefllt ist, wird 'flatfiles/default' als Standard gewhlt." +#: models/core.py:89 +msgid "" +"Example: 'flatfiles/contact_page'. If this isn't provided, the system will " +"use 'flatfiles/default'." +msgstr "" +"Beispiel: 'flatfiles/contact_page'. Wenn dieses Feld nicht gefllt ist, wird " +"'flatfiles/default' als Standard gewhlt." -#: models/core.py:88 +#: models/core.py:90 msgid "registration required" msgstr "Registrierung erforderlich" -#: models/core.py:88 +#: models/core.py:90 msgid "If this is checked, only logged-in users will be able to view the page." -msgstr "Wenn hier ein Haken ist, knnen nur angemeldete Benutzer diese Seite sehen." +msgstr "" +"Wenn hier ein Haken ist, knnen nur angemeldete Benutzer diese Seite sehen." -#: models/core.py:92 +#: models/core.py:94 msgid "flat page" msgstr "Webseite" -#: models/core.py:93 +#: models/core.py:95 msgid "flat pages" msgstr "Webseiten" -#: models/core.py:114 +#: models/core.py:113 msgid "session key" msgstr "Sitzungs-ID" -#: models/core.py:115 +#: models/core.py:114 msgid "session data" msgstr "Sitzungsdaten" -#: models/core.py:116 +#: models/core.py:115 msgid "expire date" msgstr "Verfallsdatum" -#: models/core.py:118 +#: models/core.py:117 msgid "session" msgstr "Sitzung" -#: models/core.py:119 +#: models/core.py:118 msgid "sessions" msgstr "Sitzungen" @@ -532,8 +572,7 @@ msgstr "Codename" msgid "Permission" msgstr "Berechtigung" -#: models/auth.py:11 -#: models/auth.py:58 +#: models/auth.py:11 models/auth.py:58 msgid "Permissions" msgstr "Berechtigungen" @@ -541,8 +580,7 @@ msgstr "Berechtigungen" msgid "Group" msgstr "Gruppe" -#: models/auth.py:23 -#: models/auth.py:60 +#: models/auth.py:23 models/auth.py:60 msgid "Groups" msgstr "Gruppen" @@ -576,7 +614,8 @@ msgstr "Administrator" #: models/auth.py:38 msgid "Designates whether the user can log into this admin site." -msgstr "Gibt an, ob der Benutzer sich an der Administrationsseite anmelden kann." +msgstr "" +"Gibt an, ob der Benutzer sich an der Administrationsseite anmelden kann." #: models/auth.py:39 msgid "active" @@ -595,8 +634,12 @@ msgid "date joined" msgstr "Mitglied seit" #: models/auth.py:44 -msgid "In addition to the permissions manually assigned, this user will also get all permissions granted to each group he/she is in." -msgstr "Zustzlich zu den manuell angelegten Rechten erhlt dieser Benutzer auch alle Rechte, die seine zugewiesenen Gruppen haben." +msgid "" +"In addition to the permissions manually assigned, this user will also get " +"all permissions granted to each group he/she is in." +msgstr "" +"Zustzlich zu den manuell angelegten Rechten erhlt dieser Benutzer auch " +"alle Rechte, die seine zugewiesenen Gruppen haben." #: models/auth.py:48 msgid "Users" @@ -662,94 +705,107 @@ msgstr "Serbisch" msgid "Simplified Chinese" msgstr "vereinfachtes Chinesisch" -#: core/validators.py:58 +#: conf/global_settings.py:48 +msgid "Slovak" +msgstr "" + +#: core/validators.py:59 msgid "This value must contain only letters, numbers and underscores." msgstr "Dieser Wert darf nur Buchstaben, Ziffern und Unterstriche enthalten." -#: core/validators.py:62 +#: core/validators.py:63 msgid "This value must contain only letters, numbers, underscores and slashes." -msgstr "Dieser Wert darf nur Buchstaben, Ziffern, Unterstriche und Schrgstriche enthalten." +msgstr "" +"Dieser Wert darf nur Buchstaben, Ziffern, Unterstriche und Schrgstriche " +"enthalten." -#: core/validators.py:70 +#: core/validators.py:71 msgid "Uppercase letters are not allowed here." msgstr "Grobuchstaben sind hier nicht erlaubt." -#: core/validators.py:74 +#: core/validators.py:75 msgid "Lowercase letters are not allowed here." msgstr "Kleinbuchstaben sind hier nicht erlaubt." -#: core/validators.py:81 +#: core/validators.py:82 msgid "Enter only digits separated by commas." msgstr "Hier sind nur durch Komma getrennte Ziffern erlaubt." -#: core/validators.py:93 +#: core/validators.py:94 msgid "Enter valid e-mail addresses separated by commas." msgstr "Bitte mit Komma getrennte, gltige eMail-Adressen eingeben." -#: core/validators.py:100 +#: core/validators.py:98 msgid "Please enter a valid IP address." msgstr "Bitte eine gltige IP-Adresse eingeben." -#: core/validators.py:104 +#: core/validators.py:102 msgid "Empty values are not allowed here." msgstr "Dieses Feld darf nicht leer sein." -#: core/validators.py:108 +#: core/validators.py:106 msgid "Non-numeric characters aren't allowed here." msgstr "Nichtnumerische Zeichen sind hier nicht erlaubt." -#: core/validators.py:112 +#: core/validators.py:110 msgid "This value can't be comprised solely of digits." msgstr "Dieser Wert darf nicht nur aus Ziffern bestehen." -#: core/validators.py:117 +#: core/validators.py:115 msgid "Enter a whole number." msgstr "Bitte eine ganze Zahl eingeben." -#: core/validators.py:121 +#: core/validators.py:119 msgid "Only alphabetical characters are allowed here." msgstr "Nur alphabetische Zeichen sind hier erlaubt." -#: core/validators.py:125 +#: core/validators.py:123 msgid "Enter a valid date in YYYY-MM-DD format." msgstr "Bitte ein gltiges Datum im Format JJJJ-MM-TT eingeben." -#: core/validators.py:129 +#: core/validators.py:127 msgid "Enter a valid time in HH:MM format." msgstr "Bitte eine gltige Zeit im Format SS:MM eingeben." -#: core/validators.py:133 +#: core/validators.py:131 msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." -msgstr "Bitte eine gltige Datums- und Zeitangabe im Format JJJJ-MM-TT SS:MM eingeben." +msgstr "" +"Bitte eine gltige Datums- und Zeitangabe im Format JJJJ-MM-TT SS:MM " +"eingeben." -#: core/validators.py:137 +#: core/validators.py:135 msgid "Enter a valid e-mail address." msgstr "Bitte eine gltige eMail-Adresse eingeben" -#: core/validators.py:149 -msgid "Upload a valid image. The file you uploaded was either not an image or a corrupted image." -msgstr "Bitte ein Bild hochladen. Die Datei, die hochgeladen wurde, ist kein Bild oder ist defekt." +#: core/validators.py:147 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "" +"Bitte ein Bild hochladen. Die Datei, die hochgeladen wurde, ist kein Bild " +"oder ist defekt." -#: core/validators.py:156 +#: core/validators.py:154 #, python-format msgid "The URL %s does not point to a valid image." msgstr "Die URL %s zeigt nicht auf ein gltiges Bild." -#: core/validators.py:160 +#: core/validators.py:158 #, python-format msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." -msgstr "Telefonnummern mssen im Format XXX-XXX-XXXX sein. \"%s\" ist ungltig." +msgstr "" +"Telefonnummern mssen im Format XXX-XXX-XXXX sein. \"%s\" ist ungltig." -#: core/validators.py:168 +#: core/validators.py:166 #, python-format msgid "The URL %s does not point to a valid QuickTime video." msgstr "Die URL %s zeigt nicht auf ein gltiges QuickTime video." -#: core/validators.py:172 +#: core/validators.py:170 msgid "A valid URL is required." msgstr "Eine gltige URL ist hier verlangt." -#: core/validators.py:186 +#: core/validators.py:184 #, python-format msgid "" "Valid HTML is required. Specific errors are:\n" @@ -758,146 +814,181 @@ msgstr "" "Bitte gltiges HTML eingeben. Fehler sind:\n" "%s" -#: core/validators.py:193 +#: core/validators.py:191 #, python-format msgid "Badly formed XML: %s" msgstr "Ungltiges XML: %s" -#: core/validators.py:203 +#: core/validators.py:201 #, python-format msgid "Invalid URL: %s" msgstr "Ungltige URL: %s" -#: core/validators.py:205 +#: core/validators.py:203 #, python-format msgid "The URL %s is a broken link." msgstr "Die URL %s funktioniert nicht." -#: core/validators.py:211 +#: core/validators.py:209 msgid "Enter a valid U.S. state abbreviation." msgstr "Bitte eine gltige Abkrzung fr einen US-Staat eingeben." -#: core/validators.py:226 +#: core/validators.py:224 #, python-format msgid "Watch your mouth! The word %s is not allowed here." msgid_plural "Watch your mouth! The words %s are not allowed here." msgstr[0] "Keine Schimpfworte! Das Wort %s ist hier nicht gern gesehen!" msgstr[1] "Keine Schimpfworte! Die Wrter %s sind hier nicht gern gesehen!" -#: core/validators.py:233 +#: core/validators.py:231 #, python-format msgid "This field must match the '%s' field." msgstr "Dieses Feld muss zum Feld '%s' passen." -#: core/validators.py:252 +#: core/validators.py:250 msgid "Please enter something for at least one field." msgstr "Bitte mindestens eines der Felder ausfllen." -#: core/validators.py:261 -#: core/validators.py:272 +#: core/validators.py:259 core/validators.py:270 msgid "Please enter both fields or leave them both empty." msgstr "Bitte entweder beide Felder ausfllen, oder beide leer lassen." -#: core/validators.py:279 +#: core/validators.py:277 #, python-format msgid "This field must be given if %(field)s is %(value)s" -msgstr "Dieses Feld muss gefllt sein, wenn Feld %(field)s den Wert %(value)s hat." +msgstr "" +"Dieses Feld muss gefllt sein, wenn Feld %(field)s den Wert %(value)s hat." -#: core/validators.py:291 +#: core/validators.py:289 #, python-format msgid "This field must be given if %(field)s is not %(value)s" -msgstr "Dieses Feld muss gefllt sein, wenn Feld %(field)s nicht %(value)s ist." +msgstr "" +"Dieses Feld muss gefllt sein, wenn Feld %(field)s nicht %(value)s ist." -#: core/validators.py:310 +#: core/validators.py:308 msgid "Duplicate values are not allowed." msgstr "Doppelte Werte sind hier nicht erlaubt." -#: core/validators.py:333 +#: core/validators.py:331 #, python-format msgid "This value must be a power of %s." msgstr "Dieser Wert muss eine Potenz von %s sein." -#: core/validators.py:344 +#: core/validators.py:342 msgid "Please enter a valid decimal number." msgstr "Bitte eine gltige Dezimalzahl eingeben." -#: core/validators.py:346 +#: core/validators.py:344 #, python-format msgid "Please enter a valid decimal number with at most %s total digit." -msgid_plural "Please enter a valid decimal number with at most %s total digits." +msgid_plural "" +"Please enter a valid decimal number with at most %s total digits." msgstr[0] "Bitte eine gltige Dezimalzahl mit maximal %s Ziffer eingeben." msgstr[1] "Bitte eine gltige Dezimalzahl mit maximal %s Ziffern eingeben." -#: core/validators.py:349 +#: core/validators.py:347 #, python-format msgid "Please enter a valid decimal number with at most %s decimal place." -msgid_plural "Please enter a valid decimal number with at most %s decimal places." -msgstr[0] "Bitte eine gltige Dezimalzahl mit maximal %s Dezimalstelle eingeben." -msgstr[1] "Bitte eine gltige Dezimalzahl mit maximal %s Dezimalstellen eingeben." +msgid_plural "" +"Please enter a valid decimal number with at most %s decimal places." +msgstr[0] "" +"Bitte eine gltige Dezimalzahl mit maximal %s Dezimalstelle eingeben." +msgstr[1] "" +"Bitte eine gltige Dezimalzahl mit maximal %s Dezimalstellen eingeben." -#: core/validators.py:359 +#: core/validators.py:357 #, python-format msgid "Make sure your uploaded file is at least %s bytes big." -msgstr "Bitte sicherstellen, da die hochgeladene Datei mindestens %s Bytes gross ist." +msgstr "" +"Bitte sicherstellen, da die hochgeladene Datei mindestens %s Bytes gross " +"ist." -#: core/validators.py:360 +#: core/validators.py:358 #, python-format msgid "Make sure your uploaded file is at most %s bytes big." -msgstr "Bitte sicherstellen, da die hochgeladene Datei maximal %s Bytes gross ist." +msgstr "" +"Bitte sicherstellen, da die hochgeladene Datei maximal %s Bytes gross ist." -#: core/validators.py:373 +#: core/validators.py:371 msgid "The format for this field is wrong." msgstr "Das Format fr dieses Feld ist falsch." -#: core/validators.py:388 +#: core/validators.py:386 msgid "This field is invalid." msgstr "Dieses Feld ist ungltig." -#: core/validators.py:423 +#: core/validators.py:421 #, python-format msgid "Could not retrieve anything from %s." msgstr "Konnte nichts von %s empfangen." -#: core/validators.py:426 +#: core/validators.py:424 #, python-format -msgid "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." +msgid "" +"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." msgstr "Die URL %(url)s lieferte den falschen Content-Type '%(contenttype)s'." -#: core/validators.py:459 +#: core/validators.py:457 #, python-format -msgid "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with \"%(start)s\".)" -msgstr "Bitte das ungeschlossene %(tag)s Tag in Zeile %(line)s schlieen. Die Zeile beginnt mit \"%(start)s\"." +msgid "" +"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " +"\"%(start)s\".)" +msgstr "" +"Bitte das ungeschlossene %(tag)s Tag in Zeile %(line)s schlieen. Die Zeile " +"beginnt mit \"%(start)s\"." -#: core/validators.py:463 +#: core/validators.py:461 #, python-format -msgid "Some text starting on line %(line)s is not allowed in that context. (Line starts with \"%(start)s\".)" -msgstr "In Zeile %(line)s ist Text, der nicht in dem Kontext erlaubt ist. Die Zeile beginnt mit \"%(start)s\"." +msgid "" +"Some text starting on line %(line)s is not allowed in that context. (Line " +"starts with \"%(start)s\".)" +msgstr "" +"In Zeile %(line)s ist Text, der nicht in dem Kontext erlaubt ist. Die Zeile " +"beginnt mit \"%(start)s\"." -#: core/validators.py:468 +#: core/validators.py:466 #, python-format -msgid "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%(start)s\".)" -msgstr "Das Attribute %(attr)s in Zeile %(line)s ist ungltig. Die Zeile beginnt mit \"%(start)s\"." +msgid "" +"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" +"(start)s\".)" +msgstr "" +"Das Attribute %(attr)s in Zeile %(line)s ist ungltig. Die Zeile beginnt mit " +"\"%(start)s\"." -#: core/validators.py:473 +#: core/validators.py:471 #, python-format -msgid "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%(start)s\".)" -msgstr "<%(tag)s> in Zeile %(line)s ist ungltig. Die Zeile beginnt mit \"%(start)s\"." +msgid "" +"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" +"(start)s\".)" +msgstr "" +"<%(tag)s> in Zeile %(line)s ist ungltig. Die Zeile beginnt mit \"%(start)s" +"\"." -#: core/validators.py:477 +#: core/validators.py:475 #, python-format -msgid "A tag on line %(line)s is missing one or more required attributes. (Line starts with \"%(start)s\".)" -msgstr "Ein Tag in Zeile %(line)s hat eines oder mehrere Pflichtattribute nicht. Die Zeile beginnt mit \"%(start)s\"." +msgid "" +"A tag on line %(line)s is missing one or more required attributes. (Line " +"starts with \"%(start)s\".)" +msgstr "" +"Ein Tag in Zeile %(line)s hat eines oder mehrere Pflichtattribute nicht. Die " +"Zeile beginnt mit \"%(start)s\"." -#: core/validators.py:482 +#: core/validators.py:480 #, python-format -msgid "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line starts with \"%(start)s\".)" -msgstr "Das Attribut %(attr)s in Zeile %(line)s hat einen ungltigen Wert. Die Zeile beginnt mit \"%(start)s\"." +msgid "" +"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " +"starts with \"%(start)s\".)" +msgstr "" +"Das Attribut %(attr)s in Zeile %(line)s hat einen ungltigen Wert. Die Zeile " +"beginnt mit \"%(start)s\"." #: core/meta/fields.py:95 msgid " Separate multiple IDs with commas." msgstr "Mehrere IDs knnen mit Komma getrennt werden." #: core/meta/fields.py:98 -msgid " Hold down \"Control\", or \"Command\" on a Mac, to select more than one." -msgstr " Um mehr als eine Selektion zu treffen, \"Strg\", oder auf dem Mac \"Command\", beim Klicken gedrckt halten." - +msgid "" +" Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgstr "" +" Um mehr als eine Selektion zu treffen, \"Strg\", oder auf dem Mac \"Command" +"\", beim Klicken gedrckt halten." diff --git a/django/conf/locale/en/LC_MESSAGES/django.po b/django/conf/locale/en/LC_MESSAGES/django.po index 611d2e0746..eedb4271ad 100644 --- a/django/conf/locale/en/LC_MESSAGES/django.po +++ b/django/conf/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2005-11-04 09:29-0600\n" +"POT-Creation-Date: 2005-11-06 21:41-0600\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -399,142 +399,142 @@ msgstr "" msgid "Dec." msgstr "" -#: models/core.py:5 +#: models/core.py:7 msgid "domain name" msgstr "" -#: models/core.py:6 +#: models/core.py:8 msgid "display name" msgstr "" -#: models/core.py:8 +#: models/core.py:10 msgid "site" msgstr "" -#: models/core.py:9 +#: models/core.py:11 msgid "sites" msgstr "" -#: models/core.py:22 +#: models/core.py:24 msgid "label" msgstr "" -#: models/core.py:23 models/core.py:34 models/auth.py:6 models/auth.py:19 +#: models/core.py:25 models/core.py:36 models/auth.py:6 models/auth.py:19 msgid "name" msgstr "" -#: models/core.py:25 +#: models/core.py:27 msgid "package" msgstr "" -#: models/core.py:26 +#: models/core.py:28 msgid "packages" msgstr "" -#: models/core.py:36 +#: models/core.py:38 msgid "python module name" msgstr "" -#: models/core.py:38 +#: models/core.py:40 msgid "content type" msgstr "" -#: models/core.py:39 +#: models/core.py:41 msgid "content types" msgstr "" -#: models/core.py:62 +#: models/core.py:64 msgid "redirect from" msgstr "" -#: models/core.py:63 +#: models/core.py:65 msgid "" "This should be an absolute path, excluding the domain name. Example: '/" "events/search/'." msgstr "" -#: models/core.py:64 +#: models/core.py:66 msgid "redirect to" msgstr "" -#: models/core.py:65 +#: models/core.py:67 msgid "" "This can be either an absolute path (as above) or a full URL starting with " "'http://'." msgstr "" -#: models/core.py:67 +#: models/core.py:69 msgid "redirect" msgstr "" -#: models/core.py:68 +#: models/core.py:70 msgid "redirects" msgstr "" -#: models/core.py:81 +#: models/core.py:83 msgid "URL" msgstr "" -#: models/core.py:82 +#: models/core.py:84 msgid "" "Example: '/about/contact/'. Make sure to have leading and trailing slashes." msgstr "" -#: models/core.py:83 +#: models/core.py:85 msgid "title" msgstr "" -#: models/core.py:84 +#: models/core.py:86 msgid "content" msgstr "" -#: models/core.py:85 +#: models/core.py:87 msgid "enable comments" msgstr "" -#: models/core.py:86 +#: models/core.py:88 msgid "template name" msgstr "" -#: models/core.py:87 +#: models/core.py:89 msgid "" "Example: 'flatfiles/contact_page'. If this isn't provided, the system will " "use 'flatfiles/default'." msgstr "" -#: models/core.py:88 +#: models/core.py:90 msgid "registration required" msgstr "" -#: models/core.py:88 +#: models/core.py:90 msgid "If this is checked, only logged-in users will be able to view the page." msgstr "" -#: models/core.py:92 +#: models/core.py:94 msgid "flat page" msgstr "" -#: models/core.py:93 +#: models/core.py:95 msgid "flat pages" msgstr "" -#: models/core.py:114 +#: models/core.py:113 msgid "session key" msgstr "" -#: models/core.py:115 +#: models/core.py:114 msgid "session data" msgstr "" -#: models/core.py:116 +#: models/core.py:115 msgid "expire date" msgstr "" -#: models/core.py:118 +#: models/core.py:117 msgid "session" msgstr "" -#: models/core.py:119 +#: models/core.py:118 msgid "sessions" msgstr "" @@ -676,165 +676,169 @@ msgstr "" msgid "Simplified Chinese" msgstr "" -#: core/validators.py:58 +#: conf/global_settings.py:48 +msgid "Slovak" +msgstr "" + +#: core/validators.py:59 msgid "This value must contain only letters, numbers and underscores." msgstr "" -#: core/validators.py:62 +#: core/validators.py:63 msgid "This value must contain only letters, numbers, underscores and slashes." msgstr "" -#: core/validators.py:70 +#: core/validators.py:71 msgid "Uppercase letters are not allowed here." msgstr "" -#: core/validators.py:74 +#: core/validators.py:75 msgid "Lowercase letters are not allowed here." msgstr "" -#: core/validators.py:81 +#: core/validators.py:82 msgid "Enter only digits separated by commas." msgstr "" -#: core/validators.py:93 +#: core/validators.py:94 msgid "Enter valid e-mail addresses separated by commas." msgstr "" -#: core/validators.py:100 +#: core/validators.py:98 msgid "Please enter a valid IP address." msgstr "" -#: core/validators.py:104 +#: core/validators.py:102 msgid "Empty values are not allowed here." msgstr "" -#: core/validators.py:108 +#: core/validators.py:106 msgid "Non-numeric characters aren't allowed here." msgstr "" -#: core/validators.py:112 +#: core/validators.py:110 msgid "This value can't be comprised solely of digits." msgstr "" -#: core/validators.py:117 +#: core/validators.py:115 msgid "Enter a whole number." msgstr "" -#: core/validators.py:121 +#: core/validators.py:119 msgid "Only alphabetical characters are allowed here." msgstr "" -#: core/validators.py:125 +#: core/validators.py:123 msgid "Enter a valid date in YYYY-MM-DD format." msgstr "" -#: core/validators.py:129 +#: core/validators.py:127 msgid "Enter a valid time in HH:MM format." msgstr "" -#: core/validators.py:133 +#: core/validators.py:131 msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." msgstr "" -#: core/validators.py:137 +#: core/validators.py:135 msgid "Enter a valid e-mail address." msgstr "" -#: core/validators.py:149 +#: core/validators.py:147 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "" -#: core/validators.py:156 +#: core/validators.py:154 #, python-format msgid "The URL %s does not point to a valid image." msgstr "" -#: core/validators.py:160 +#: core/validators.py:158 #, python-format msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." msgstr "" -#: core/validators.py:168 +#: core/validators.py:166 #, python-format msgid "The URL %s does not point to a valid QuickTime video." msgstr "" -#: core/validators.py:172 +#: core/validators.py:170 msgid "A valid URL is required." msgstr "" -#: core/validators.py:186 +#: core/validators.py:184 #, python-format msgid "" "Valid HTML is required. Specific errors are:\n" "%s" msgstr "" -#: core/validators.py:193 +#: core/validators.py:191 #, python-format msgid "Badly formed XML: %s" msgstr "" -#: core/validators.py:203 +#: core/validators.py:201 #, python-format msgid "Invalid URL: %s" msgstr "" -#: core/validators.py:205 +#: core/validators.py:203 #, python-format msgid "The URL %s is a broken link." msgstr "" -#: core/validators.py:211 +#: core/validators.py:209 msgid "Enter a valid U.S. state abbreviation." msgstr "" -#: core/validators.py:226 +#: core/validators.py:224 #, python-format msgid "Watch your mouth! The word %s is not allowed here." msgid_plural "Watch your mouth! The words %s are not allowed here." msgstr[0] "" msgstr[1] "" -#: core/validators.py:233 +#: core/validators.py:231 #, python-format msgid "This field must match the '%s' field." msgstr "" -#: core/validators.py:252 +#: core/validators.py:250 msgid "Please enter something for at least one field." msgstr "" -#: core/validators.py:261 core/validators.py:272 +#: core/validators.py:259 core/validators.py:270 msgid "Please enter both fields or leave them both empty." msgstr "" -#: core/validators.py:279 +#: core/validators.py:277 #, python-format msgid "This field must be given if %(field)s is %(value)s" msgstr "" -#: core/validators.py:291 +#: core/validators.py:289 #, python-format msgid "This field must be given if %(field)s is not %(value)s" msgstr "" -#: core/validators.py:310 +#: core/validators.py:308 msgid "Duplicate values are not allowed." msgstr "" -#: core/validators.py:333 +#: core/validators.py:331 #, python-format msgid "This value must be a power of %s." msgstr "" -#: core/validators.py:344 +#: core/validators.py:342 msgid "Please enter a valid decimal number." msgstr "" -#: core/validators.py:346 +#: core/validators.py:344 #, python-format msgid "Please enter a valid decimal number with at most %s total digit." msgid_plural "" @@ -842,7 +846,7 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: core/validators.py:349 +#: core/validators.py:347 #, python-format msgid "Please enter a valid decimal number with at most %s decimal place." msgid_plural "" @@ -850,71 +854,71 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: core/validators.py:359 +#: core/validators.py:357 #, python-format msgid "Make sure your uploaded file is at least %s bytes big." msgstr "" -#: core/validators.py:360 +#: core/validators.py:358 #, python-format msgid "Make sure your uploaded file is at most %s bytes big." msgstr "" -#: core/validators.py:373 +#: core/validators.py:371 msgid "The format for this field is wrong." msgstr "" -#: core/validators.py:388 +#: core/validators.py:386 msgid "This field is invalid." msgstr "" -#: core/validators.py:423 +#: core/validators.py:421 #, python-format msgid "Could not retrieve anything from %s." msgstr "" -#: core/validators.py:426 +#: core/validators.py:424 #, python-format msgid "" "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." msgstr "" -#: core/validators.py:459 +#: core/validators.py:457 #, python-format msgid "" "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " "\"%(start)s\".)" msgstr "" -#: core/validators.py:463 +#: core/validators.py:461 #, python-format msgid "" "Some text starting on line %(line)s is not allowed in that context. (Line " "starts with \"%(start)s\".)" msgstr "" -#: core/validators.py:468 +#: core/validators.py:466 #, python-format msgid "" "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" "(start)s\".)" msgstr "" -#: core/validators.py:473 +#: core/validators.py:471 #, python-format msgid "" "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" "(start)s\".)" msgstr "" -#: core/validators.py:477 +#: core/validators.py:475 #, python-format msgid "" "A tag on line %(line)s is missing one or more required attributes. (Line " "starts with \"%(start)s\".)" msgstr "" -#: core/validators.py:482 +#: core/validators.py:480 #, python-format msgid "" "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " diff --git a/django/conf/locale/es/LC_MESSAGES/django.po b/django/conf/locale/es/LC_MESSAGES/django.po index 689a7624c3..920e55b3dd 100644 --- a/django/conf/locale/es/LC_MESSAGES/django.po +++ b/django/conf/locale/es/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2005-11-04 09:29-0600\n" +"POT-Creation-Date: 2005-11-06 21:41-0600\n" "PO-Revision-Date: 2005-10-04 20:59GMT\n" "Last-Translator: Ricardo Javier Crdenes Medina \n" @@ -418,143 +418,143 @@ msgstr "" msgid "Dec." msgstr "" -#: models/core.py:5 +#: models/core.py:7 msgid "domain name" msgstr "" -#: models/core.py:6 +#: models/core.py:8 msgid "display name" msgstr "" -#: models/core.py:8 +#: models/core.py:10 msgid "site" msgstr "" -#: models/core.py:9 +#: models/core.py:11 msgid "sites" msgstr "" -#: models/core.py:22 +#: models/core.py:24 msgid "label" msgstr "" -#: models/core.py:23 models/core.py:34 models/auth.py:6 models/auth.py:19 +#: models/core.py:25 models/core.py:36 models/auth.py:6 models/auth.py:19 #, fuzzy msgid "name" msgstr "Usuario:" -#: models/core.py:25 +#: models/core.py:27 msgid "package" msgstr "" -#: models/core.py:26 +#: models/core.py:28 msgid "packages" msgstr "" -#: models/core.py:36 +#: models/core.py:38 msgid "python module name" msgstr "" -#: models/core.py:38 +#: models/core.py:40 msgid "content type" msgstr "" -#: models/core.py:39 +#: models/core.py:41 msgid "content types" msgstr "" -#: models/core.py:62 +#: models/core.py:64 msgid "redirect from" msgstr "" -#: models/core.py:63 +#: models/core.py:65 msgid "" "This should be an absolute path, excluding the domain name. Example: '/" "events/search/'." msgstr "" -#: models/core.py:64 +#: models/core.py:66 msgid "redirect to" msgstr "" -#: models/core.py:65 +#: models/core.py:67 msgid "" "This can be either an absolute path (as above) or a full URL starting with " "'http://'." msgstr "" -#: models/core.py:67 +#: models/core.py:69 msgid "redirect" msgstr "" -#: models/core.py:68 +#: models/core.py:70 msgid "redirects" msgstr "" -#: models/core.py:81 +#: models/core.py:83 msgid "URL" msgstr "" -#: models/core.py:82 +#: models/core.py:84 msgid "" "Example: '/about/contact/'. Make sure to have leading and trailing slashes." msgstr "" -#: models/core.py:83 +#: models/core.py:85 msgid "title" msgstr "" -#: models/core.py:84 +#: models/core.py:86 msgid "content" msgstr "" -#: models/core.py:85 +#: models/core.py:87 msgid "enable comments" msgstr "" -#: models/core.py:86 +#: models/core.py:88 msgid "template name" msgstr "" -#: models/core.py:87 +#: models/core.py:89 msgid "" "Example: 'flatfiles/contact_page'. If this isn't provided, the system will " "use 'flatfiles/default'." msgstr "" -#: models/core.py:88 +#: models/core.py:90 msgid "registration required" msgstr "" -#: models/core.py:88 +#: models/core.py:90 msgid "If this is checked, only logged-in users will be able to view the page." msgstr "" -#: models/core.py:92 +#: models/core.py:94 msgid "flat page" msgstr "" -#: models/core.py:93 +#: models/core.py:95 msgid "flat pages" msgstr "" -#: models/core.py:114 +#: models/core.py:113 msgid "session key" msgstr "" -#: models/core.py:115 +#: models/core.py:114 msgid "session data" msgstr "" -#: models/core.py:116 +#: models/core.py:115 msgid "expire date" msgstr "" -#: models/core.py:118 +#: models/core.py:117 msgid "session" msgstr "" -#: models/core.py:119 +#: models/core.py:118 msgid "sessions" msgstr "" @@ -700,167 +700,171 @@ msgstr "" msgid "Simplified Chinese" msgstr "" -#: core/validators.py:58 +#: conf/global_settings.py:48 +msgid "Slovak" +msgstr "" + +#: core/validators.py:59 msgid "This value must contain only letters, numbers and underscores." msgstr "Este valor debe contener slo letras, nmeros y guin bajo." -#: core/validators.py:62 +#: core/validators.py:63 #, fuzzy msgid "This value must contain only letters, numbers, underscores and slashes." msgstr "Este valor debe contener slo letras, nmeros y guin bajo." -#: core/validators.py:70 +#: core/validators.py:71 msgid "Uppercase letters are not allowed here." msgstr "" -#: core/validators.py:74 +#: core/validators.py:75 msgid "Lowercase letters are not allowed here." msgstr "" -#: core/validators.py:81 +#: core/validators.py:82 msgid "Enter only digits separated by commas." msgstr "" -#: core/validators.py:93 +#: core/validators.py:94 msgid "Enter valid e-mail addresses separated by commas." msgstr "" -#: core/validators.py:100 +#: core/validators.py:98 msgid "Please enter a valid IP address." msgstr "" -#: core/validators.py:104 +#: core/validators.py:102 msgid "Empty values are not allowed here." msgstr "" -#: core/validators.py:108 +#: core/validators.py:106 msgid "Non-numeric characters aren't allowed here." msgstr "" -#: core/validators.py:112 +#: core/validators.py:110 msgid "This value can't be comprised solely of digits." msgstr "" -#: core/validators.py:117 +#: core/validators.py:115 msgid "Enter a whole number." msgstr "" -#: core/validators.py:121 +#: core/validators.py:119 msgid "Only alphabetical characters are allowed here." msgstr "" -#: core/validators.py:125 +#: core/validators.py:123 msgid "Enter a valid date in YYYY-MM-DD format." msgstr "" -#: core/validators.py:129 +#: core/validators.py:127 msgid "Enter a valid time in HH:MM format." msgstr "" -#: core/validators.py:133 +#: core/validators.py:131 msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." msgstr "" -#: core/validators.py:137 +#: core/validators.py:135 #, fuzzy msgid "Enter a valid e-mail address." msgstr "Direccin de correo:" -#: core/validators.py:149 +#: core/validators.py:147 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "" -#: core/validators.py:156 +#: core/validators.py:154 #, python-format msgid "The URL %s does not point to a valid image." msgstr "" -#: core/validators.py:160 +#: core/validators.py:158 #, python-format msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." msgstr "" -#: core/validators.py:168 +#: core/validators.py:166 #, python-format msgid "The URL %s does not point to a valid QuickTime video." msgstr "" -#: core/validators.py:172 +#: core/validators.py:170 msgid "A valid URL is required." msgstr "" -#: core/validators.py:186 +#: core/validators.py:184 #, python-format msgid "" "Valid HTML is required. Specific errors are:\n" "%s" msgstr "" -#: core/validators.py:193 +#: core/validators.py:191 #, python-format msgid "Badly formed XML: %s" msgstr "" -#: core/validators.py:203 +#: core/validators.py:201 #, python-format msgid "Invalid URL: %s" msgstr "" -#: core/validators.py:205 +#: core/validators.py:203 #, python-format msgid "The URL %s is a broken link." msgstr "" -#: core/validators.py:211 +#: core/validators.py:209 msgid "Enter a valid U.S. state abbreviation." msgstr "" -#: core/validators.py:226 +#: core/validators.py:224 #, python-format msgid "Watch your mouth! The word %s is not allowed here." msgid_plural "Watch your mouth! The words %s are not allowed here." msgstr[0] "" msgstr[1] "" -#: core/validators.py:233 +#: core/validators.py:231 #, python-format msgid "This field must match the '%s' field." msgstr "" -#: core/validators.py:252 +#: core/validators.py:250 msgid "Please enter something for at least one field." msgstr "" -#: core/validators.py:261 core/validators.py:272 +#: core/validators.py:259 core/validators.py:270 msgid "Please enter both fields or leave them both empty." msgstr "" -#: core/validators.py:279 +#: core/validators.py:277 #, python-format msgid "This field must be given if %(field)s is %(value)s" msgstr "" -#: core/validators.py:291 +#: core/validators.py:289 #, python-format msgid "This field must be given if %(field)s is not %(value)s" msgstr "" -#: core/validators.py:310 +#: core/validators.py:308 msgid "Duplicate values are not allowed." msgstr "" -#: core/validators.py:333 +#: core/validators.py:331 #, python-format msgid "This value must be a power of %s." msgstr "" -#: core/validators.py:344 +#: core/validators.py:342 msgid "Please enter a valid decimal number." msgstr "" -#: core/validators.py:346 +#: core/validators.py:344 #, python-format msgid "Please enter a valid decimal number with at most %s total digit." msgid_plural "" @@ -868,7 +872,7 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: core/validators.py:349 +#: core/validators.py:347 #, python-format msgid "Please enter a valid decimal number with at most %s decimal place." msgid_plural "" @@ -876,71 +880,71 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: core/validators.py:359 +#: core/validators.py:357 #, python-format msgid "Make sure your uploaded file is at least %s bytes big." msgstr "" -#: core/validators.py:360 +#: core/validators.py:358 #, python-format msgid "Make sure your uploaded file is at most %s bytes big." msgstr "" -#: core/validators.py:373 +#: core/validators.py:371 msgid "The format for this field is wrong." msgstr "" -#: core/validators.py:388 +#: core/validators.py:386 msgid "This field is invalid." msgstr "" -#: core/validators.py:423 +#: core/validators.py:421 #, python-format msgid "Could not retrieve anything from %s." msgstr "" -#: core/validators.py:426 +#: core/validators.py:424 #, python-format msgid "" "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." msgstr "" -#: core/validators.py:459 +#: core/validators.py:457 #, python-format msgid "" "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " "\"%(start)s\".)" msgstr "" -#: core/validators.py:463 +#: core/validators.py:461 #, python-format msgid "" "Some text starting on line %(line)s is not allowed in that context. (Line " "starts with \"%(start)s\".)" msgstr "" -#: core/validators.py:468 +#: core/validators.py:466 #, python-format msgid "" "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" "(start)s\".)" msgstr "" -#: core/validators.py:473 +#: core/validators.py:471 #, python-format msgid "" "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" "(start)s\".)" msgstr "" -#: core/validators.py:477 +#: core/validators.py:475 #, python-format msgid "" "A tag on line %(line)s is missing one or more required attributes. (Line " "starts with \"%(start)s\".)" msgstr "" -#: core/validators.py:482 +#: core/validators.py:480 #, python-format msgid "" "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " diff --git a/django/conf/locale/fr/LC_MESSAGES/django.po b/django/conf/locale/fr/LC_MESSAGES/django.po index 3d7fb33a85..5d87731c15 100644 --- a/django/conf/locale/fr/LC_MESSAGES/django.po +++ b/django/conf/locale/fr/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2005-11-04 09:29-0600\n" +"POT-Creation-Date: 2005-11-06 21:41-0600\n" "PO-Revision-Date: 2005-10-18 12:27+0200\n" "Last-Translator: Laurent Rahuel \n" "Language-Team: franais \n" @@ -418,55 +418,55 @@ msgstr "Nov." msgid "Dec." msgstr "Dc." -#: models/core.py:5 +#: models/core.py:7 msgid "domain name" msgstr "nom de domaine" -#: models/core.py:6 +#: models/core.py:8 msgid "display name" msgstr "nom afficher" -#: models/core.py:8 +#: models/core.py:10 msgid "site" msgstr "site" -#: models/core.py:9 +#: models/core.py:11 msgid "sites" msgstr "sites" -#: models/core.py:22 +#: models/core.py:24 msgid "label" msgstr "intitul" -#: models/core.py:23 models/core.py:34 models/auth.py:6 models/auth.py:19 +#: models/core.py:25 models/core.py:36 models/auth.py:6 models/auth.py:19 msgid "name" msgstr "nom" -#: models/core.py:25 +#: models/core.py:27 msgid "package" msgstr "paquetage" -#: models/core.py:26 +#: models/core.py:28 msgid "packages" msgstr "paquetages" -#: models/core.py:36 +#: models/core.py:38 msgid "python module name" msgstr "nom du module python" -#: models/core.py:38 +#: models/core.py:40 msgid "content type" msgstr "type de contenu" -#: models/core.py:39 +#: models/core.py:41 msgid "content types" msgstr "types de contenu" -#: models/core.py:62 +#: models/core.py:64 msgid "redirect from" msgstr "redirig depuis" -#: models/core.py:63 +#: models/core.py:65 msgid "" "This should be an absolute path, excluding the domain name. Example: '/" "events/search/'." @@ -474,11 +474,11 @@ msgstr "" "Ceci doit tre un chemin absolu, sans nom de domaine. Par exemple: '/events/" "search/'." -#: models/core.py:64 +#: models/core.py:66 msgid "redirect to" msgstr "redirig vers" -#: models/core.py:65 +#: models/core.py:67 msgid "" "This can be either an absolute path (as above) or a full URL starting with " "'http://'." @@ -486,42 +486,42 @@ msgstr "" "Ceci peut tre soit un chemin absolu (voir ci-dessus) soit une URL complte " "dbutant par 'http://'." -#: models/core.py:67 +#: models/core.py:69 msgid "redirect" msgstr "redirection" -#: models/core.py:68 +#: models/core.py:70 msgid "redirects" msgstr "redirections" -#: models/core.py:81 +#: models/core.py:83 msgid "URL" msgstr "URL" -#: models/core.py:82 +#: models/core.py:84 msgid "" "Example: '/about/contact/'. Make sure to have leading and trailing slashes." msgstr "" "Par exemple : '/about/contact/'. Vrifiez la prsence du caractre '/' en " "dbut et en fin de chaine." -#: models/core.py:83 +#: models/core.py:85 msgid "title" msgstr "titre" -#: models/core.py:84 +#: models/core.py:86 msgid "content" msgstr "contenu" -#: models/core.py:85 +#: models/core.py:87 msgid "enable comments" msgstr "autoriser les commentaires" -#: models/core.py:86 +#: models/core.py:88 msgid "template name" msgstr "nom du template" -#: models/core.py:87 +#: models/core.py:89 msgid "" "Example: 'flatfiles/contact_page'. If this isn't provided, the system will " "use 'flatfiles/default'." @@ -529,41 +529,41 @@ msgstr "" "Par exemple: 'flatfiles/contact_page'. Sans dfinition, le systme utilisera " "'flatfiles/default'." -#: models/core.py:88 +#: models/core.py:90 msgid "registration required" msgstr "enregistrement requis" -#: models/core.py:88 +#: models/core.py:90 msgid "If this is checked, only logged-in users will be able to view the page." msgstr "" "Si coch, seuls les utilisateurs connects auront la possibilit de voir " "cette page." -#: models/core.py:92 +#: models/core.py:94 msgid "flat page" msgstr "page plat" -#: models/core.py:93 +#: models/core.py:95 msgid "flat pages" msgstr "pages plat" -#: models/core.py:114 +#: models/core.py:113 msgid "session key" msgstr "cl de session" -#: models/core.py:115 +#: models/core.py:114 msgid "session data" msgstr "donne de session" -#: models/core.py:116 +#: models/core.py:115 msgid "expire date" msgstr "date d'expiration" -#: models/core.py:118 +#: models/core.py:117 msgid "session" msgstr "session" -#: models/core.py:119 +#: models/core.py:118 msgid "sessions" msgstr "sessions" @@ -710,74 +710,78 @@ msgstr "Serbe" msgid "Simplified Chinese" msgstr "" -#: core/validators.py:58 +#: conf/global_settings.py:48 +msgid "Slovak" +msgstr "" + +#: core/validators.py:59 msgid "This value must contain only letters, numbers and underscores." msgstr "" "Ce champ ne doit contenir que des lettres, des nombres et des sous-tirets." -#: core/validators.py:62 +#: core/validators.py:63 msgid "This value must contain only letters, numbers, underscores and slashes." msgstr "" "Ce champ ne doit contenir que des lettres, des nombres, des sous-tirets et " "des '/'." -#: core/validators.py:70 +#: core/validators.py:71 msgid "Uppercase letters are not allowed here." msgstr "Les lettres majuscules ne sont pas autorises ici." -#: core/validators.py:74 +#: core/validators.py:75 msgid "Lowercase letters are not allowed here." msgstr "Les lettres minuscules ne sont pas autorises ici." -#: core/validators.py:81 +#: core/validators.py:82 msgid "Enter only digits separated by commas." msgstr "Seulement des chiffres ([0-9]), spars par des virgules." -#: core/validators.py:93 +#: core/validators.py:94 msgid "Enter valid e-mail addresses separated by commas." msgstr "Entrez des adresses de courriel valides spares par des virgules." -#: core/validators.py:100 +#: core/validators.py:98 msgid "Please enter a valid IP address." msgstr "Entrez une adresse IP valide." -#: core/validators.py:104 +#: core/validators.py:102 msgid "Empty values are not allowed here." msgstr "Vous ne pouvez pas laisser ce champ vide." -#: core/validators.py:108 +#: core/validators.py:106 msgid "Non-numeric characters aren't allowed here." msgstr "Les caractres non numriques ne sont pas autoriss ici." -#: core/validators.py:112 +#: core/validators.py:110 msgid "This value can't be comprised solely of digits." msgstr "Cette valeur ne peut contenir que des chiffres [0-9]." -#: core/validators.py:117 +#: core/validators.py:115 msgid "Enter a whole number." msgstr "Entrez un nombre entier." -#: core/validators.py:121 +#: core/validators.py:119 msgid "Only alphabetical characters are allowed here." msgstr "Seules les lettres de l'alphabet sont autorises ici." -#: core/validators.py:125 +#: core/validators.py:123 msgid "Enter a valid date in YYYY-MM-DD format." msgstr "Entrez une date valide au format AAAA-MM-JJ." -#: core/validators.py:129 +#: core/validators.py:127 msgid "Enter a valid time in HH:MM format." msgstr "Entrez une heure valide au format HH:MM." -#: core/validators.py:133 +#: core/validators.py:131 msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." msgstr "Entrez une date et une heure valide au format AAAA-MM-JJ HH:MM." -#: core/validators.py:137 +#: core/validators.py:135 msgid "Enter a valid e-mail address." msgstr "Entrez une adresse de courriel valide." -#: core/validators.py:149 +#: core/validators.py:147 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." @@ -785,28 +789,28 @@ msgstr "" "Envoyez une image valide. Le fichier que vous avez transfer n'est pas une " "image ou bien est une image corrompue." -#: core/validators.py:156 +#: core/validators.py:154 #, python-format msgid "The URL %s does not point to a valid image." msgstr "L'URL %s ne pointe pas vers une image valide." -#: core/validators.py:160 +#: core/validators.py:158 #, python-format msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." msgstr "" "Les numros de tlphone doivent tre au format XX XX XX XX XX. \"%s\" est " "incorrect." -#: core/validators.py:168 +#: core/validators.py:166 #, python-format msgid "The URL %s does not point to a valid QuickTime video." msgstr "L'URL %s ne pointe pas vers une vido QuickTime valide." -#: core/validators.py:172 +#: core/validators.py:170 msgid "A valid URL is required." msgstr "Une URL valide est requise." -#: core/validators.py:186 +#: core/validators.py:184 #, python-format msgid "" "Valid HTML is required. Specific errors are:\n" @@ -815,69 +819,69 @@ msgstr "" "Du HTML valide est requis. Les erreurs spcifiques sont:\n" "%s" -#: core/validators.py:193 +#: core/validators.py:191 #, python-format msgid "Badly formed XML: %s" msgstr "XML mal form: %s" -#: core/validators.py:203 +#: core/validators.py:201 #, python-format msgid "Invalid URL: %s" msgstr "URL invalide: %s" -#: core/validators.py:205 +#: core/validators.py:203 #, python-format msgid "The URL %s is a broken link." msgstr "L'URL %s est un lien cass." -#: core/validators.py:211 +#: core/validators.py:209 msgid "Enter a valid U.S. state abbreviation." msgstr "Entrez une abrviation d'tat amricain valide." -#: core/validators.py:226 +#: core/validators.py:224 #, python-format msgid "Watch your mouth! The word %s is not allowed here." msgid_plural "Watch your mouth! The words %s are not allowed here." msgstr[0] "Attention votre langage,! Le mot %s n'est pas autoris ici." msgstr[1] "Attention votre langage,! Les mots %s ne sont pas autoriss ici." -#: core/validators.py:233 +#: core/validators.py:231 #, python-format msgid "This field must match the '%s' field." msgstr "Ce champ doit correspondre au champ '%s'." -#: core/validators.py:252 +#: core/validators.py:250 msgid "Please enter something for at least one field." msgstr "S'il vous plat, saisissez au moins une valeur dans un des champs." -#: core/validators.py:261 core/validators.py:272 +#: core/validators.py:259 core/validators.py:270 msgid "Please enter both fields or leave them both empty." msgstr "S'il vous plat, renseignez chaque champ ou laissez les deux vides." -#: core/validators.py:279 +#: core/validators.py:277 #, python-format msgid "This field must be given if %(field)s is %(value)s" msgstr "Ce champ doit tre renseign si %(field)s vaut %(value)s" -#: core/validators.py:291 +#: core/validators.py:289 #, python-format msgid "This field must be given if %(field)s is not %(value)s" msgstr "Ce champ doit tre renseign si %(field)s ne vaut pas %(value)s" -#: core/validators.py:310 +#: core/validators.py:308 msgid "Duplicate values are not allowed." msgstr "Des valeurs identiques ne sont pas autorises." -#: core/validators.py:333 +#: core/validators.py:331 #, python-format msgid "This value must be a power of %s." msgstr "Cette valeur doit tre une puissance de %s." -#: core/validators.py:344 +#: core/validators.py:342 msgid "Please enter a valid decimal number." msgstr "S'il vous plat, saisissez un nombre dcimal valide." -#: core/validators.py:346 +#: core/validators.py:344 #, python-format msgid "Please enter a valid decimal number with at most %s total digit." msgid_plural "" @@ -887,7 +891,7 @@ msgstr[0] "" msgstr[1] "" "S'il vous plat, saisissez un nombre dcimal valide avec au plus %s chiffres." -#: core/validators.py:349 +#: core/validators.py:347 #, python-format msgid "Please enter a valid decimal number with at most %s decimal place." msgid_plural "" @@ -897,32 +901,32 @@ msgstr[0] "" msgstr[1] "" "S'il vous plat, saisissez un nombre dcimal valide avec au plus %s dcimales" -#: core/validators.py:359 +#: core/validators.py:357 #, python-format msgid "Make sure your uploaded file is at least %s bytes big." msgstr "" "Vrifiez que le fichier transfr fait au moins une taille de %s octets." -#: core/validators.py:360 +#: core/validators.py:358 #, python-format msgid "Make sure your uploaded file is at most %s bytes big." msgstr "" "Vrifiez que le fichier transfr fait au plus une taille de %s octets." -#: core/validators.py:373 +#: core/validators.py:371 msgid "The format for this field is wrong." msgstr "Le format de ce champ est mauvais." -#: core/validators.py:388 +#: core/validators.py:386 msgid "This field is invalid." msgstr "Ce champ est invalide." -#: core/validators.py:423 +#: core/validators.py:421 #, python-format msgid "Could not retrieve anything from %s." msgstr "Impossible de rcuprer quoi que ce soit depuis %s." -#: core/validators.py:426 +#: core/validators.py:424 #, python-format msgid "" "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." @@ -930,7 +934,7 @@ msgstr "" "L'entte Content-Type '%(contenttype)s', renvoye par l'url %(url)s n'est " "pas valide." -#: core/validators.py:459 +#: core/validators.py:457 #, python-format msgid "" "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " @@ -939,7 +943,7 @@ msgstr "" "Veuillez fermer le tag %(tag)s de la ligne %(line)s. (La ligne dbutant par " "\"%(start)s\".)" -#: core/validators.py:463 +#: core/validators.py:461 #, python-format msgid "" "Some text starting on line %(line)s is not allowed in that context. (Line " @@ -948,7 +952,7 @@ msgstr "" "Du texte commenant la ligne %(line)s n'est pas autoris dans ce contexte. " "(Ligne dbutant par \"%(start)s\".)" -#: core/validators.py:468 +#: core/validators.py:466 #, python-format msgid "" "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" @@ -957,7 +961,7 @@ msgstr "" "\"%(attr)s\" ligne %(line)s n'est pas un attribut valide. (Ligne dbutant " "par \"%(start)s\".)" -#: core/validators.py:473 +#: core/validators.py:471 #, python-format msgid "" "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" @@ -966,7 +970,7 @@ msgstr "" "\"<%(tag)s>\" ligne %(line)s n'est pas un tag valide. (Ligne dbutant par \"%" "(start)s\".)" -#: core/validators.py:477 +#: core/validators.py:475 #, python-format msgid "" "A tag on line %(line)s is missing one or more required attributes. (Line " @@ -975,7 +979,7 @@ msgstr "" "Un tag, ou un ou plusieurs attributs, de la ligne %(line)s est manquant. " "(Ligne dbutant par \"%(start)s\".)" -#: core/validators.py:482 +#: core/validators.py:480 #, python-format msgid "" "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " diff --git a/django/conf/locale/gl/LC_MESSAGES/django.po b/django/conf/locale/gl/LC_MESSAGES/django.po index be76b18722..0f39a0f20f 100644 --- a/django/conf/locale/gl/LC_MESSAGES/django.po +++ b/django/conf/locale/gl/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2005-11-04 09:29-0600\n" +"POT-Creation-Date: 2005-11-06 21:41-0600\n" "PO-Revision-Date: 2005-10-16 14:29+0100\n" "Last-Translator: Afonso Fernández Nogueira \n" "Language-Team: Galego\n" @@ -417,143 +417,143 @@ msgstr "" msgid "Dec." msgstr "" -#: models/core.py:5 +#: models/core.py:7 msgid "domain name" msgstr "" -#: models/core.py:6 +#: models/core.py:8 msgid "display name" msgstr "" -#: models/core.py:8 +#: models/core.py:10 msgid "site" msgstr "" -#: models/core.py:9 +#: models/core.py:11 msgid "sites" msgstr "" -#: models/core.py:22 +#: models/core.py:24 msgid "label" msgstr "" -#: models/core.py:23 models/core.py:34 models/auth.py:6 models/auth.py:19 +#: models/core.py:25 models/core.py:36 models/auth.py:6 models/auth.py:19 #, fuzzy msgid "name" msgstr "Usuario:" -#: models/core.py:25 +#: models/core.py:27 msgid "package" msgstr "" -#: models/core.py:26 +#: models/core.py:28 msgid "packages" msgstr "" -#: models/core.py:36 +#: models/core.py:38 msgid "python module name" msgstr "" -#: models/core.py:38 +#: models/core.py:40 msgid "content type" msgstr "" -#: models/core.py:39 +#: models/core.py:41 msgid "content types" msgstr "" -#: models/core.py:62 +#: models/core.py:64 msgid "redirect from" msgstr "" -#: models/core.py:63 +#: models/core.py:65 msgid "" "This should be an absolute path, excluding the domain name. Example: '/" "events/search/'." msgstr "" -#: models/core.py:64 +#: models/core.py:66 msgid "redirect to" msgstr "" -#: models/core.py:65 +#: models/core.py:67 msgid "" "This can be either an absolute path (as above) or a full URL starting with " "'http://'." msgstr "" -#: models/core.py:67 +#: models/core.py:69 msgid "redirect" msgstr "" -#: models/core.py:68 +#: models/core.py:70 msgid "redirects" msgstr "" -#: models/core.py:81 +#: models/core.py:83 msgid "URL" msgstr "" -#: models/core.py:82 +#: models/core.py:84 msgid "" "Example: '/about/contact/'. Make sure to have leading and trailing slashes." msgstr "" -#: models/core.py:83 +#: models/core.py:85 msgid "title" msgstr "" -#: models/core.py:84 +#: models/core.py:86 msgid "content" msgstr "" -#: models/core.py:85 +#: models/core.py:87 msgid "enable comments" msgstr "" -#: models/core.py:86 +#: models/core.py:88 msgid "template name" msgstr "" -#: models/core.py:87 +#: models/core.py:89 msgid "" "Example: 'flatfiles/contact_page'. If this isn't provided, the system will " "use 'flatfiles/default'." msgstr "" -#: models/core.py:88 +#: models/core.py:90 msgid "registration required" msgstr "" -#: models/core.py:88 +#: models/core.py:90 msgid "If this is checked, only logged-in users will be able to view the page." msgstr "" -#: models/core.py:92 +#: models/core.py:94 msgid "flat page" msgstr "" -#: models/core.py:93 +#: models/core.py:95 msgid "flat pages" msgstr "" -#: models/core.py:114 +#: models/core.py:113 msgid "session key" msgstr "" -#: models/core.py:115 +#: models/core.py:114 msgid "session data" msgstr "" -#: models/core.py:116 +#: models/core.py:115 msgid "expire date" msgstr "" -#: models/core.py:118 +#: models/core.py:117 msgid "session" msgstr "" -#: models/core.py:119 +#: models/core.py:118 msgid "sessions" msgstr "" @@ -699,167 +699,171 @@ msgstr "" msgid "Simplified Chinese" msgstr "" -#: core/validators.py:58 +#: conf/global_settings.py:48 +msgid "Slovak" +msgstr "" + +#: core/validators.py:59 msgid "This value must contain only letters, numbers and underscores." msgstr "Este valor soamente pode conter letras, números e guións baixos (_)." -#: core/validators.py:62 +#: core/validators.py:63 #, fuzzy msgid "This value must contain only letters, numbers, underscores and slashes." msgstr "Este valor soamente pode conter letras, números e guións baixos (_)." -#: core/validators.py:70 +#: core/validators.py:71 msgid "Uppercase letters are not allowed here." msgstr "" -#: core/validators.py:74 +#: core/validators.py:75 msgid "Lowercase letters are not allowed here." msgstr "" -#: core/validators.py:81 +#: core/validators.py:82 msgid "Enter only digits separated by commas." msgstr "" -#: core/validators.py:93 +#: core/validators.py:94 msgid "Enter valid e-mail addresses separated by commas." msgstr "" -#: core/validators.py:100 +#: core/validators.py:98 msgid "Please enter a valid IP address." msgstr "" -#: core/validators.py:104 +#: core/validators.py:102 msgid "Empty values are not allowed here." msgstr "" -#: core/validators.py:108 +#: core/validators.py:106 msgid "Non-numeric characters aren't allowed here." msgstr "" -#: core/validators.py:112 +#: core/validators.py:110 msgid "This value can't be comprised solely of digits." msgstr "" -#: core/validators.py:117 +#: core/validators.py:115 msgid "Enter a whole number." msgstr "" -#: core/validators.py:121 +#: core/validators.py:119 msgid "Only alphabetical characters are allowed here." msgstr "" -#: core/validators.py:125 +#: core/validators.py:123 msgid "Enter a valid date in YYYY-MM-DD format." msgstr "" -#: core/validators.py:129 +#: core/validators.py:127 msgid "Enter a valid time in HH:MM format." msgstr "" -#: core/validators.py:133 +#: core/validators.py:131 msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." msgstr "" -#: core/validators.py:137 +#: core/validators.py:135 #, fuzzy msgid "Enter a valid e-mail address." msgstr "Enderezo de correo electrónico:" -#: core/validators.py:149 +#: core/validators.py:147 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "" -#: core/validators.py:156 +#: core/validators.py:154 #, python-format msgid "The URL %s does not point to a valid image." msgstr "" -#: core/validators.py:160 +#: core/validators.py:158 #, python-format msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." msgstr "" -#: core/validators.py:168 +#: core/validators.py:166 #, python-format msgid "The URL %s does not point to a valid QuickTime video." msgstr "" -#: core/validators.py:172 +#: core/validators.py:170 msgid "A valid URL is required." msgstr "" -#: core/validators.py:186 +#: core/validators.py:184 #, python-format msgid "" "Valid HTML is required. Specific errors are:\n" "%s" msgstr "" -#: core/validators.py:193 +#: core/validators.py:191 #, python-format msgid "Badly formed XML: %s" msgstr "" -#: core/validators.py:203 +#: core/validators.py:201 #, python-format msgid "Invalid URL: %s" msgstr "" -#: core/validators.py:205 +#: core/validators.py:203 #, python-format msgid "The URL %s is a broken link." msgstr "" -#: core/validators.py:211 +#: core/validators.py:209 msgid "Enter a valid U.S. state abbreviation." msgstr "" -#: core/validators.py:226 +#: core/validators.py:224 #, python-format msgid "Watch your mouth! The word %s is not allowed here." msgid_plural "Watch your mouth! The words %s are not allowed here." msgstr[0] "" msgstr[1] "" -#: core/validators.py:233 +#: core/validators.py:231 #, python-format msgid "This field must match the '%s' field." msgstr "" -#: core/validators.py:252 +#: core/validators.py:250 msgid "Please enter something for at least one field." msgstr "" -#: core/validators.py:261 core/validators.py:272 +#: core/validators.py:259 core/validators.py:270 msgid "Please enter both fields or leave them both empty." msgstr "" -#: core/validators.py:279 +#: core/validators.py:277 #, python-format msgid "This field must be given if %(field)s is %(value)s" msgstr "" -#: core/validators.py:291 +#: core/validators.py:289 #, python-format msgid "This field must be given if %(field)s is not %(value)s" msgstr "" -#: core/validators.py:310 +#: core/validators.py:308 msgid "Duplicate values are not allowed." msgstr "" -#: core/validators.py:333 +#: core/validators.py:331 #, python-format msgid "This value must be a power of %s." msgstr "" -#: core/validators.py:344 +#: core/validators.py:342 msgid "Please enter a valid decimal number." msgstr "" -#: core/validators.py:346 +#: core/validators.py:344 #, python-format msgid "Please enter a valid decimal number with at most %s total digit." msgid_plural "" @@ -867,7 +871,7 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: core/validators.py:349 +#: core/validators.py:347 #, python-format msgid "Please enter a valid decimal number with at most %s decimal place." msgid_plural "" @@ -875,71 +879,71 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: core/validators.py:359 +#: core/validators.py:357 #, python-format msgid "Make sure your uploaded file is at least %s bytes big." msgstr "" -#: core/validators.py:360 +#: core/validators.py:358 #, python-format msgid "Make sure your uploaded file is at most %s bytes big." msgstr "" -#: core/validators.py:373 +#: core/validators.py:371 msgid "The format for this field is wrong." msgstr "" -#: core/validators.py:388 +#: core/validators.py:386 msgid "This field is invalid." msgstr "" -#: core/validators.py:423 +#: core/validators.py:421 #, python-format msgid "Could not retrieve anything from %s." msgstr "" -#: core/validators.py:426 +#: core/validators.py:424 #, python-format msgid "" "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." msgstr "" -#: core/validators.py:459 +#: core/validators.py:457 #, python-format msgid "" "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " "\"%(start)s\".)" msgstr "" -#: core/validators.py:463 +#: core/validators.py:461 #, python-format msgid "" "Some text starting on line %(line)s is not allowed in that context. (Line " "starts with \"%(start)s\".)" msgstr "" -#: core/validators.py:468 +#: core/validators.py:466 #, python-format msgid "" "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" "(start)s\".)" msgstr "" -#: core/validators.py:473 +#: core/validators.py:471 #, python-format msgid "" "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" "(start)s\".)" msgstr "" -#: core/validators.py:477 +#: core/validators.py:475 #, python-format msgid "" "A tag on line %(line)s is missing one or more required attributes. (Line " "starts with \"%(start)s\".)" msgstr "" -#: core/validators.py:482 +#: core/validators.py:480 #, python-format msgid "" "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " diff --git a/django/conf/locale/it/LC_MESSAGES/django.po b/django/conf/locale/it/LC_MESSAGES/django.po index 573012ce87..8f1fb83ca8 100644 --- a/django/conf/locale/it/LC_MESSAGES/django.po +++ b/django/conf/locale/it/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2005-11-04 09:29-0600\n" +"POT-Creation-Date: 2005-11-06 21:41-0600\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -416,55 +416,55 @@ msgstr "Nov." msgid "Dec." msgstr "Dic." -#: models/core.py:5 +#: models/core.py:7 msgid "domain name" msgstr "nome a dominio" -#: models/core.py:6 +#: models/core.py:8 msgid "display name" msgstr "nome visualizzato" -#: models/core.py:8 +#: models/core.py:10 msgid "site" msgstr "sito" -#: models/core.py:9 +#: models/core.py:11 msgid "sites" msgstr "siti" -#: models/core.py:22 +#: models/core.py:24 msgid "label" msgstr "etichetta" -#: models/core.py:23 models/core.py:34 models/auth.py:6 models/auth.py:19 +#: models/core.py:25 models/core.py:36 models/auth.py:6 models/auth.py:19 msgid "name" msgstr "nome" -#: models/core.py:25 +#: models/core.py:27 msgid "package" msgstr "pacchetto" -#: models/core.py:26 +#: models/core.py:28 msgid "packages" msgstr "pacchetti" -#: models/core.py:36 +#: models/core.py:38 msgid "python module name" msgstr "nome del modulo python" -#: models/core.py:38 +#: models/core.py:40 msgid "content type" msgstr "tipo di contenuto" -#: models/core.py:39 +#: models/core.py:41 msgid "content types" msgstr "tipo di contenuti" -#: models/core.py:62 +#: models/core.py:64 msgid "redirect from" msgstr "redirigi da" -#: models/core.py:63 +#: models/core.py:65 msgid "" "This should be an absolute path, excluding the domain name. Example: '/" "events/search/'." @@ -472,52 +472,52 @@ msgstr "" "Un percorso assoluto, senza nome a dominio. Esempio: '/events/search/'.Un " "percorso assoluto, senza nome a dominio. Esempio: '/events/search/'." -#: models/core.py:64 +#: models/core.py:66 msgid "redirect to" msgstr "redirigi verso" -#: models/core.py:65 +#: models/core.py:67 msgid "" "This can be either an absolute path (as above) or a full URL starting with " "'http://'." msgstr "" "Un percorso assoluto (come sopra) o un URL completa che inizi con 'http://'." -#: models/core.py:67 +#: models/core.py:69 msgid "redirect" msgstr "redirigi" -#: models/core.py:68 +#: models/core.py:70 msgid "redirects" msgstr "redirezioni" -#: models/core.py:81 +#: models/core.py:83 msgid "URL" msgstr "URL" -#: models/core.py:82 +#: models/core.py:84 msgid "" "Example: '/about/contact/'. Make sure to have leading and trailing slashes." msgstr "" "Esempio: '/about/contact/'. Attenzione alla barra ('/') iniziale e finale." -#: models/core.py:83 +#: models/core.py:85 msgid "title" msgstr "titolo" -#: models/core.py:84 +#: models/core.py:86 msgid "content" msgstr "contenuto" -#: models/core.py:85 +#: models/core.py:87 msgid "enable comments" msgstr "abilita commenti" -#: models/core.py:86 +#: models/core.py:88 msgid "template name" msgstr "nome modello" -#: models/core.py:87 +#: models/core.py:89 msgid "" "Example: 'flatfiles/contact_page'. If this isn't provided, the system will " "use 'flatfiles/default'." @@ -525,39 +525,39 @@ msgstr "" "Esempio: 'flatfiles/contact_page'. Se non specificato, il sistema user " "'flatfiles/default'." -#: models/core.py:88 +#: models/core.py:90 msgid "registration required" msgstr "registrazione obbligatoria" -#: models/core.py:88 +#: models/core.py:90 msgid "If this is checked, only logged-in users will be able to view the page." msgstr "Se selezionata, solo gli utenti registrati potranno vedere la pagina." -#: models/core.py:92 +#: models/core.py:94 msgid "flat page" msgstr "pagina statica" -#: models/core.py:93 +#: models/core.py:95 msgid "flat pages" msgstr "pagine statiche" -#: models/core.py:114 +#: models/core.py:113 msgid "session key" msgstr "chiave di sessione" -#: models/core.py:115 +#: models/core.py:114 msgid "session data" msgstr "dati di sessione" -#: models/core.py:116 +#: models/core.py:115 msgid "expire date" msgstr "data di scadenza" -#: models/core.py:118 +#: models/core.py:117 msgid "session" msgstr "sessione" -#: models/core.py:119 +#: models/core.py:118 msgid "sessions" msgstr "sessioni" @@ -702,99 +702,103 @@ msgstr "Serbo" msgid "Simplified Chinese" msgstr "" -#: core/validators.py:58 +#: conf/global_settings.py:48 +msgid "Slovak" +msgstr "" + +#: core/validators.py:59 msgid "This value must contain only letters, numbers and underscores." msgstr "Sono ammesse solo lettere, numeri e sottolineature ('_')." -#: core/validators.py:62 +#: core/validators.py:63 msgid "This value must contain only letters, numbers, underscores and slashes." msgstr "Sono ammesse solo lettere, numeri, sottolineature ('_') e barre ('/')." -#: core/validators.py:70 +#: core/validators.py:71 msgid "Uppercase letters are not allowed here." msgstr "Non sono ammesse lettere maiuscole." -#: core/validators.py:74 +#: core/validators.py:75 msgid "Lowercase letters are not allowed here." msgstr "Non sono ammesse lettere minuscole." -#: core/validators.py:81 +#: core/validators.py:82 msgid "Enter only digits separated by commas." msgstr "Inserire solo numeri separati da virgole." -#: core/validators.py:93 +#: core/validators.py:94 msgid "Enter valid e-mail addresses separated by commas." msgstr "Inserire indirizzi e-mail validi separati da virgole." -#: core/validators.py:100 +#: core/validators.py:98 msgid "Please enter a valid IP address." msgstr "Inserire un indirizzo IP valido." -#: core/validators.py:104 +#: core/validators.py:102 msgid "Empty values are not allowed here." msgstr "E' necessario inserire un valore." -#: core/validators.py:108 +#: core/validators.py:106 msgid "Non-numeric characters aren't allowed here." msgstr "Sono ammessi soltanto caratteri alfabetici." -#: core/validators.py:112 +#: core/validators.py:110 msgid "This value can't be comprised solely of digits." msgstr "Il valore non pu essere composto solo da cifre." -#: core/validators.py:117 +#: core/validators.py:115 msgid "Enter a whole number." msgstr "Inserire un numero." -#: core/validators.py:121 +#: core/validators.py:119 msgid "Only alphabetical characters are allowed here." msgstr "Sono ammessi solo caratteri alfabetici." -#: core/validators.py:125 +#: core/validators.py:123 msgid "Enter a valid date in YYYY-MM-DD format." msgstr "Inserire un data valida in formato YYYY-MM-DD." -#: core/validators.py:129 +#: core/validators.py:127 msgid "Enter a valid time in HH:MM format." msgstr "Inserire un orario valido in formato HH:MM." -#: core/validators.py:133 +#: core/validators.py:131 msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." msgstr "Inserire una data/ora in formato YYYY-MM-DD HH:MM." -#: core/validators.py:137 +#: core/validators.py:135 msgid "Enter a valid e-mail address." msgstr "Inserire un indirizzo e-mail valido." -#: core/validators.py:149 +#: core/validators.py:147 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "" "Caricare un'immagine valida. Il file inserito non un'immagine o corrotto." -#: core/validators.py:156 +#: core/validators.py:154 #, python-format msgid "The URL %s does not point to a valid image." msgstr "L'URL %s non punta ad un'immagine valida." -#: core/validators.py:160 +#: core/validators.py:158 #, python-format msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." msgstr "" "I numeri di telefono devono essere in formato XXX-XXX-XXXX. \"%s\" non " "valido." -#: core/validators.py:168 +#: core/validators.py:166 #, python-format msgid "The URL %s does not point to a valid QuickTime video." msgstr "L'URL %s non punta ad un video QuickTime valido." -#: core/validators.py:172 +#: core/validators.py:170 msgid "A valid URL is required." msgstr "Inserire un URL valido." -#: core/validators.py:186 +#: core/validators.py:184 #, python-format msgid "" "Valid HTML is required. Specific errors are:\n" @@ -803,69 +807,69 @@ msgstr "" "E' richiesto HTML valido. Gli errori sono i seguenti:\n" "%s" -#: core/validators.py:193 +#: core/validators.py:191 #, python-format msgid "Badly formed XML: %s" msgstr "XML malformato: %s" -#: core/validators.py:203 +#: core/validators.py:201 #, python-format msgid "Invalid URL: %s" msgstr "URL non valida: %s" -#: core/validators.py:205 +#: core/validators.py:203 #, python-format msgid "The URL %s is a broken link." msgstr "L'URL %s un link rotto." -#: core/validators.py:211 +#: core/validators.py:209 msgid "Enter a valid U.S. state abbreviation." msgstr "Inserire un nome di stato americano abbreviato valido." -#: core/validators.py:226 +#: core/validators.py:224 #, python-format msgid "Watch your mouth! The word %s is not allowed here." msgid_plural "Watch your mouth! The words %s are not allowed here." msgstr[0] "Attenzione! La parola %s non ammessa qui." msgstr[1] "Attenzione! Le parole %s non sono ammesse qui." -#: core/validators.py:233 +#: core/validators.py:231 #, python-format msgid "This field must match the '%s' field." msgstr "Questo campo deve corrispondere al campo '%s'." -#: core/validators.py:252 +#: core/validators.py:250 msgid "Please enter something for at least one field." msgstr "Inserire almeno un campo." -#: core/validators.py:261 core/validators.py:272 +#: core/validators.py:259 core/validators.py:270 msgid "Please enter both fields or leave them both empty." msgstr "Inserire entrambi i campi o lasciarli entrambi vuoti." -#: core/validators.py:279 +#: core/validators.py:277 #, python-format msgid "This field must be given if %(field)s is %(value)s" msgstr "Il campo obbligatorio se %(field)s %(value)s" -#: core/validators.py:291 +#: core/validators.py:289 #, python-format msgid "This field must be given if %(field)s is not %(value)s" msgstr "Il campo non pu essere valorizzato se %(field)s non %(value)s" -#: core/validators.py:310 +#: core/validators.py:308 msgid "Duplicate values are not allowed." msgstr "Non sono ammessi valori duplicati." -#: core/validators.py:333 +#: core/validators.py:331 #, python-format msgid "This value must be a power of %s." msgstr "Il valore deve essere una potenza di %s." -#: core/validators.py:344 +#: core/validators.py:342 msgid "Please enter a valid decimal number." msgstr "Inserire un numero decimale valido." -#: core/validators.py:346 +#: core/validators.py:344 #, python-format msgid "Please enter a valid decimal number with at most %s total digit." msgid_plural "" @@ -873,7 +877,7 @@ msgid_plural "" msgstr[0] "Inserire un numero decimale con non pi di %s cifre totali." msgstr[1] "" -#: core/validators.py:349 +#: core/validators.py:347 #, python-format msgid "Please enter a valid decimal number with at most %s decimal place." msgid_plural "" @@ -881,30 +885,30 @@ msgid_plural "" msgstr[0] "Inserire un decimale con non pi di %s cifre decimali." msgstr[1] "" -#: core/validators.py:359 +#: core/validators.py:357 #, python-format msgid "Make sure your uploaded file is at least %s bytes big." msgstr "Verifica che il file inserito sia almeno di %s byte." -#: core/validators.py:360 +#: core/validators.py:358 #, python-format msgid "Make sure your uploaded file is at most %s bytes big." msgstr "Verifica che il file inserito sia al massimo %d byte." -#: core/validators.py:373 +#: core/validators.py:371 msgid "The format for this field is wrong." msgstr "Formato del file non valido." -#: core/validators.py:388 +#: core/validators.py:386 msgid "This field is invalid." msgstr "Il campo non valido." -#: core/validators.py:423 +#: core/validators.py:421 #, python-format msgid "Could not retrieve anything from %s." msgstr "Impossibile recuperare alcunch da %s." -#: core/validators.py:426 +#: core/validators.py:424 #, python-format msgid "" "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." @@ -912,7 +916,7 @@ msgstr "" "L'URL %(url)s restituisce un Content-Type header non valido '%(contenttype)" "s'." -#: core/validators.py:459 +#: core/validators.py:457 #, python-format msgid "" "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " @@ -921,7 +925,7 @@ msgstr "" "Il tag %(tag)s alla linea %(line)s non chiuso. (La linea comincia con \"%" "(start)s\".)" -#: core/validators.py:463 +#: core/validators.py:461 #, python-format msgid "" "Some text starting on line %(line)s is not allowed in that context. (Line " @@ -930,7 +934,7 @@ msgstr "" "Il testo che comincia a linea %(line)s non e' ammesso in questo contesto. " "(La linea comincia con \"%(start)s\".)" -#: core/validators.py:468 +#: core/validators.py:466 #, python-format msgid "" "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" @@ -939,7 +943,7 @@ msgstr "" "\"%(attr)s\" alla linea %(line)s un attributo invalido. (La linea comincia " "con \"%(start)s\".)" -#: core/validators.py:473 +#: core/validators.py:471 #, python-format msgid "" "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" @@ -948,7 +952,7 @@ msgstr "" "\"<%(tag)s>\" alla linea %(line)s tag non valido. (La linea comincia con \"%" "(start)s\".)" -#: core/validators.py:477 +#: core/validators.py:475 #, python-format msgid "" "A tag on line %(line)s is missing one or more required attributes. (Line " @@ -957,7 +961,7 @@ msgstr "" "Un tag alla linea %(line)s manca di uno o pi attributi richiesti. (La linea " "comincia con \"%(start)s\".)" -#: core/validators.py:482 +#: core/validators.py:480 #, python-format msgid "" "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " diff --git a/django/conf/locale/no/LC_MESSAGES/django.po b/django/conf/locale/no/LC_MESSAGES/django.po index 09468da928..39420eb7a8 100644 --- a/django/conf/locale/no/LC_MESSAGES/django.po +++ b/django/conf/locale/no/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2005-11-04 10:08-0600\n" +"POT-Creation-Date: 2005-11-06 21:41-0600\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Espen Grndhaug \n" "Language-Team: Norwegian\n" @@ -414,55 +414,55 @@ msgstr "Nov." msgid "Dec." msgstr "Des." -#: models/core.py:5 +#: models/core.py:7 msgid "domain name" msgstr "domene navn" -#: models/core.py:6 +#: models/core.py:8 msgid "display name" msgstr "vist navn" -#: models/core.py:8 +#: models/core.py:10 msgid "site" msgstr "side" -#: models/core.py:9 +#: models/core.py:11 msgid "sites" msgstr "sider" -#: models/core.py:22 +#: models/core.py:24 msgid "label" msgstr "merkelapp" -#: models/core.py:23 models/core.py:34 models/auth.py:6 models/auth.py:19 +#: models/core.py:25 models/core.py:36 models/auth.py:6 models/auth.py:19 msgid "name" msgstr "navn" -#: models/core.py:25 +#: models/core.py:27 msgid "package" msgstr "pakke" -#: models/core.py:26 +#: models/core.py:28 msgid "packages" msgstr "pakker" -#: models/core.py:36 +#: models/core.py:38 msgid "python module name" msgstr "python modul navn" -#: models/core.py:38 +#: models/core.py:40 msgid "content type" msgstr "innholds type" -#: models/core.py:39 +#: models/core.py:41 msgid "content types" msgstr "innholds typer" -#: models/core.py:62 +#: models/core.py:64 msgid "redirect from" msgstr "omadresser fra" -#: models/core.py:63 +#: models/core.py:65 msgid "" "This should be an absolute path, excluding the domain name. Example: '/" "events/search/'." @@ -470,11 +470,11 @@ msgstr "" "Denne burde vær en fullstendig sti, uten domene navnet. Foreksempel: '/" "nyheter/les/" -#: models/core.py:64 +#: models/core.py:66 msgid "redirect to" msgstr "omadresser til" -#: models/core.py:65 +#: models/core.py:67 msgid "" "This can be either an absolute path (as above) or a full URL starting with " "'http://'." @@ -482,41 +482,41 @@ msgstr "" "Denne kan enten være en fullstendig sti (som over), eller en hel " "internettadresse som starter med 'http://'" -#: models/core.py:67 +#: models/core.py:69 msgid "redirect" msgstr "omadressering" -#: models/core.py:68 +#: models/core.py:70 msgid "redirects" msgstr "omadresserelser" -#: models/core.py:81 +#: models/core.py:83 msgid "URL" msgstr "Internettadresse" -#: models/core.py:82 +#: models/core.py:84 msgid "" "Example: '/about/contact/'. Make sure to have leading and trailing slashes." msgstr "" "Eksempel: '/om/kontakt/'. Vær sikker på at du har en skråstrek forran og bak." -#: models/core.py:83 +#: models/core.py:85 msgid "title" msgstr "tittel" -#: models/core.py:84 +#: models/core.py:86 msgid "content" msgstr "innhold" -#: models/core.py:85 +#: models/core.py:87 msgid "enable comments" msgstr "tillat kommentarer" -#: models/core.py:86 +#: models/core.py:88 msgid "template name" msgstr "mal navn" -#: models/core.py:87 +#: models/core.py:89 msgid "" "Example: 'flatfiles/contact_page'. If this isn't provided, the system will " "use 'flatfiles/default'." @@ -524,41 +524,41 @@ msgstr "" "Eksempel: 'flatfiler/kontakt_side'. Vist denne ikke denne er gitt, vill " "'flatfiles/default' bli brukt." -#: models/core.py:88 +#: models/core.py:90 msgid "registration required" msgstr "registrering kreves" -#: models/core.py:88 +#: models/core.py:90 msgid "If this is checked, only logged-in users will be able to view the page." msgstr "" "Vist denne er krysset av er det bare brukere som er logget inn som kan se " "siden." -#: models/core.py:92 +#: models/core.py:94 msgid "flat page" msgstr "flatside" -#: models/core.py:93 +#: models/core.py:95 msgid "flat pages" msgstr "flatsider" -#: models/core.py:114 +#: models/core.py:113 msgid "session key" msgstr "sesjon nøkkel" -#: models/core.py:115 +#: models/core.py:114 msgid "session data" msgstr "sesjon data" -#: models/core.py:116 +#: models/core.py:115 msgid "expire date" msgstr "utløpsdato" -#: models/core.py:118 +#: models/core.py:117 msgid "session" msgstr "sesjon" -#: models/core.py:119 +#: models/core.py:118 msgid "sessions" msgstr "sesjoner" @@ -702,73 +702,77 @@ msgstr "Serbisk" msgid "Simplified Chinese" msgstr "Simpel Kinesisk" -#: core/validators.py:58 +#: conf/global_settings.py:48 +msgid "Slovak" +msgstr "" + +#: core/validators.py:59 msgid "This value must contain only letters, numbers and underscores." msgstr "Dette feltet må bare inneholde bokstaver, nummer og understreker." -#: core/validators.py:62 +#: core/validators.py:63 msgid "This value must contain only letters, numbers, underscores and slashes." msgstr "" "Dette feltet må bare inneholde bokstaver, nummer, understreker og " "skråstreker." -#: core/validators.py:70 +#: core/validators.py:71 msgid "Uppercase letters are not allowed here." msgstr "Tor skrift er ikke tillatt her." -#: core/validators.py:74 +#: core/validators.py:75 msgid "Lowercase letters are not allowed here." msgstr "Små bokstaver er ikke tillatt her." -#: core/validators.py:81 +#: core/validators.py:82 msgid "Enter only digits separated by commas." msgstr "Skriv inn bare tall, skilt med kommaer." -#: core/validators.py:93 +#: core/validators.py:94 msgid "Enter valid e-mail addresses separated by commas." msgstr "Skriv inn e-post adresser skilt med kommaer." -#: core/validators.py:100 +#: core/validators.py:98 msgid "Please enter a valid IP address." msgstr "Vennligst skriv inn en godkjent IP adresse." -#: core/validators.py:104 +#: core/validators.py:102 msgid "Empty values are not allowed here." msgstr "Dette felte kan ikke være tomt." -#: core/validators.py:108 +#: core/validators.py:106 msgid "Non-numeric characters aren't allowed here." msgstr "Det er bare tall som kan stå i dette feltet." -#: core/validators.py:112 +#: core/validators.py:110 msgid "This value can't be comprised solely of digits." msgstr "Dette feltet kan ikke bare bestå av nummer." -#: core/validators.py:117 +#: core/validators.py:115 msgid "Enter a whole number." msgstr "Skriv inn et helt nummer." -#: core/validators.py:121 +#: core/validators.py:119 msgid "Only alphabetical characters are allowed here." msgstr "Bare alfabetiske bokstaber er tillatt her." -#: core/validators.py:125 +#: core/validators.py:123 msgid "Enter a valid date in YYYY-MM-DD format." msgstr "Skriv inn en dato i ÅÅÅÅ-MM-DD formatet." -#: core/validators.py:129 +#: core/validators.py:127 msgid "Enter a valid time in HH:MM format." msgstr "Skriv inn tiden i TT:MM formatet." -#: core/validators.py:133 +#: core/validators.py:131 msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." msgstr "Skriv inn dato og tid i ÅÅÅÅ-MM-DD TT:MM formatet." -#: core/validators.py:137 +#: core/validators.py:135 msgid "Enter a valid e-mail address." msgstr "Skriv inn en godkjent e-post adresse." -#: core/validators.py:149 +#: core/validators.py:147 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." @@ -776,27 +780,27 @@ msgstr "" "Lastopp et bilde. Filen du lastet opp var ikke et bilde, eller så var det et " "ødelagt bilde" -#: core/validators.py:156 +#: core/validators.py:154 #, python-format msgid "The URL %s does not point to a valid image." msgstr "Internettadressen %s peker ikke til et godkjent bilde." -#: core/validators.py:160 +#: core/validators.py:158 #, python-format msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." msgstr "" "Telefon nummeret må være i XXX-XXX-XXXX formatet. \"%s\" er ikke godkjent." -#: core/validators.py:168 +#: core/validators.py:166 #, python-format msgid "The URL %s does not point to a valid QuickTime video." msgstr "Internettadressen %s peker ikke til en godkjent QuickTime film." -#: core/validators.py:172 +#: core/validators.py:170 msgid "A valid URL is required." msgstr "En godkjent internettadresse er påbudt." -#: core/validators.py:186 +#: core/validators.py:184 #, python-format msgid "" "Valid HTML is required. Specific errors are:\n" @@ -805,69 +809,69 @@ msgstr "" "Godkjent HTML er påbudt. Feilene var:\n" "%s" -#: core/validators.py:193 +#: core/validators.py:191 #, python-format msgid "Badly formed XML: %s" msgstr "Ikke godkjent XML: %s" -#: core/validators.py:203 +#: core/validators.py:201 #, python-format msgid "Invalid URL: %s" msgstr "Ikke godkjent internettadresse: %s" -#: core/validators.py:205 +#: core/validators.py:203 #, python-format msgid "The URL %s is a broken link." msgstr "Internettadresse fører til en side som ikke virker." -#: core/validators.py:211 +#: core/validators.py:209 msgid "Enter a valid U.S. state abbreviation." msgstr "Skriv inn en godkjent amerikansk stats forkortelse." -#: core/validators.py:226 +#: core/validators.py:224 #, python-format msgid "Watch your mouth! The word %s is not allowed here." msgid_plural "Watch your mouth! The words %s are not allowed here." msgstr[0] "Pass munnen din! Ordet %s er ikke tillatt her." msgstr[1] "Pass munnen din! Ordene %s er ikke tillatt her." -#: core/validators.py:233 +#: core/validators.py:231 #, python-format msgid "This field must match the '%s' field." msgstr "Dette felte må være det samme som i '%s' feltet." -#: core/validators.py:252 +#: core/validators.py:250 msgid "Please enter something for at least one field." msgstr "Vennligst skriv inn noe i minst et felt." -#: core/validators.py:261 core/validators.py:272 +#: core/validators.py:259 core/validators.py:270 msgid "Please enter both fields or leave them both empty." msgstr "Vennligst skriv inn noe i begge felta, eller la dem stå blanke." -#: core/validators.py:279 +#: core/validators.py:277 #, python-format msgid "This field must be given if %(field)s is %(value)s" msgstr "Dette feltet må bare brukes vist %(field)s er lik %(value)s" -#: core/validators.py:291 +#: core/validators.py:289 #, python-format msgid "This field must be given if %(field)s is not %(value)s" msgstr "Dette feltet må bare brukes vist %(field)s ikke er lik %(value)s" -#: core/validators.py:310 +#: core/validators.py:308 msgid "Duplicate values are not allowed." msgstr "Like verdier er ikke tillatt." -#: core/validators.py:333 +#: core/validators.py:331 #, python-format msgid "This value must be a power of %s." msgstr "Denne verdien må være 'power' av %s." -#: core/validators.py:344 +#: core/validators.py:342 msgid "Please enter a valid decimal number." msgstr "Vennligst skriv inn et godkjent desimal tall." -#: core/validators.py:346 +#: core/validators.py:344 #, python-format msgid "Please enter a valid decimal number with at most %s total digit." msgid_plural "" @@ -875,7 +879,7 @@ msgid_plural "" msgstr[0] "Skriv inn et desimal tall med maksimum %s total antall tall." msgstr[1] "Skriv inn et desimal tall med maksimum %s total antall tall." -#: core/validators.py:349 +#: core/validators.py:347 #, python-format msgid "Please enter a valid decimal number with at most %s decimal place." msgid_plural "" @@ -883,32 +887,32 @@ msgid_plural "" msgstr[0] "Skriv inn et desimal tall med maksimum %s tall bak komma. " msgstr[1] "Skriv inn et desimal tall med maksimum %s tall bak komma. " -#: core/validators.py:359 +#: core/validators.py:357 #, python-format msgid "Make sure your uploaded file is at least %s bytes big." msgstr "" "Er du sikker på at fila du prøver å laste opp er minimum %s bytes stor?" -#: core/validators.py:360 +#: core/validators.py:358 #, python-format msgid "Make sure your uploaded file is at most %s bytes big." msgstr "" "Er du sikker på at fila du prøver å laste opp er maksimum %s bytes stor?" -#: core/validators.py:373 +#: core/validators.py:371 msgid "The format for this field is wrong." msgstr "Formatet i dette feltet er feil." -#: core/validators.py:388 +#: core/validators.py:386 msgid "This field is invalid." msgstr "Dette feltet er feil." -#: core/validators.py:423 +#: core/validators.py:421 #, python-format msgid "Could not retrieve anything from %s." msgstr "Klarte ikke å motta noe fra %s." -#: core/validators.py:426 +#: core/validators.py:424 #, python-format msgid "" "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." @@ -916,7 +920,7 @@ msgstr "" "Tnternettadressen %(url)s returnerte en ikke godkjent Content-Type '%" "(contenttype)s'." -#: core/validators.py:459 +#: core/validators.py:457 #, python-format msgid "" "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " @@ -925,7 +929,7 @@ msgstr "" "Vennligst lukk taggen %(tag)s på linje %(line)s. (Linja starer med \"%(start)" "s\".)" -#: core/validators.py:463 +#: core/validators.py:461 #, python-format msgid "" "Some text starting on line %(line)s is not allowed in that context. (Line " @@ -934,7 +938,7 @@ msgstr "" "Noe av teksten som starter på linje %(line)s er ikke tillatt. (Linja starter " "med \"%(start)s\".)" -#: core/validators.py:468 +#: core/validators.py:466 #, python-format msgid "" "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" @@ -943,7 +947,7 @@ msgstr "" "\"%(attr)s\" på linje %(line)s er ikke en godkjent tillegg. (Linja starter " "med \"%(start)s\".)" -#: core/validators.py:473 +#: core/validators.py:471 #, python-format msgid "" "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" @@ -952,7 +956,7 @@ msgstr "" "\"<%(tag)s>\" på linje %(line)s er ikke en godkjent tag. (linja starter med " "\"%(start)s\".)" -#: core/validators.py:477 +#: core/validators.py:475 #, python-format msgid "" "A tag on line %(line)s is missing one or more required attributes. (Line " @@ -961,7 +965,7 @@ msgstr "" "En tag på linje %(line)s mangler en av de påbydte tillegga. (linja starter " "med \"%(start)s\".)" -#: core/validators.py:482 +#: core/validators.py:480 #, python-format msgid "" "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " diff --git a/django/conf/locale/pt_BR/LC_MESSAGES/django.po b/django/conf/locale/pt_BR/LC_MESSAGES/django.po index e423cb6ace..524ac68d19 100644 --- a/django/conf/locale/pt_BR/LC_MESSAGES/django.po +++ b/django/conf/locale/pt_BR/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2005-11-04 09:29-0600\n" +"POT-Creation-Date: 2005-11-06 21:41-0600\n" "PO-Revision-Date: 2005-10-11 09:12GMT-3\n" "Last-Translator: João Paulo Farias \n" "Language-Team: Português do Brasil \n" @@ -415,56 +415,56 @@ msgstr "Nov." msgid "Dec." msgstr "Dez." -#: models/core.py:5 +#: models/core.py:7 msgid "domain name" msgstr "nome do domínio" -#: models/core.py:6 +#: models/core.py:8 msgid "display name" msgstr "nome para exibição" -#: models/core.py:8 +#: models/core.py:10 msgid "site" msgstr "site" -#: models/core.py:9 +#: models/core.py:11 msgid "sites" msgstr "sites" -#: models/core.py:22 +#: models/core.py:24 msgid "label" msgstr "etiqueta" -#: models/core.py:23 models/core.py:34 models/auth.py:6 models/auth.py:19 +#: models/core.py:25 models/core.py:36 models/auth.py:6 models/auth.py:19 #, fuzzy msgid "name" msgstr "nome:" -#: models/core.py:25 +#: models/core.py:27 msgid "package" msgstr "pacote" -#: models/core.py:26 +#: models/core.py:28 msgid "packages" msgstr "pacotes" -#: models/core.py:36 +#: models/core.py:38 msgid "python module name" msgstr "nome do módulo python" -#: models/core.py:38 +#: models/core.py:40 msgid "content type" msgstr "tipo de conteúdo" -#: models/core.py:39 +#: models/core.py:41 msgid "content types" msgstr "tipos de conteúdo" -#: models/core.py:62 +#: models/core.py:64 msgid "redirect from" msgstr "redirecionar de" -#: models/core.py:63 +#: models/core.py:65 msgid "" "This should be an absolute path, excluding the domain name. Example: '/" "events/search/'." @@ -472,11 +472,11 @@ msgstr "" "Deve conter um caminho absoluto, excluindo o nome de domínio. Exemplo: '/" "eventos/busca/'." -#: models/core.py:64 +#: models/core.py:66 msgid "redirect to" msgstr "redirecionar para" -#: models/core.py:65 +#: models/core.py:67 msgid "" "This can be either an absolute path (as above) or a full URL starting with " "'http://'." @@ -484,40 +484,40 @@ msgstr "" "Deve conter um caminho absoluto (como acima) ou uma URL completa, começando " "com 'http://'." -#: models/core.py:67 +#: models/core.py:69 msgid "redirect" msgstr "redirecionar" -#: models/core.py:68 +#: models/core.py:70 msgid "redirects" msgstr "redirecionamentos" -#: models/core.py:81 +#: models/core.py:83 msgid "URL" msgstr "URL" -#: models/core.py:82 +#: models/core.py:84 msgid "" "Example: '/about/contact/'. Make sure to have leading and trailing slashes." msgstr "Exemplo: '/sobre/contato/'. Lembre-se das barras no começo e no final." -#: models/core.py:83 +#: models/core.py:85 msgid "title" msgstr "título" -#: models/core.py:84 +#: models/core.py:86 msgid "content" msgstr "conteúdo" -#: models/core.py:85 +#: models/core.py:87 msgid "enable comments" msgstr "habilitar comentários" -#: models/core.py:86 +#: models/core.py:88 msgid "template name" msgstr "nome do modelo" -#: models/core.py:87 +#: models/core.py:89 msgid "" "Example: 'flatfiles/contact_page'. If this isn't provided, the system will " "use 'flatfiles/default'." @@ -525,39 +525,39 @@ msgstr "" "Exemplo: 'flatfiles/contact_page'. Se não for informado, será utilizado " "'flatfiles/default'." -#: models/core.py:88 +#: models/core.py:90 msgid "registration required" msgstr "é obrigatório registrar" -#: models/core.py:88 +#: models/core.py:90 msgid "If this is checked, only logged-in users will be able to view the page." msgstr "Se estiver marcado, apenas usuários conectados poderão ver a página." -#: models/core.py:92 +#: models/core.py:94 msgid "flat page" msgstr "página plana" -#: models/core.py:93 +#: models/core.py:95 msgid "flat pages" msgstr "páginas planas" -#: models/core.py:114 +#: models/core.py:113 msgid "session key" msgstr "chave da sessão" -#: models/core.py:115 +#: models/core.py:114 msgid "session data" msgstr "dados da sessão" -#: models/core.py:116 +#: models/core.py:115 msgid "expire date" msgstr "data de expiração" -#: models/core.py:118 +#: models/core.py:117 msgid "session" msgstr "sessão" -#: models/core.py:119 +#: models/core.py:118 msgid "sessions" msgstr "sessões" @@ -706,71 +706,75 @@ msgstr "Sérvio" msgid "Simplified Chinese" msgstr "" -#: core/validators.py:58 +#: conf/global_settings.py:48 +msgid "Slovak" +msgstr "" + +#: core/validators.py:59 msgid "This value must contain only letters, numbers and underscores." msgstr "Deve conter apenas letras, números e sublinhados (_)." -#: core/validators.py:62 +#: core/validators.py:63 msgid "This value must contain only letters, numbers, underscores and slashes." msgstr "Deve conter apenas letras, números, sublinhados (_) e barras (/)." -#: core/validators.py:70 +#: core/validators.py:71 msgid "Uppercase letters are not allowed here." msgstr "Letras em maiúsculo não são permitidas aqui." -#: core/validators.py:74 +#: core/validators.py:75 msgid "Lowercase letters are not allowed here." msgstr "Letras em minúsculo não são permitidas aqui." -#: core/validators.py:81 +#: core/validators.py:82 msgid "Enter only digits separated by commas." msgstr "Informe apenas dígitos separados por vírgulas." -#: core/validators.py:93 +#: core/validators.py:94 msgid "Enter valid e-mail addresses separated by commas." msgstr "Informe endereços de email válidos separados por vírgulas." -#: core/validators.py:100 +#: core/validators.py:98 msgid "Please enter a valid IP address." msgstr "Informe um endereço IP válido." -#: core/validators.py:104 +#: core/validators.py:102 msgid "Empty values are not allowed here." msgstr "Valores em branco não são permitidos." -#: core/validators.py:108 +#: core/validators.py:106 msgid "Non-numeric characters aren't allowed here." msgstr "Caracteres não numéricos não são permitidos." -#: core/validators.py:112 +#: core/validators.py:110 msgid "This value can't be comprised solely of digits." msgstr "Este valor não pode conter apenas dígitos." -#: core/validators.py:117 +#: core/validators.py:115 msgid "Enter a whole number." msgstr "Informe um número inteiro." -#: core/validators.py:121 +#: core/validators.py:119 msgid "Only alphabetical characters are allowed here." msgstr "Apenas caracteres do alfabeto são permitidos aqui." -#: core/validators.py:125 +#: core/validators.py:123 msgid "Enter a valid date in YYYY-MM-DD format." msgstr "Informe uma data válida no formato AAAA-MM-DD." -#: core/validators.py:129 +#: core/validators.py:127 msgid "Enter a valid time in HH:MM format." msgstr "Informe uma hora válida no formato HH:MM." -#: core/validators.py:133 +#: core/validators.py:131 msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." msgstr "Informe uma data/hora válida no formato AAAA-MM-DD HH:MM." -#: core/validators.py:137 +#: core/validators.py:135 msgid "Enter a valid e-mail address." msgstr "Informe um endereço de email válido." -#: core/validators.py:149 +#: core/validators.py:147 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." @@ -778,27 +782,27 @@ msgstr "" "Envie uma imagem válida. O arquivo enviado não é uma imagem ou está " "corrompido." -#: core/validators.py:156 +#: core/validators.py:154 #, python-format msgid "The URL %s does not point to a valid image." msgstr "A URL %s não aponta para um imagem válida." -#: core/validators.py:160 +#: core/validators.py:158 #, python-format msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." msgstr "" "Números de telefone deves estar no formato XXX-XXX-XXXX.\"%s\" é inválido." -#: core/validators.py:168 +#: core/validators.py:166 #, python-format msgid "The URL %s does not point to a valid QuickTime video." msgstr "A URL %s não aponta para um vídeo QuickTime válido." -#: core/validators.py:172 +#: core/validators.py:170 msgid "A valid URL is required." msgstr "Uma URL válida é exigida." -#: core/validators.py:186 +#: core/validators.py:184 #, python-format msgid "" "Valid HTML is required. Specific errors are:\n" @@ -807,69 +811,69 @@ msgstr "" "HTML válido é exigido. Estes são os erros específicos:\n" "%s" -#: core/validators.py:193 +#: core/validators.py:191 #, python-format msgid "Badly formed XML: %s" msgstr "XML mal formado: %s" -#: core/validators.py:203 +#: core/validators.py:201 #, python-format msgid "Invalid URL: %s" msgstr "URL inválida: %s" -#: core/validators.py:205 +#: core/validators.py:203 #, python-format msgid "The URL %s is a broken link." msgstr "A URL %s é um link quebrado." -#: core/validators.py:211 +#: core/validators.py:209 msgid "Enter a valid U.S. state abbreviation." msgstr "Informe uma abreviação válida de nome de um estado dos EUA." -#: core/validators.py:226 +#: core/validators.py:224 #, python-format msgid "Watch your mouth! The word %s is not allowed here." msgid_plural "Watch your mouth! The words %s are not allowed here." msgstr[0] "Lave sua boca! A palavra %s não é permitida aqui." msgstr[1] "Lave sua boca! As palavras %s não são permitidas aqui." -#: core/validators.py:233 +#: core/validators.py:231 #, python-format msgid "This field must match the '%s' field." msgstr "Este campo deve ser igual ao campo '%s'." -#: core/validators.py:252 +#: core/validators.py:250 msgid "Please enter something for at least one field." msgstr "Informe algo em pelo menos um campo." -#: core/validators.py:261 core/validators.py:272 +#: core/validators.py:259 core/validators.py:270 msgid "Please enter both fields or leave them both empty." msgstr "Informe ambos os campos ou deixe ambos vazios." -#: core/validators.py:279 +#: core/validators.py:277 #, python-format msgid "This field must be given if %(field)s is %(value)s" msgstr "Este campo deve ser informado se o campo %(field)s for %(value)s." -#: core/validators.py:291 +#: core/validators.py:289 #, python-format msgid "This field must be given if %(field)s is not %(value)s" msgstr "Este campo deve ser dado se o campo %(field)s não for %(value)s." -#: core/validators.py:310 +#: core/validators.py:308 msgid "Duplicate values are not allowed." msgstr "Valores duplicados não são permitidos." -#: core/validators.py:333 +#: core/validators.py:331 #, python-format msgid "This value must be a power of %s." msgstr "Este valor deve ser uma potência de %s." -#: core/validators.py:344 +#: core/validators.py:342 msgid "Please enter a valid decimal number." msgstr "Informe um número decimal." -#: core/validators.py:346 +#: core/validators.py:344 #, python-format msgid "Please enter a valid decimal number with at most %s total digit." msgid_plural "" @@ -877,7 +881,7 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: core/validators.py:349 +#: core/validators.py:347 #, python-format msgid "Please enter a valid decimal number with at most %s decimal place." msgid_plural "" @@ -885,30 +889,30 @@ msgid_plural "" msgstr[0] "Informe um número decimal com no máximo %s casa decimal." msgstr[1] "Informe um número decimal com no máximo %s casas decimais." -#: core/validators.py:359 +#: core/validators.py:357 #, python-format msgid "Make sure your uploaded file is at least %s bytes big." msgstr "Verifique se o arquivo enviado tem pelo menos %s bytes." -#: core/validators.py:360 +#: core/validators.py:358 #, python-format msgid "Make sure your uploaded file is at most %s bytes big." msgstr "Verifique se o arquivo enviado tem no máximo %s bytes." -#: core/validators.py:373 +#: core/validators.py:371 msgid "The format for this field is wrong." msgstr "O formato deste campo está errado." -#: core/validators.py:388 +#: core/validators.py:386 msgid "This field is invalid." msgstr "Este campo é inválido." -#: core/validators.py:423 +#: core/validators.py:421 #, python-format msgid "Could not retrieve anything from %s." msgstr "Não foi possível receber dados de %s." -#: core/validators.py:426 +#: core/validators.py:424 #, python-format msgid "" "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." @@ -916,7 +920,7 @@ msgstr "" "A URL %(url)s retornou um cabeçalho '%(contenttype)s' de Content-Type " "inválido." -#: core/validators.py:459 +#: core/validators.py:457 #, python-format msgid "" "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " @@ -925,7 +929,7 @@ msgstr "" "Por favor, feche a tag %(tag)s na linha %(line)s. (A linha começa com \"%" "(start)s\".)" -#: core/validators.py:463 +#: core/validators.py:461 #, python-format msgid "" "Some text starting on line %(line)s is not allowed in that context. (Line " @@ -934,7 +938,7 @@ msgstr "" "Algum texto começando na linha %(line)s não é permitido no contexto. (Linha " "começa com \"%(start)s\".)" -#: core/validators.py:468 +#: core/validators.py:466 #, python-format msgid "" "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" @@ -943,7 +947,7 @@ msgstr "" "\"%(attr)s\" na linha %(line)s não é um atributo válido. (Linha começa com " "\"%(start)s\".)" -#: core/validators.py:473 +#: core/validators.py:471 #, python-format msgid "" "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" @@ -952,7 +956,7 @@ msgstr "" "\"<%(tag)s>\" na linha %(line)s é uma tag inválida. (Linha começa com \"%" "(start)s\".)" -#: core/validators.py:477 +#: core/validators.py:475 #, python-format msgid "" "A tag on line %(line)s is missing one or more required attributes. (Line " @@ -961,7 +965,7 @@ msgstr "" "Uma tag na linha %(line)s está não apresenta um ou mais atributos exigidos." "(Linha começa com \"%(start)s\".)" -#: core/validators.py:482 +#: core/validators.py:480 #, python-format msgid "" "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " diff --git a/django/conf/locale/ru/LC_MESSAGES/django.po b/django/conf/locale/ru/LC_MESSAGES/django.po index b5cfd4a867..978d8b26b6 100644 --- a/django/conf/locale/ru/LC_MESSAGES/django.po +++ b/django/conf/locale/ru/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: django\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2005-11-04 09:29-0600\n" +"POT-Creation-Date: 2005-11-06 21:41-0600\n" "PO-Revision-Date: 2005-10-05 00:00\n" "Last-Translator: Dmitry Sorokin \n" "Language-Team: LANGUAGE \n" @@ -415,143 +415,143 @@ msgstr "" msgid "Dec." msgstr "" -#: models/core.py:5 +#: models/core.py:7 msgid "domain name" msgstr "" -#: models/core.py:6 +#: models/core.py:8 msgid "display name" msgstr "" -#: models/core.py:8 +#: models/core.py:10 msgid "site" msgstr "" -#: models/core.py:9 +#: models/core.py:11 msgid "sites" msgstr "" -#: models/core.py:22 +#: models/core.py:24 msgid "label" msgstr "" -#: models/core.py:23 models/core.py:34 models/auth.py:6 models/auth.py:19 +#: models/core.py:25 models/core.py:36 models/auth.py:6 models/auth.py:19 #, fuzzy msgid "name" msgstr ":" -#: models/core.py:25 +#: models/core.py:27 msgid "package" msgstr "" -#: models/core.py:26 +#: models/core.py:28 msgid "packages" msgstr "" -#: models/core.py:36 +#: models/core.py:38 msgid "python module name" msgstr "" -#: models/core.py:38 +#: models/core.py:40 msgid "content type" msgstr "" -#: models/core.py:39 +#: models/core.py:41 msgid "content types" msgstr "" -#: models/core.py:62 +#: models/core.py:64 msgid "redirect from" msgstr "" -#: models/core.py:63 +#: models/core.py:65 msgid "" "This should be an absolute path, excluding the domain name. Example: '/" "events/search/'." msgstr "" -#: models/core.py:64 +#: models/core.py:66 msgid "redirect to" msgstr "" -#: models/core.py:65 +#: models/core.py:67 msgid "" "This can be either an absolute path (as above) or a full URL starting with " "'http://'." msgstr "" -#: models/core.py:67 +#: models/core.py:69 msgid "redirect" msgstr "" -#: models/core.py:68 +#: models/core.py:70 msgid "redirects" msgstr "" -#: models/core.py:81 +#: models/core.py:83 msgid "URL" msgstr "" -#: models/core.py:82 +#: models/core.py:84 msgid "" "Example: '/about/contact/'. Make sure to have leading and trailing slashes." msgstr "" -#: models/core.py:83 +#: models/core.py:85 msgid "title" msgstr "" -#: models/core.py:84 +#: models/core.py:86 msgid "content" msgstr "" -#: models/core.py:85 +#: models/core.py:87 msgid "enable comments" msgstr "" -#: models/core.py:86 +#: models/core.py:88 msgid "template name" msgstr "" -#: models/core.py:87 +#: models/core.py:89 msgid "" "Example: 'flatfiles/contact_page'. If this isn't provided, the system will " "use 'flatfiles/default'." msgstr "" -#: models/core.py:88 +#: models/core.py:90 msgid "registration required" msgstr "" -#: models/core.py:88 +#: models/core.py:90 msgid "If this is checked, only logged-in users will be able to view the page." msgstr "" -#: models/core.py:92 +#: models/core.py:94 msgid "flat page" msgstr "" -#: models/core.py:93 +#: models/core.py:95 msgid "flat pages" msgstr "" -#: models/core.py:114 +#: models/core.py:113 msgid "session key" msgstr "" -#: models/core.py:115 +#: models/core.py:114 msgid "session data" msgstr "" -#: models/core.py:116 +#: models/core.py:115 msgid "expire date" msgstr "" -#: models/core.py:118 +#: models/core.py:117 msgid "session" msgstr "" -#: models/core.py:119 +#: models/core.py:118 msgid "sessions" msgstr "" @@ -697,167 +697,171 @@ msgstr "" msgid "Simplified Chinese" msgstr "" -#: core/validators.py:58 +#: conf/global_settings.py:48 +msgid "Slovak" +msgstr "" + +#: core/validators.py:59 msgid "This value must contain only letters, numbers and underscores." msgstr " , ." -#: core/validators.py:62 +#: core/validators.py:63 #, fuzzy msgid "This value must contain only letters, numbers, underscores and slashes." msgstr " , ." -#: core/validators.py:70 +#: core/validators.py:71 msgid "Uppercase letters are not allowed here." msgstr "" -#: core/validators.py:74 +#: core/validators.py:75 msgid "Lowercase letters are not allowed here." msgstr "" -#: core/validators.py:81 +#: core/validators.py:82 msgid "Enter only digits separated by commas." msgstr "" -#: core/validators.py:93 +#: core/validators.py:94 msgid "Enter valid e-mail addresses separated by commas." msgstr "" -#: core/validators.py:100 +#: core/validators.py:98 msgid "Please enter a valid IP address." msgstr "" -#: core/validators.py:104 +#: core/validators.py:102 msgid "Empty values are not allowed here." msgstr "" -#: core/validators.py:108 +#: core/validators.py:106 msgid "Non-numeric characters aren't allowed here." msgstr "" -#: core/validators.py:112 +#: core/validators.py:110 msgid "This value can't be comprised solely of digits." msgstr "" -#: core/validators.py:117 +#: core/validators.py:115 msgid "Enter a whole number." msgstr "" -#: core/validators.py:121 +#: core/validators.py:119 msgid "Only alphabetical characters are allowed here." msgstr "" -#: core/validators.py:125 +#: core/validators.py:123 msgid "Enter a valid date in YYYY-MM-DD format." msgstr "" -#: core/validators.py:129 +#: core/validators.py:127 msgid "Enter a valid time in HH:MM format." msgstr "" -#: core/validators.py:133 +#: core/validators.py:131 msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." msgstr "" -#: core/validators.py:137 +#: core/validators.py:135 #, fuzzy msgid "Enter a valid e-mail address." msgstr "E-mail :" -#: core/validators.py:149 +#: core/validators.py:147 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "" -#: core/validators.py:156 +#: core/validators.py:154 #, python-format msgid "The URL %s does not point to a valid image." msgstr "" -#: core/validators.py:160 +#: core/validators.py:158 #, python-format msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." msgstr "" -#: core/validators.py:168 +#: core/validators.py:166 #, python-format msgid "The URL %s does not point to a valid QuickTime video." msgstr "" -#: core/validators.py:172 +#: core/validators.py:170 msgid "A valid URL is required." msgstr "" -#: core/validators.py:186 +#: core/validators.py:184 #, python-format msgid "" "Valid HTML is required. Specific errors are:\n" "%s" msgstr "" -#: core/validators.py:193 +#: core/validators.py:191 #, python-format msgid "Badly formed XML: %s" msgstr "" -#: core/validators.py:203 +#: core/validators.py:201 #, python-format msgid "Invalid URL: %s" msgstr "" -#: core/validators.py:205 +#: core/validators.py:203 #, python-format msgid "The URL %s is a broken link." msgstr "" -#: core/validators.py:211 +#: core/validators.py:209 msgid "Enter a valid U.S. state abbreviation." msgstr "" -#: core/validators.py:226 +#: core/validators.py:224 #, python-format msgid "Watch your mouth! The word %s is not allowed here." msgid_plural "Watch your mouth! The words %s are not allowed here." msgstr[0] "" msgstr[1] "" -#: core/validators.py:233 +#: core/validators.py:231 #, python-format msgid "This field must match the '%s' field." msgstr "" -#: core/validators.py:252 +#: core/validators.py:250 msgid "Please enter something for at least one field." msgstr "" -#: core/validators.py:261 core/validators.py:272 +#: core/validators.py:259 core/validators.py:270 msgid "Please enter both fields or leave them both empty." msgstr "" -#: core/validators.py:279 +#: core/validators.py:277 #, python-format msgid "This field must be given if %(field)s is %(value)s" msgstr "" -#: core/validators.py:291 +#: core/validators.py:289 #, python-format msgid "This field must be given if %(field)s is not %(value)s" msgstr "" -#: core/validators.py:310 +#: core/validators.py:308 msgid "Duplicate values are not allowed." msgstr "" -#: core/validators.py:333 +#: core/validators.py:331 #, python-format msgid "This value must be a power of %s." msgstr "" -#: core/validators.py:344 +#: core/validators.py:342 msgid "Please enter a valid decimal number." msgstr "" -#: core/validators.py:346 +#: core/validators.py:344 #, python-format msgid "Please enter a valid decimal number with at most %s total digit." msgid_plural "" @@ -865,7 +869,7 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: core/validators.py:349 +#: core/validators.py:347 #, python-format msgid "Please enter a valid decimal number with at most %s decimal place." msgid_plural "" @@ -873,71 +877,71 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: core/validators.py:359 +#: core/validators.py:357 #, python-format msgid "Make sure your uploaded file is at least %s bytes big." msgstr "" -#: core/validators.py:360 +#: core/validators.py:358 #, python-format msgid "Make sure your uploaded file is at most %s bytes big." msgstr "" -#: core/validators.py:373 +#: core/validators.py:371 msgid "The format for this field is wrong." msgstr "" -#: core/validators.py:388 +#: core/validators.py:386 msgid "This field is invalid." msgstr "" -#: core/validators.py:423 +#: core/validators.py:421 #, python-format msgid "Could not retrieve anything from %s." msgstr "" -#: core/validators.py:426 +#: core/validators.py:424 #, python-format msgid "" "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." msgstr "" -#: core/validators.py:459 +#: core/validators.py:457 #, python-format msgid "" "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " "\"%(start)s\".)" msgstr "" -#: core/validators.py:463 +#: core/validators.py:461 #, python-format msgid "" "Some text starting on line %(line)s is not allowed in that context. (Line " "starts with \"%(start)s\".)" msgstr "" -#: core/validators.py:468 +#: core/validators.py:466 #, python-format msgid "" "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" "(start)s\".)" msgstr "" -#: core/validators.py:473 +#: core/validators.py:471 #, python-format msgid "" "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" "(start)s\".)" msgstr "" -#: core/validators.py:477 +#: core/validators.py:475 #, python-format msgid "" "A tag on line %(line)s is missing one or more required attributes. (Line " "starts with \"%(start)s\".)" msgstr "" -#: core/validators.py:482 +#: core/validators.py:480 #, python-format msgid "" "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " diff --git a/django/conf/locale/sk/LC_MESSAGES/django.mo b/django/conf/locale/sk/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..02b960a5bf95b937936c1a4b98ba85bb90370449 GIT binary patch literal 17529 zcmbuG3zQsJdFL;&jcs8t7@GhFQkIcNif399U}7fnV~}J^@{C4kMv|=nqPn|gx~99U z+Evv(>LCzfHo;C1umnP!7fd#0S0)Ns+hG$Ki6lJ}$9p(z7S6JXIj}iTHs=H@2wnWlL-~6kpZ{5dtzxQo@=eo;3ZTLI`y#bnisWC5qi7_9&Mo*3T zy;mBu7yNzjX7I{a(FVK~oCZGxmcc&;UkkqVI%DX+9g{;J3gIc>NDLKK*Qtp9IzJ(ft0`K&|t1e*Z=AZtlMXYM%cK zyd3-o@Luq8n6LFrf*%0io!>tPs{LQ*_&lih{yxWl0JUG2zs?wK`O84He=Rrydf?l^ zec)~2Pk@@&Z-d(3r$M#<3aEab0XKnP178mQDR?XRm*6YFSHIrv*Je=b9R>CNZJ^rU z0hYk~K(${2wXR1%{+UPf=TCujX?mdc|J$I({Y&s=;PasR`+wk_;59cI^8k1s=z))c zKMnpN_z*aS@Jqh_7<>!(KS9l7E1Uii@EEB1{3lRy^xr_u+q}uG<0??|conGUH-dC+ zZU)8IyFkhHWR535$wvaJ{Wn4J?>pd~;9r1D-MsmSj5z_`1tL1;v!LYbOQ81S2Rz5$ z+d=7X6}%bzNl@#13_JpkBJ_IyAyDgk6x6ov)Hn}=^Wg7*KLUD8 zY7V>~RQs=h8t++9`}%cIa`k86Zt$90oE{zm#kWOJ<9-s9JUpG_GvG_P{|2c2d=6B< ze+6nC&x6{pzXvtWl`KN<-vH|QP5FHZ)cfP0C*fZcm?D?s|za ze*(^Mf5Q(uy$V6e;m1J9*`I?I@Qz!Z+%AK9|2+6o@R=OH24>v`}XHN4+`t>Ius%)-B$k{Se0;PvXL6&5ipw&lkp8KzY zW$N#=%&WnjpvK*s<0Po@XF&1eJ)rD(0BT(ifqL%~pzPYO zgAamV0kyuJ?{M$k0Wu}C7Ze}f555=tJa_|m#klhuH-ehqJa`NEX;A$6GAKL$9QgC# z{{ept{J9@>e)fCd9`3K+g|7q;f~bo5W$@kLv*0v%%N@ur*a6l57eLwPuY>o2uR$2J ze`Qd7sDqb*38-~-z!C7jfEwqOFjac~UQqHAg4)LzlwSNe_#yB~5K%U7yBpqtbD;YF zDk%Pb1AG0$H3Qf|3MIyHIIVYw?6`34t@*Ny#Fe{e?GrA?{xFJ z8q_?m1+_1)2eogvfY*ZKpyqu5lztrpuLo=3YrqeH(u+^!-#?n;iutm(v$CiYX9B*`TqqkIZ{+?J;AU_X)Hu_i=JOsSRJT|74e-~Xf1Tfd z5*&l3^LwUc9)@m)eiqVP#TVFbz5?m4p^??WGleg!%X?T13>DQFRT0_s6cr~&DNikc;; zqZ>Z+&~|$@_;ZfS_d_>AlCPhE^!Z8X6HpaG^sVjz)+Y%u5B77IzpeawImZuyk3r+m z??4Yg9wa@}XD2iT%|br}y%stEeG%FMNnRd-iqDVd7ry{bLO%@M1^p{XpBV?H3tk8P z8%VOM&t?baDEKkxbI`9spMmy5Ux4m`iciKx3{{|i2|W${AoSCaKJS74g}rj|jV?b6 z-JU-ihBtBZ+xdgra@+>~0rc+t{2s3<`*+9C_3OF*67(a`qtG+ZyP)5IeiPDX4!YG|4gM_TmmdV*0G)(h4P6NtZ(rP~ zdewL_@;2{|qb!LVn@7Dk(Ot9YN7c<<9C^MsQF>jVx?60&oAG)LRU*npaUjX~}HfvenPBWLs)`Y=lwZZP_Z=mU?08(N!3A z{6<*y)GREwv!LW{om9It^OG#^j&AHN{gk$u&AYa2&HVXo>75ttm1Y<3Z^EOQR(!$y znqiuTk-iJW9?O6vc(5HN!O)D;OBuqg^2p&yt-I)>WF{(E7)NHJS~U}`By5-oc-)QK zUfRwt7X2vGCREu3c%9Y6!nnM^j+}`6rZ@?E+ynS?mp9R9c=4QVI2Sh>@uF6c1Pyko z>V;X*6jNza4)Q*$<7T2g-%d00PQTjddUJ8or0M-rljGi&)VwqCm%>KqM`kyBKOf}a zHM?HRPt(OXsTPk0_i;2ACe40>akD#aBXd!lF%@+uKb4lD}q>|aa6jW+v z&&2HB6UX+??mIENe`@cEdyY&_nmx>ZdlohWvnQwo&2o@%0YmiqMl2Z_uw=wrv|}eh ziku>FZrQ_JaokHsJp@qPPdvX;iQ6!~8V6}Kl6f_s3Acj8N(7>^c0&ey&bqB275nop z$C+jt&PPliw$}pYn%D`qQ!XkfKqH=KPV@&a(1>c238rjQ$?REx-LZQVrWvXxQOTdG ziTldzX}20-MT&@!wHe1pbi`?2yB}0bX75}|HP?hCZ`m?4AjjpiF+ zS_3mC>Z>tYdZaW{l4fe`aybb)p`DbP4>zl-0qb~x&)C$|*q%LBsQhfBhIU)mwcfXH zd}`_i-U-$$W_^#65p}k44~w-JGZnQZK*gJJgv?jN`4DT9<|eJ`mAic-=GNvIuy$~G zz403-{U-Ks+#A{Mm*aM}y@HkXE7|su5=OO-ag%nl=T@v5fnSw0Vt74v8C~NhZTM*| zKqvP0`=V=K~bipo2UN9MedK`+%{ z&PO9gO6H!RoV5L<%SF&Y9RoYLidA>lb)nhf%Y1CLE|*x%VcgskC-ZTZ1(8#qqWN8( zW1iKiwYXpJ$fqe~{91Q8bFo+PaLU2`uo zT9Ki;7ey5$al7UIre>csSeA8{@70oE?vBmdi&0M4k+*NY6U(>JDt2x6@4UY zYTUydlzls5CZ7~W%qDlnxG8J;_h)bvMjp_xEd4;cp+8YzCau-V!Sm<+FtRrYJGdAm z6(3>4Kw}mzFi5$H8EAqP53E@1Be$Mp+(ri(9r$U6Ye4K|K+EBL$y~x~&3J>i5(H%m zDVf3q!h16nM-rN;uIHR^Y7VkBg-nc_gK;#5r3jL+!X6XpREo98A>_6-UkYuph#hoS z`^>A!VlXex9gI89TTNH8SYB%yFE|)uTDHe;v}%4CUsmxO>qc5P%pvA&E&CkKscH`8 z?pH6#F|WJF%2X;WcCOtRd}T#_-R(vV$IYR>+znl(x=!PWnTF9^Y!215a%WHxPl5== z6-fX6_uoI3)BS}ZCr}{}w6bQcX~`VY1_xfH5%X8V-j3{bl^Dl{cs4Y%@xhwl?BWqu z-gB_VFYP~6_`v?qYa3L9O4wv=Zb2@V^%eO#c`CkcHT(+7yWto`n@i~e^Zt+NBa6{X z=d%9E9bDQJ)(umRiSg&cpiw2(Nu;INR<^I{*>3`c7wcY0v6^|b#~bj}skWrYcC@a! zwFt^m3SAkM5aDer?Ig^)BRF3CsPi5S9C>aZ?Q3!p#cN)+7*_CtvA2kr5pH$R=ee$R z1d7!Z5ldVvagq>GH<xx>!efRvGceD~f|Hrc zisXJbN>_$rKCOvVEn{J5z{%|53NzF4BL#djSQgeai%F@cj_Iu+vH^; zR*@fNf#0;lD*f8BwVgD!DFSyZYDKL4u69_d&ng^MI2K>xTbLik1w$iXFMY3^#C4<`BUpD|DoJB| zr4%;yvq~h}x|qZfUXl)y05vHGyoTIcaU)dBif2in$V2OQVa6b#aJfc|-zL2Gil~j? zG_Bc03IjhEp5#sL6RC_hBrH|~TVw?UW_BG+NqWai0hIyx$&Fu5;|94tYKkG*s%JnMRfuz=h4Om;7pwM9%)f3xP%D!2vHB4H?`+BGQqUwjg47TqCHFe zffFkk8YcFS_Hf)@rRJzj$@k4pt*t3}GcBT+Iigmp^EUb(-?Sw)$E=WA1#J?i*KV?F zRsBX0HX1eTKU@{yg6}ukFW&x?FJUV=%x{{ZJWK9&! zmJII^MmT#zJKtt|14r)6RAG)>DZ_43+AcRk5{+ufdq9=5zLmnG2VqAB1Sek@D~74! zR3!w*f(FtZjG6}mYCro&nl>*t>ZBUKK-DK8Ib+XU<*KB%TI^sXtE>4W%R$8_GqaOa z$c@jT~QBjMK9FSGmm&t0up~Sth3CSL(=afhiYx`Ll&M zz}9A5ZL=QR1r=h}QprqlVXK^jyDaWsr(DhV3w&Nt95yN2po(9P;)~zEsR!NSIyLg$ z_79htKR0JfbZu_h*dfax)$Djcn99!JcLM;jE$nqlHi`emP>VONI-@!jk%cO~jJck)g&-)4ixW{LO4y_rVb z@$25M$;rDLp=&WkJ$bOUouwU{h6BEF8)9#VL1FZxQm%x0)E(_?ZtV6!J56aWNXGU? zXa}Zc+`GLTW}A$6D6S@}=V9&8k&534%JI;tO5}SwR5{VcV7j^bHqZQN$6MWZInRiGQrLQ zTODZ2qux2PE{<4wXO#>brd?e3mi(1dy)(RL4-ssSJy#ky_9tuTexE2l1@<3s(% zZSi3Jd@D7W;)@juTP^z>fAXovol6sri`jm}m+8l?5! zIdf?8-~%T(b~!S2V&cGw-4ior4&4rotk6XJ1axrS3*K($EmnOMh`POz2((quXlFk6opLY-dko9JA|Kl zPb^?Z+-0BH>IAnGcluq8o9U$pq0~!sTldTlP(1(bjS0^qQGC>v_Q|aQ;jkPqN`r%@MX-$84$Z zECNEqT}QmPLrYW;Vs@H&WJs95fQBto-3eAs=~*Lg_ReH=pW@bFoWTK%O@=teRYW{e z@+RtxL^@7F9tE9lT~*e2)U!u8z0(|~#z=68L3@!yoZfO`rV6!N!d^(EZI?0$bWBt| zWT6&_6p+2BPEv8)$4oUsp0GwAb7rkbe3w_SmA=leE+dxuw!MbCI5av&q!D~O4#G__ zuwAw4y83V%PlH7gPjqPGN0r{$B^kCu93aN^{N!fA8l!_jlLHlme5T%Rg^`~lMsP5} z7dgWjp8Me7ruQVCh92ZNH6Xl(k(M!WZY6rBM`3Y>wUn%p^VS-@<&=#+x6X3NsHvud zIfu9SQ+^@gxQMv#={?oJ%!e6E?VZKJ1ZKLPP#I0y$izT;&S9@|o7OwSQ5~K>);M8q zpsJLdeYMa1N@4$qAX3YhQLp3G2@87a3Au?l)afl(mk_pteUI;oRA$y5(FEr!?A-}Og?=7*TZ8KdRd_Uz&Ia}zabwwMSsY57!C#bHR8d9BBoKh}E z0M5zomkHjTS*II99w`#(B!@iscP4S^@AreJ!Ru3Gr4^K5dBGgF79RV`Q4gn$bwPvL6&SH79XeM@_Dk)Fl)&h?&*7%8{ZI{WFJ z!84;1ie)gBYtDd5?(hfp7x5^bkc@+uniz);RegP>tAG&9BeHM@K!fNKfnOIcZWs%y zxI7fe7Gqem%@~Etv}ZxiMQz;VG`|x`$!H?2yI3Vf5`V!89RkEOIEiMyy4^u$<;CWKe?0dcPb_Cf-wpIsuUy0ZbICt3+*F*?&B}8 zDJ}%$+dL53;C96_ZM4 z`gSJQ!8L(9he+1P#hjSo;sz&3N!fm}yVfNSqP9Ua;jceJTJt48z8Y@o4v~&4nWP+n z_lSryaeEPAA>P!(J1qDN?aq^m1W@@(sOVswhFL?1(iWEL97>3oQul@{4@7hq9x~+zOi>V5>;4kF5=V;A_JYHu7ioQtlt_9Nb96MVzSL3P ze#jo5BQnbkx3tT~Mp7;XN)<#5-%U8a6otgg_JLpWWLPpPT;zn6tV8JJDts&tf8=T9 z3sfWfxh>A$s!GL2@zf^=TU~qx9hSRjQ_Ms7bG}V{?{-qsTk;0Nf|$7IGfP^*QX}j* zrNf^(1$F(D+bbV;hfG9gES6tEWIpFigc%%Jan9t-Ppcs{wX7J{1Ek0sK5SAzZW*DJ zOuFF83!F~$zj4mbuA$SVTe(wZ1Wrr`XHRiC^=sP7p`)blyA!I{cpEmAzMK`>s5im| zH>)L5QP(VG87t@6B^^>>VrOm8=@NLhN~)j(DaFbJ?2Hldb2XBkNE@jQB`B`i7)~a2 z&Aw-p7hqFA7xoQX!rp2Y+FqBtu*LT1Z)jIIAqbXqLe)DRaSnFSZzUxqV;7!H*~!}Y z!_L)4;W@_XN1wZUN&A1YU5ruwR2eBKO3(yc-Z64ra z-QMzOzgy01SP${763@7U>?=;YcptdE!YPx%4)+jJIP!1nY;d9NIg6`kKD)ZW8T1=O+3un9pC0yB}QoBU1#{Rz@vZX*E4#Gx<;#I&30v74!+>Hj>W90FjO6# zEpF?QI+L~WCNH+-M?1ac3hDI{%H=Ov>C&u>{uH*)6dTyD3KlWfX<{u}Qq)U=qFbUb zoTxPgigj&IhVyLI0Qv%zKR8`H=o&e8l#$}%e_cdl(=S8%o(Hw)>7X3I zO|V1}w;mhnUL>sgnH0~;L9Jap89cB{c7fs&eU`08oRrWJHtn7 zZOtEj;0Ml%Cx`DaTubZj*|Fg#7!T_Y5k>0(mM9b0Q#W-+wTWLis1j^khD+qFTi?`I z&Wknu`{FsC&Opcpl8_Q)kjrpR;~^syE@fZrA%i=C>zgzL@`5H-2v}IP5!X0>RG`)| KYq!S, 2005. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2005-11-06 21:41-0600\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Vladimir Labath \n" +"Language-Team: Slovak \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: contrib/admin/templates/admin/base.html:23 +msgid "Welcome," +msgstr "Vítajte," + +#: contrib/admin/templates/admin/base.html:23 +msgid "Change password" +msgstr "Zmena hesla" + +#: contrib/admin/templates/admin/base.html:23 +msgid "Log out" +msgstr "Odhlásenie" + +#: contrib/admin/templates/admin/base.html:29 +#: contrib/admin/templates/admin/500.html:4 +#: contrib/admin/templates/admin/object_history.html:5 +#: contrib/admin/templates/registration/logged_out.html:4 +#: contrib/admin/templates/registration/password_change_done.html:4 +#: contrib/admin/templates/registration/password_change_form.html:4 +#: contrib/admin/templates/registration/password_reset_done.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:4 +msgid "Home" +msgstr "Začiatok" + +#: contrib/admin/templates/admin/404.html:4 +#: contrib/admin/templates/admin/404.html:8 +msgid "Page not found" +msgstr "Stránka sa nenašla" + +#: contrib/admin/templates/admin/404.html:10 +msgid "We're sorry, but the requested page could not be found." +msgstr "Ľutujeme, ale požadovaná stránka sa nenašla." + +#: contrib/admin/templates/admin/500.html:4 +msgid "Server error" +msgstr "Chyba servera" + +#: contrib/admin/templates/admin/500.html:6 +msgid "Server error (500)" +msgstr "Chyba servera (500)" + +#: contrib/admin/templates/admin/500.html:9 +msgid "Server Error (500)" +msgstr "Chyba servera (500)" + +#: contrib/admin/templates/admin/500.html:10 +msgid "" +"There's been an error. It's been reported to the site administrators via e-" +"mail and should be fixed shortly. Thanks for your patience." +msgstr "" +"Vznikla chyba. Prostredníctvom e-mailu bol o nej informovaný správca a " +"chyba by mala byť o chviľu odstránená. Ďakujeme za vašu trpezlivosť." + +#: contrib/admin/templates/admin/object_history.html:5 +msgid "History" +msgstr "História" + +#: contrib/admin/templates/admin/object_history.html:18 +msgid "Date/time" +msgstr "Dátum/čas" + +#: contrib/admin/templates/admin/object_history.html:19 models/auth.py:47 +msgid "User" +msgstr "Uživateľ" + +#: contrib/admin/templates/admin/object_history.html:20 +msgid "Action" +msgstr "Udalosť" + +#: contrib/admin/templates/admin/object_history.html:26 +msgid "DATE_WITH_TIME_FULL" +msgstr "PLNY_DATUM_AJ_CAS" + +#: contrib/admin/templates/admin/object_history.html:36 +msgid "" +"This object doesn't have a change history. It probably wasn't added via this " +"admin site." +msgstr "" +"Tento object nemá históriu zmien. Možno nebol pridaný prostredníctvom tohoto " +"web admina" + +#: contrib/admin/templates/admin/base_site.html:4 +msgid "Django site admin" +msgstr "Django web admin" + +#: contrib/admin/templates/admin/base_site.html:7 +msgid "Django administration" +msgstr "Administrácia Django" + +#: contrib/admin/templates/admin/delete_confirmation.html:7 +#, python-format +msgid "" +"Deleting the %(object_name)s '%(object)s' would result in deleting related " +"objects, but your account doesn't have permission to delete the following " +"types of objects:" +msgstr "" +"Vymazaním objektu %(object_name)s '%(object)s' môžete spôsobiť vymazanie " +"súvisiacich objektov, ale váš účet nemá povolenie na mazanie nasledujúcich " +"typov objektov:" + +#: contrib/admin/templates/admin/delete_confirmation.html:14 +#, python-format +msgid "" +"Are you sure you want to delete the %(object_name)s \"%(object)s\"? All of " +"the following related items will be deleted:" +msgstr "" +"Ste si istý, že chcete vymazať %(object_name)s \"%(object)s\"? Všetky " +"nasledujúce objekty budú tiež vymazané :" + +#: contrib/admin/templates/admin/delete_confirmation.html:18 +msgid "Yes, I'm sure" +msgstr "Ano, som si istý" + +#: contrib/admin/templates/admin/index.html:27 +msgid "Add" +msgstr "Pridaj" + +#: contrib/admin/templates/admin/index.html:33 +msgid "Change" +msgstr "Zmeň" + +#: contrib/admin/templates/admin/index.html:43 +msgid "You don't have permission to edit anything." +msgstr "Nemáte povolenie na zmeny ." + +#: contrib/admin/templates/admin/index.html:51 +msgid "Recent Actions" +msgstr "Posledné udalosti" + +#: contrib/admin/templates/admin/index.html:52 +msgid "My Actions" +msgstr "Moje udalosti" + +#: contrib/admin/templates/admin/index.html:56 +msgid "None available" +msgstr "Nepovolené" + +#: contrib/admin/templates/admin/login.html:15 +msgid "Username:" +msgstr "Meno:" + +#: contrib/admin/templates/admin/login.html:18 +msgid "Password:" +msgstr "Heslo:" + +#: contrib/admin/templates/admin/login.html:20 +msgid "Have you forgotten your password?" +msgstr "Zabudli ste vaše heslo?" + +#: contrib/admin/templates/admin/login.html:24 +msgid "Log in" +msgstr "Prihlásenie" + +#: contrib/admin/templates/registration/logged_out.html:8 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "Ďakujeme vám, za stráveny čas na našej stránke." + +#: contrib/admin/templates/registration/logged_out.html:10 +msgid "Log in again" +msgstr "Prihláste sa znovu" + +#: contrib/admin/templates/registration/password_change_done.html:4 +#: contrib/admin/templates/registration/password_change_form.html:4 +#: contrib/admin/templates/registration/password_change_form.html:6 +#: contrib/admin/templates/registration/password_change_form.html:10 +msgid "Password change" +msgstr "Zmena hesla" + +#: contrib/admin/templates/registration/password_change_done.html:6 +#: contrib/admin/templates/registration/password_change_done.html:10 +msgid "Password change successful" +msgstr "Heslo bolo úspešne zmenené" + +#: contrib/admin/templates/registration/password_change_done.html:12 +msgid "Your password was changed." +msgstr "Vaše heslo bolo zmenené." + +#: contrib/admin/templates/registration/password_change_form.html:12 +msgid "" +"Please enter your old password, for security's sake, and then enter your new " +"password twice so we can verify you typed it in correctly." +msgstr "" +"Kvôli bezpečnosti vložte prosím vaše staré heslo, a potom dvakrát vaše nové " +"heslo, tým môžeme skontrolovať jeho správnosť." + +#: contrib/admin/templates/registration/password_change_form.html:17 +msgid "Old password:" +msgstr "Staré heslo:" + +#: contrib/admin/templates/registration/password_change_form.html:19 +msgid "New password:" +msgstr "Nové heslo:" + +#: contrib/admin/templates/registration/password_change_form.html:21 +msgid "Confirm password:" +msgstr "Potvrdenie hesla:" + +#: contrib/admin/templates/registration/password_change_form.html:23 +msgid "Change my password" +msgstr "Zmena môjho hesla" + +#: contrib/admin/templates/registration/password_reset_done.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:6 +msgid "Password reset" +msgstr "Obnova hesla" + +#: contrib/admin/templates/registration/password_reset_done.html:6 +#: contrib/admin/templates/registration/password_reset_done.html:10 +msgid "Password reset successful" +msgstr "Heslo bolo úspešne obnovené" + +#: contrib/admin/templates/registration/password_reset_done.html:12 +msgid "" +"We've e-mailed a new password to the e-mail address you submitted. You " +"should be receiving it shortly." +msgstr "" +"Poslali sme vám, nové heslo na vami uvedenú emailovú adresu.Mali by ste ho " +"dostať čo najskôr." + +#: contrib/admin/templates/registration/password_reset_email.html:2 +msgid "You're receiving this e-mail because you requested a password reset" +msgstr "Dostali ste túto správu preto, lebo ste požadovali obnoviť vaše heslo" + +#: contrib/admin/templates/registration/password_reset_email.html:3 +#, python-format +msgid "for your user account at %(site_name)s" +msgstr "pre váš užívateľský účet na %(site_name)s" + +#: contrib/admin/templates/registration/password_reset_email.html:5 +#, python-format +msgid "Your new password is: %(new_password)s" +msgstr "Vaše nové heslo je: %(new_password)s" + +#: contrib/admin/templates/registration/password_reset_email.html:7 +msgid "Feel free to change this password by going to this page:" +msgstr "Môžete zmeniť toto heslo na nasledujúcej stránke:" + +#: contrib/admin/templates/registration/password_reset_email.html:11 +msgid "Your username, in case you've forgotten:" +msgstr "Vaše užívateľské meno, ak ste ho zabudli:" + +#: contrib/admin/templates/registration/password_reset_email.html:13 +msgid "Thanks for using our site!" +msgstr "Ďakujeme, že používate naše stránky!" + +#: contrib/admin/templates/registration/password_reset_email.html:15 +#, python-format +msgid "The %(site_name)s team" +msgstr "Skupina %(site_name)s" + +#: contrib/admin/templates/registration/password_reset_form.html:12 +msgid "" +"Forgotten your password? Enter your e-mail address below, and we'll reset " +"your password and e-mail the new one to you." +msgstr "" +"Zabudli ste vaše heslo? Vložte nižšie vašu e-mail adresu, a nové heslo vám " +"bude na ňu zaslané ." + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "E-mail address:" +msgstr "E-mailová adresa" + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "Reset my password" +msgstr "Obnova môjho hesla" + +#: contrib/admin/models/admin.py:6 +msgid "action time" +msgstr "čas udalosti" + +#: contrib/admin/models/admin.py:9 +msgid "object id" +msgstr "objekt id" + +#: contrib/admin/models/admin.py:10 +msgid "object repr" +msgstr "objekt repr" + +#: contrib/admin/models/admin.py:11 +msgid "action flag" +msgstr "návestie udalosti" + +#: contrib/admin/models/admin.py:12 +msgid "change message" +msgstr "zmena zprávy" + +#: contrib/admin/models/admin.py:15 +msgid "log entry" +msgstr "záznam priebehu" + +#: contrib/admin/models/admin.py:16 +msgid "log entries" +msgstr "záznamy priebehu" + +#: utils/dates.py:6 +msgid "Monday" +msgstr "Pondelok" + +#: utils/dates.py:6 +msgid "Tuesday" +msgstr "Utorok" + +#: utils/dates.py:6 +msgid "Wednesday" +msgstr "Streda" + +#: utils/dates.py:6 +msgid "Thursday" +msgstr "Štvrtok" + +#: utils/dates.py:6 +msgid "Friday" +msgstr "Piatok" + +#: utils/dates.py:7 +msgid "Saturday" +msgstr "Sobota" + +#: utils/dates.py:7 +msgid "Sunday" +msgstr "Nedeľa" + +#: utils/dates.py:14 +msgid "January" +msgstr "Január" + +#: utils/dates.py:14 +msgid "February" +msgstr "Február" + +#: utils/dates.py:14 utils/dates.py:27 +msgid "March" +msgstr "Marec" + +#: utils/dates.py:14 utils/dates.py:27 +msgid "April" +msgstr "Apríl" + +#: utils/dates.py:14 utils/dates.py:27 +msgid "May" +msgstr "Máj" + +#: utils/dates.py:14 utils/dates.py:27 +msgid "June" +msgstr "Jún" + +#: utils/dates.py:15 utils/dates.py:27 +msgid "July" +msgstr "Júl" + +#: utils/dates.py:15 +msgid "August" +msgstr "August" + +#: utils/dates.py:15 +msgid "September" +msgstr "September" + +#: utils/dates.py:15 +msgid "October" +msgstr "Octóber" + +#: utils/dates.py:15 +msgid "November" +msgstr "November" + +#: utils/dates.py:16 +msgid "December" +msgstr "December" + +#: utils/dates.py:27 +msgid "Jan." +msgstr "" + +#: utils/dates.py:27 +msgid "Feb." +msgstr "" + +#: utils/dates.py:28 +msgid "Aug." +msgstr "" + +#: utils/dates.py:28 +msgid "Sept." +msgstr "" + +#: utils/dates.py:28 +msgid "Oct." +msgstr "" + +#: utils/dates.py:28 +msgid "Nov." +msgstr "" + +#: utils/dates.py:28 +msgid "Dec." +msgstr "" + +#: models/core.py:7 +msgid "domain name" +msgstr "meno domény" + +#: models/core.py:8 +msgid "display name" +msgstr "zobrazené meno" + +#: models/core.py:10 +msgid "site" +msgstr "web" + +#: models/core.py:11 +msgid "sites" +msgstr "weby" + +#: models/core.py:24 +msgid "label" +msgstr "popis" + +#: models/core.py:25 models/core.py:36 models/auth.py:6 models/auth.py:19 +msgid "name" +msgstr "meno" + +#: models/core.py:27 +msgid "package" +msgstr "balík" + +#: models/core.py:28 +msgid "packages" +msgstr "balíky" + +#: models/core.py:38 +msgid "python module name" +msgstr "meno python modulu" + +#: models/core.py:40 +msgid "content type" +msgstr "typ obsahu" + +#: models/core.py:41 +msgid "content types" +msgstr "typy obsahu" + +#: models/core.py:64 +msgid "redirect from" +msgstr "presmerovaný z" + +#: models/core.py:65 +msgid "" +"This should be an absolute path, excluding the domain name. Example: '/" +"events/search/'." +msgstr "" +"Tu by sa mala použiť absolútna cesta, bez domény. Napr.: '/events/search/'." + +#: models/core.py:66 +msgid "redirect to" +msgstr "presmerovaný na " + +#: models/core.py:67 +msgid "" +"This can be either an absolute path (as above) or a full URL starting with " +"'http://'." +msgstr "" +"Tu môže byť buď absolútna cesta (ako hore) alebo plné URL začínajúce s " +"'http://'." + +#: models/core.py:69 +msgid "redirect" +msgstr "presmerovanie" + +#: models/core.py:70 +msgid "redirects" +msgstr "presmerovania" + +#: models/core.py:83 +msgid "URL" +msgstr "URL" + +#: models/core.py:84 +msgid "" +"Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgstr "" +"Príklad: '/about/contact/'. Uistite sa, že máte vložené ako úvodné tak aj " +"záverečné lomítka." + +#: models/core.py:85 +msgid "title" +msgstr "názov" + +#: models/core.py:86 +msgid "content" +msgstr "obsah" + +#: models/core.py:87 +msgid "enable comments" +msgstr "povolené komentáre" + +#: models/core.py:88 +msgid "template name" +msgstr "meno predlohy" + +#: models/core.py:89 +msgid "" +"Example: 'flatfiles/contact_page'. If this isn't provided, the system will " +"use 'flatfiles/default'." +msgstr "" +"Príklad: 'flatfiles/contact_page'. Ak sa toto nevykonalo, systém použije " +"'flatfiles/default'." + +#: models/core.py:90 +msgid "registration required" +msgstr "musíte byť zaregistrovaný" + +#: models/core.py:90 +msgid "If this is checked, only logged-in users will be able to view the page." +msgstr "" +"Ak je toto označené, potom len prihlásený užívateľ môže vidieť túto stránku." + +#: models/core.py:94 +msgid "flat page" +msgstr "plochá stránka" + +#: models/core.py:95 +msgid "flat pages" +msgstr "ploché stránky" + +#: models/core.py:113 +msgid "session key" +msgstr "kľúč sedenia" + +#: models/core.py:114 +msgid "session data" +msgstr "údaje sedenia" + +#: models/core.py:115 +msgid "expire date" +msgstr "dátum konca platnosti" + +#: models/core.py:117 +msgid "session" +msgstr "sedenie" + +#: models/core.py:118 +msgid "sessions" +msgstr "sedenia" + +#: models/auth.py:8 +msgid "codename" +msgstr "codename" + +#: models/auth.py:10 +msgid "Permission" +msgstr "Povolenie" + +#: models/auth.py:11 models/auth.py:58 +msgid "Permissions" +msgstr "Povolenia" + +#: models/auth.py:22 +msgid "Group" +msgstr "Skupina" + +#: models/auth.py:23 models/auth.py:60 +msgid "Groups" +msgstr "Skupiny" + +#: models/auth.py:33 +msgid "username" +msgstr "užívateľské meno" + +#: models/auth.py:34 +msgid "first name" +msgstr "meno" + +#: models/auth.py:35 +msgid "last name" +msgstr "priezvisko" + +#: models/auth.py:36 +msgid "e-mail address" +msgstr "emailová adresa" + +#: models/auth.py:37 +msgid "password" +msgstr "heslo" + +#: models/auth.py:37 +msgid "Use an MD5 hash -- not the raw password." +msgstr "" +"Vložte takú hodnotu hesla , ako vám ju vráti MD5, nevkladajte ho priamo. " + +#: models/auth.py:38 +msgid "staff status" +msgstr "zamestnanecká príslušnosť" + +#: models/auth.py:38 +msgid "Designates whether the user can log into this admin site." +msgstr "Označenie, ak užívateľ má oprávnenie vstúpiť ako administrátor." + +#: models/auth.py:39 +msgid "active" +msgstr "aktívny" + +#: models/auth.py:40 +msgid "superuser status" +msgstr "superuživateľská príslušnosť" + +#: models/auth.py:41 +msgid "last login" +msgstr "posledné prihlásenie" + +#: models/auth.py:42 +msgid "date joined" +msgstr "dátum registrácie" + +#: models/auth.py:44 +msgid "" +"In addition to the permissions manually assigned, this user will also get " +"all permissions granted to each group he/she is in." +msgstr "" +"Okrem ručne vložených povolení, tento uživateľ dostane všetky povolenia " +"skupin, v ktorých sa nachádza." + +#: models/auth.py:48 +msgid "Users" +msgstr "Užívatelia" + +#: models/auth.py:57 +msgid "Personal info" +msgstr "Osobné údaje" + +#: models/auth.py:59 +msgid "Important dates" +msgstr "Dôležité údaje" + +#: models/auth.py:182 +msgid "Message" +msgstr "Zpráva" + +#: conf/global_settings.py:36 +msgid "Czech" +msgstr "Český" + +#: conf/global_settings.py:37 +msgid "German" +msgstr "Nemecký" + +#: conf/global_settings.py:38 +msgid "English" +msgstr "Anglický" + +#: conf/global_settings.py:39 +msgid "Spanish" +msgstr "Španielsky" + +#: conf/global_settings.py:40 +msgid "French" +msgstr "Francúzsky" + +#: conf/global_settings.py:41 +msgid "Galician" +msgstr "Galicijský" + +#: conf/global_settings.py:42 +msgid "Italian" +msgstr "Taliansky" + +#: conf/global_settings.py:43 +msgid "Norwegian" +msgstr "Nórsky" + +#: conf/global_settings.py:44 +msgid "Brazilian" +msgstr "Brazílsky" + +#: conf/global_settings.py:45 +msgid "Russian" +msgstr "Ruský" + +#: conf/global_settings.py:46 +msgid "Serbian" +msgstr "Srbský" + +#: conf/global_settings.py:47 +msgid "Simplified Chinese" +msgstr "Zjednodušená činština " + +#: conf/global_settings.py:48 +msgid "Slovak" +msgstr "" + +#: core/validators.py:59 +msgid "This value must contain only letters, numbers and underscores." +msgstr "Toto môže obsahovať len písmená, číslice a podčiarkovníky." + +#: core/validators.py:63 +msgid "This value must contain only letters, numbers, underscores and slashes." +msgstr "Toto môže obsahovať len písmena, číslice, podčiarkovniky a lomítka." + +#: core/validators.py:71 +msgid "Uppercase letters are not allowed here." +msgstr "Veľké písmená tu nie sú povolené." + +#: core/validators.py:75 +msgid "Lowercase letters are not allowed here." +msgstr "Malé písmena tu nie sú povolené." + +#: core/validators.py:82 +msgid "Enter only digits separated by commas." +msgstr "Vložte len číslice, oddelené čiarkami." + +#: core/validators.py:94 +msgid "Enter valid e-mail addresses separated by commas." +msgstr "Vložte platné e-mail adresy oddelené čiarkami." + +#: core/validators.py:98 +msgid "Please enter a valid IP address." +msgstr "Prosím vložte platnú IP adresu." + +#: core/validators.py:102 +msgid "Empty values are not allowed here." +msgstr "Prázdne hodnoty tu nie sú povolené." + +#: core/validators.py:106 +msgid "Non-numeric characters aren't allowed here." +msgstr "Znaky, ktoré nie sú číslicami, tu nie sú povolené." + +#: core/validators.py:110 +msgid "This value can't be comprised solely of digits." +msgstr "Tento údaj nemôže byť vytvorený len z číslic." + +#: core/validators.py:115 +msgid "Enter a whole number." +msgstr "Vložte celé číslo." + +#: core/validators.py:119 +msgid "Only alphabetical characters are allowed here." +msgstr "Tu sú povolené len alfanumerické znaky." + +#: core/validators.py:123 +msgid "Enter a valid date in YYYY-MM-DD format." +msgstr "Vložte platný dátum vo formáte RRRR-MM-DD." + +#: core/validators.py:127 +msgid "Enter a valid time in HH:MM format." +msgstr "Vložte platný čas vo formáte HH:MM." + +#: core/validators.py:131 +msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." +msgstr "Vlož platný dátum/čas vo formáte RRRR-MM-DD HH:MM" + +#: core/validators.py:135 +msgid "Enter a valid e-mail address." +msgstr "Vložte platnú e-mail adresu." + +#: core/validators.py:147 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "" +"Nahrajte platný obrázok. Súbor, ktorý ste nahrali buď nebol obrázok alebo je " +"nahratý poškodený obrázok." + +#: core/validators.py:154 +#, python-format +msgid "The URL %s does not point to a valid image." +msgstr "URL %s neodkazuje na platný obrázok." + +#: core/validators.py:158 +#, python-format +msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." +msgstr "Telefónne číslo musí mať formát XXX-XXX-XXXX. \"%s\" je neplatné." + +#: core/validators.py:166 +#, python-format +msgid "The URL %s does not point to a valid QuickTime video." +msgstr "URL %s neodkazuje na platné QuickTime video." + +#: core/validators.py:170 +msgid "A valid URL is required." +msgstr "Platné URL je požadované." + +#: core/validators.py:184 +#, python-format +msgid "" +"Valid HTML is required. Specific errors are:\n" +"%s" +msgstr "" +"Platná HTML je požadovaná. Konkrétne chyby sú:\n" +"%s" + +#: core/validators.py:191 +#, python-format +msgid "Badly formed XML: %s" +msgstr "Zle formované XML: %s" + +#: core/validators.py:201 +#, python-format +msgid "Invalid URL: %s" +msgstr "Neplatný URL %s" + +#: core/validators.py:203 +#, python-format +msgid "The URL %s is a broken link." +msgstr "Odkaz na URL %s je neplatný." + +#: core/validators.py:209 +msgid "Enter a valid U.S. state abbreviation." +msgstr "Vložte platnú skratku U.S. štátu." + +#: core/validators.py:224 +#, python-format +msgid "Watch your mouth! The word %s is not allowed here." +msgid_plural "Watch your mouth! The words %s are not allowed here." +msgstr[0] "Vyjadrujte sa slušne! Slovo %s tu nie je dovolené použivať." +msgstr[1] "Vyjadrujte sa slušne! Slová %s tu nie je dovolené použivať." + +#: core/validators.py:231 +#, python-format +msgid "This field must match the '%s' field." +msgstr "Toto pole sa musí zhodovať s poľom '%s'. " + +#: core/validators.py:250 +msgid "Please enter something for at least one field." +msgstr "Prosím vložte niečo aspoň pre jedno pole." + +#: core/validators.py:259 core/validators.py:270 +msgid "Please enter both fields or leave them both empty." +msgstr "Prosím vložte obidve polia, alebo nechajte ich obe prázdne. " + +#: core/validators.py:277 +#, python-format +msgid "This field must be given if %(field)s is %(value)s" +msgstr "Toto pole musí byť vyplnené tak, že %(field)s obsahuje %(value)s" + +#: core/validators.py:289 +#, python-format +msgid "This field must be given if %(field)s is not %(value)s" +msgstr "" +"Toto pole musí byť vyplnené tak, že %(field)s nesmie obsahovať %(value)s" + +#: core/validators.py:308 +msgid "Duplicate values are not allowed." +msgstr "Duplicitné hodnoty nie sú povolené." + +#: core/validators.py:331 +#, python-format +msgid "This value must be a power of %s." +msgstr "Táto hodnota musí byť mocninou %s." + +#: core/validators.py:342 +msgid "Please enter a valid decimal number." +msgstr "Prosím vložte platné desiatkové číslo. " + +#: core/validators.py:344 +#, python-format +msgid "Please enter a valid decimal number with at most %s total digit." +msgid_plural "" +"Please enter a valid decimal number with at most %s total digits." +msgstr[0] "Prosím vložte platné desiatkové číslo s najviac %s číslicou." +msgstr[1] "Prosím vložte platné desiatkové číslo s najviac %s číslicami." + +#: core/validators.py:347 +#, python-format +msgid "Please enter a valid decimal number with at most %s decimal place." +msgid_plural "" +"Please enter a valid decimal number with at most %s decimal places." +msgstr[0] "" +"Prosím vložte platné desatinné číslo s najviac %s desatinným miestom." +msgstr[1] "" +"Prosím vložte platné desatinné číslo s najviac %s desatinnými miestami." + +#: core/validators.py:357 +#, python-format +msgid "Make sure your uploaded file is at least %s bytes big." +msgstr "Presvedčte sa, že posielaný súbor nemá menej ako %s bytov." + +#: core/validators.py:358 +#, python-format +msgid "Make sure your uploaded file is at most %s bytes big." +msgstr "Presvedčte sa, že posielaný súbor nemá viac ako %s bytov." + +#: core/validators.py:371 +msgid "The format for this field is wrong." +msgstr "Formát pre toto pole je chybný." + +#: core/validators.py:386 +msgid "This field is invalid." +msgstr "Toto pole nie je platné." + +#: core/validators.py:421 +#, python-format +msgid "Could not retrieve anything from %s." +msgstr "Nič som nemohol získať z %s." + +#: core/validators.py:424 +#, python-format +msgid "" +"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." +msgstr "" +" URL %(url)s vrátilo neplatnú hlavičku Content-Type '%(contenttype)s'." + +#: core/validators.py:457 +#, python-format +msgid "" +"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " +"\"%(start)s\".)" +msgstr "" +"Prosím zavrite nezavretý %(tag)s popisovač v riadku %(line)s. (Riadok " +"začína s \"%(start)s\".)" + +#: core/validators.py:461 +#, python-format +msgid "" +"Some text starting on line %(line)s is not allowed in that context. (Line " +"starts with \"%(start)s\".)" +msgstr "" +"Nejaký text začínajúci na riadku %(line)s nie je povolený v tomto kontexte. " +"(Riadok začína s \"%(start)s\".)" + +#: core/validators.py:466 +#, python-format +msgid "" +"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" +"(start)s\".)" +msgstr "" +"\"%(attr)s\" na riadku %(line)s je neplatný atribút. (Riadok začína s \"%" +"(start)s\".)" + +#: core/validators.py:471 +#, python-format +msgid "" +"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" +"(start)s\".)" +msgstr "" +"\"<%(tag)s>\" na riadku %(line)s je neplatný popisovač. (Riadok začína s \"%" +"(start)s\".)" + +#: core/validators.py:475 +#, python-format +msgid "" +"A tag on line %(line)s is missing one or more required attributes. (Line " +"starts with \"%(start)s\".)" +msgstr "" +"Popisovaču na riadku %(line)s chýba jeden alebo viac atribútov. (Riadok " +"začína s \"%(start)s\".)" + +#: core/validators.py:480 +#, python-format +msgid "" +"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " +"starts with \"%(start)s\".)" +msgstr "" +"Atribút \"%(attr)s\" na riadku %(line)s má neplatnú hodnotu. (Riadok začína " +"s \"%(start)s\".)" + +#: core/meta/fields.py:95 +msgid " Separate multiple IDs with commas." +msgstr "Identifikátory oddeľte čiarkami." + +#: core/meta/fields.py:98 +msgid "" +" Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgstr "" +" Podržte \"Control\", alebo \"Command\" na Mac_u, na výber viac ako jednej " +"položky." diff --git a/django/conf/locale/sr/LC_MESSAGES/django.po b/django/conf/locale/sr/LC_MESSAGES/django.po index 9954f46249..526b398a8f 100644 --- a/django/conf/locale/sr/LC_MESSAGES/django.po +++ b/django/conf/locale/sr/LC_MESSAGES/django.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Django Serbian (latin) translation v1.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2005-11-04 09:29-0600\n" +"POT-Creation-Date: 2005-11-06 21:41-0600\n" "PO-Revision-Date: 2005-11-03 00:28+0100\n" "Last-Translator: Petar Marić \n" "Language-Team: Nesh & Petar \" on line %(line)s is an invalid tag. (Line starts with \"%" @@ -955,7 +959,7 @@ msgid "" msgstr "" "Tag \"<%(tag)s>\" u redu %(line)s je neispravan. (Red počinje \"%(start)s\".)" -#: core/validators.py:477 +#: core/validators.py:475 #, python-format msgid "" "A tag on line %(line)s is missing one or more required attributes. (Line " @@ -964,7 +968,7 @@ msgstr "" "Tag-u u redu %(line)s nedostaje jedan ili više atributa. (Red počinje sa \"%" "(start)s\".)" -#: core/validators.py:482 +#: core/validators.py:480 #, python-format msgid "" "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " diff --git a/django/conf/locale/zh_CN/LC_MESSAGES/django.po b/django/conf/locale/zh_CN/LC_MESSAGES/django.po index fec4e4376f..f5de625453 100644 --- a/django/conf/locale/zh_CN/LC_MESSAGES/django.po +++ b/django/conf/locale/zh_CN/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: django v1.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2005-11-04 09:29-0600\n" +"POT-Creation-Date: 2005-11-06 21:41-0600\n" "PO-Revision-Date: 2005-10-30 15:46+0800\n" "Last-Translator: limodou \n" "Language-Team: Simplified Chinese \n" @@ -412,143 +412,143 @@ msgstr "十一月" msgid "Dec." msgstr "十二月" -#: models/core.py:5 +#: models/core.py:7 msgid "domain name" msgstr "域名" -#: models/core.py:6 +#: models/core.py:8 msgid "display name" msgstr "显示名" -#: models/core.py:8 +#: models/core.py:10 msgid "site" msgstr "站点" -#: models/core.py:9 +#: models/core.py:11 msgid "sites" msgstr "站点" -#: models/core.py:22 +#: models/core.py:24 msgid "label" msgstr "标签" -#: models/core.py:23 models/core.py:34 models/auth.py:6 models/auth.py:19 +#: models/core.py:25 models/core.py:36 models/auth.py:6 models/auth.py:19 msgid "name" msgstr "名称" -#: models/core.py:25 +#: models/core.py:27 msgid "package" msgstr "包" -#: models/core.py:26 +#: models/core.py:28 msgid "packages" msgstr "包" -#: models/core.py:36 +#: models/core.py:38 msgid "python module name" msgstr "python模块名" -#: models/core.py:38 +#: models/core.py:40 msgid "content type" msgstr "内容类型" -#: models/core.py:39 +#: models/core.py:41 msgid "content types" msgstr "内容类型" -#: models/core.py:62 +#: models/core.py:64 msgid "redirect from" msgstr "重定向自" -#: models/core.py:63 +#: models/core.py:65 msgid "" "This should be an absolute path, excluding the domain name. Example: '/" "events/search/'." msgstr "应该是一个绝对路径,不包括域名。例如:'/events/search/'。" -#: models/core.py:64 +#: models/core.py:66 msgid "redirect to" msgstr "重定向到" -#: models/core.py:65 +#: models/core.py:67 msgid "" "This can be either an absolute path (as above) or a full URL starting with " "'http://'." msgstr "可以是绝对路径(同上)或以'http://'开始的全URL。" -#: models/core.py:67 +#: models/core.py:69 msgid "redirect" msgstr "重定向" -#: models/core.py:68 +#: models/core.py:70 msgid "redirects" msgstr "重定向" -#: models/core.py:81 +#: models/core.py:83 msgid "URL" msgstr "" -#: models/core.py:82 +#: models/core.py:84 msgid "" "Example: '/about/contact/'. Make sure to have leading and trailing slashes." msgstr "例如:'/about/contact/'。请确保前导和结尾的除号。" -#: models/core.py:83 +#: models/core.py:85 msgid "title" msgstr "标题" -#: models/core.py:84 +#: models/core.py:86 msgid "content" msgstr "内容" -#: models/core.py:85 +#: models/core.py:87 msgid "enable comments" msgstr "允许评论" -#: models/core.py:86 +#: models/core.py:88 msgid "template name" msgstr "模板名称" -#: models/core.py:87 +#: models/core.py:89 msgid "" "Example: 'flatfiles/contact_page'. If this isn't provided, the system will " "use 'flatfiles/default'." msgstr "" "例如:'flatfiles/contact_page'。如果未提供,系统将使用'flatfiles/default'。" -#: models/core.py:88 +#: models/core.py:90 msgid "registration required" msgstr "请先注册" -#: models/core.py:88 +#: models/core.py:90 msgid "If this is checked, only logged-in users will be able to view the page." msgstr "如果被选中,仅登录用户才可以查看此页。" -#: models/core.py:92 +#: models/core.py:94 msgid "flat page" msgstr "简单页面" -#: models/core.py:93 +#: models/core.py:95 msgid "flat pages" msgstr "简单页面" -#: models/core.py:114 +#: models/core.py:113 msgid "session key" msgstr "session键字" -#: models/core.py:115 +#: models/core.py:114 msgid "session data" msgstr "session数据" -#: models/core.py:116 +#: models/core.py:115 msgid "expire date" msgstr "过期日期" -#: models/core.py:118 +#: models/core.py:117 msgid "session" msgstr "" -#: models/core.py:119 +#: models/core.py:118 msgid "sessions" msgstr "" @@ -692,96 +692,100 @@ msgstr "塞尔维亚语" msgid "Simplified Chinese" msgstr "" -#: core/validators.py:58 +#: conf/global_settings.py:48 +msgid "Slovak" +msgstr "" + +#: core/validators.py:59 msgid "This value must contain only letters, numbers and underscores." msgstr "此值只能包含字母、数字和下划线。" -#: core/validators.py:62 +#: core/validators.py:63 msgid "This value must contain only letters, numbers, underscores and slashes." msgstr "此值只能包含字母、数字、下划线和斜线。" -#: core/validators.py:70 +#: core/validators.py:71 msgid "Uppercase letters are not allowed here." msgstr "这里不允许大写字母。" -#: core/validators.py:74 +#: core/validators.py:75 msgid "Lowercase letters are not allowed here." msgstr "这里不允许小写字母。" -#: core/validators.py:81 +#: core/validators.py:82 msgid "Enter only digits separated by commas." msgstr "只能输入用逗号分隔的数字。" -#: core/validators.py:93 +#: core/validators.py:94 msgid "Enter valid e-mail addresses separated by commas." msgstr "输入用逗号分隔的有效邮件地址。" -#: core/validators.py:100 +#: core/validators.py:98 msgid "Please enter a valid IP address." msgstr "请输入一个有效的IP地址。" -#: core/validators.py:104 +#: core/validators.py:102 msgid "Empty values are not allowed here." msgstr "这里不允许输入空值。" -#: core/validators.py:108 +#: core/validators.py:106 msgid "Non-numeric characters aren't allowed here." msgstr "这里不允许非数字字符。" -#: core/validators.py:112 +#: core/validators.py:110 msgid "This value can't be comprised solely of digits." msgstr "此值不能全部由数字组成。" -#: core/validators.py:117 +#: core/validators.py:115 msgid "Enter a whole number." msgstr "输入整数。" -#: core/validators.py:121 +#: core/validators.py:119 msgid "Only alphabetical characters are allowed here." msgstr "这里只允许字母。" -#: core/validators.py:125 +#: core/validators.py:123 msgid "Enter a valid date in YYYY-MM-DD format." msgstr "输入一个 YYYY-MM-DD 格式的有效日期。" -#: core/validators.py:129 +#: core/validators.py:127 msgid "Enter a valid time in HH:MM format." msgstr "输入一个 HH:MM 格式的有效时间。" -#: core/validators.py:133 +#: core/validators.py:131 msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." msgstr "输入一个 YYYY-MM-DD HH:MM 格式的有效日期/时间。" -#: core/validators.py:137 +#: core/validators.py:135 msgid "Enter a valid e-mail address." msgstr "输入一个有效的邮件地址。" -#: core/validators.py:149 +#: core/validators.py:147 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "上传一个有效的图片。您所上传的文件或者不是图片或是一个破坏的图片。" -#: core/validators.py:156 +#: core/validators.py:154 #, python-format msgid "The URL %s does not point to a valid image." msgstr "URL %s 指向的不是一个有效的图片。" -#: core/validators.py:160 +#: core/validators.py:158 #, python-format msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." msgstr "电话号码必须为 XXX-XXX-XXXX 格式。\"%s\"是无效的。" -#: core/validators.py:168 +#: core/validators.py:166 #, python-format msgid "The URL %s does not point to a valid QuickTime video." msgstr "URL %s 指向的不是一个有效的 QuickTime 视频。" -#: core/validators.py:172 +#: core/validators.py:170 msgid "A valid URL is required." msgstr "需要是一个有效的URL。" -#: core/validators.py:186 +#: core/validators.py:184 #, python-format msgid "" "Valid HTML is required. Specific errors are:\n" @@ -790,69 +794,69 @@ msgstr "" "需要有效的HTML。详细的错误是:\n" "%s" -#: core/validators.py:193 +#: core/validators.py:191 #, python-format msgid "Badly formed XML: %s" msgstr "格式错误的 XML: %s" -#: core/validators.py:203 +#: core/validators.py:201 #, python-format msgid "Invalid URL: %s" msgstr "无效 URL: %s" -#: core/validators.py:205 +#: core/validators.py:203 #, python-format msgid "The URL %s is a broken link." msgstr "URL %s 是一个断开的链接。" -#: core/validators.py:211 +#: core/validators.py:209 msgid "Enter a valid U.S. state abbreviation." msgstr "输入一个有效的 U.S. 州缩写。" -#: core/validators.py:226 +#: core/validators.py:224 #, fuzzy, python-format msgid "Watch your mouth! The word %s is not allowed here." msgid_plural "Watch your mouth! The words %s are not allowed here." msgstr[0] "小心你的嘴!%s 不允许在这里出现。" msgstr[1] "小心你的嘴!%s 不允许在这里出现。" -#: core/validators.py:233 +#: core/validators.py:231 #, python-format msgid "This field must match the '%s' field." msgstr "这个字段必须与 '%s' 字段相匹配。" -#: core/validators.py:252 +#: core/validators.py:250 msgid "Please enter something for at least one field." msgstr "请至少在一个字段上输入些什么。" -#: core/validators.py:261 core/validators.py:272 +#: core/validators.py:259 core/validators.py:270 msgid "Please enter both fields or leave them both empty." msgstr "请要么两个字段都输入或者两个字段都空着。" -#: core/validators.py:279 +#: core/validators.py:277 #, python-format msgid "This field must be given if %(field)s is %(value)s" msgstr "如果 %(field)s 是 %(value)s 时这个字段必须给出" -#: core/validators.py:291 +#: core/validators.py:289 #, python-format msgid "This field must be given if %(field)s is not %(value)s" msgstr "如果 %(field)s 不是 %(value)s 时这个字段必须给出" -#: core/validators.py:310 +#: core/validators.py:308 msgid "Duplicate values are not allowed." msgstr "重复值不允许。" -#: core/validators.py:333 +#: core/validators.py:331 #, python-format msgid "This value must be a power of %s." msgstr "这个值必须是 %s 的乘方。" -#: core/validators.py:344 +#: core/validators.py:342 msgid "Please enter a valid decimal number." msgstr "请输入一个有效的小数。" -#: core/validators.py:346 +#: core/validators.py:344 #, fuzzy, python-format msgid "Please enter a valid decimal number with at most %s total digit." msgid_plural "" @@ -860,7 +864,7 @@ msgid_plural "" msgstr[0] "请输入一个有效的小数,最多 %s 个数字。" msgstr[1] "请输入一个有效的小数,最多 %s 个数字。" -#: core/validators.py:349 +#: core/validators.py:347 #, fuzzy, python-format msgid "Please enter a valid decimal number with at most %s decimal place." msgid_plural "" @@ -868,36 +872,36 @@ msgid_plural "" msgstr[0] "请输入一个有效的小数,最多 %s 个小数位。" msgstr[1] "请输入一个有效的小数,最多 %s 个小数位。" -#: core/validators.py:359 +#: core/validators.py:357 #, python-format msgid "Make sure your uploaded file is at least %s bytes big." msgstr "请确保你上传的文件至少 %s 字节大。" -#: core/validators.py:360 +#: core/validators.py:358 #, python-format msgid "Make sure your uploaded file is at most %s bytes big." msgstr "请确保你上传的文件至多 %s 字节大。" -#: core/validators.py:373 +#: core/validators.py:371 msgid "The format for this field is wrong." msgstr "这个字段的格式不正确。" -#: core/validators.py:388 +#: core/validators.py:386 msgid "This field is invalid." msgstr "这个字段无效。" -#: core/validators.py:423 +#: core/validators.py:421 #, python-format msgid "Could not retrieve anything from %s." msgstr "不能从 %s 得到任何东西。" -#: core/validators.py:426 +#: core/validators.py:424 #, python-format msgid "" "The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." msgstr "URL %(url)s 返回了无效的 Content-Type 头 '%(contenttype)s'。" -#: core/validators.py:459 +#: core/validators.py:457 #, python-format msgid "" "Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " @@ -905,7 +909,7 @@ msgid "" msgstr "" "请关闭未关闭的 %(tag)s 标签从第 %(line)s 行。(行开始于 \"%(start)s\"。)" -#: core/validators.py:463 +#: core/validators.py:461 #, python-format msgid "" "Some text starting on line %(line)s is not allowed in that context. (Line " @@ -913,7 +917,7 @@ msgid "" msgstr "" "在 %(line)s 行开始的一些文本不允许在那个上下文中。(行开始于 \"%(start)s\"。)" -#: core/validators.py:468 +#: core/validators.py:466 #, python-format msgid "" "\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" @@ -921,7 +925,7 @@ msgid "" msgstr "" "在 %(line)s 行的\"%(attr)s\"不是一个有效的属性。(行开始于 \"%(start)s\"。)" -#: core/validators.py:473 +#: core/validators.py:471 #, python-format msgid "" "\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" @@ -929,7 +933,7 @@ msgid "" msgstr "" "在 %(line)s 行的\"<%(tag)s>\"不是一个有效的标签。(行开始于 \"%(start)s\"。)" -#: core/validators.py:477 +#: core/validators.py:475 #, python-format msgid "" "A tag on line %(line)s is missing one or more required attributes. (Line " @@ -937,7 +941,7 @@ msgid "" msgstr "" "在行 %(line)s 的标签少了一个或多个必须的属性。(行开始于 \"%(start)s\"。)" -#: core/validators.py:482 +#: core/validators.py:480 #, python-format msgid "" "The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " From c767e0f4fedabf050a8968b3b2cb68f0183683d7 Mon Sep 17 00:00:00 2001 From: Adrian Holovaty Date: Mon, 7 Nov 2005 04:25:29 +0000 Subject: [PATCH 34/39] Fixed #669 -- core.Site objects are now editable in the admin git-svn-id: http://code.djangoproject.com/svn/django/trunk@1119 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/models/core.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/django/models/core.py b/django/models/core.py index c4327ee649..2c4399bfa7 100644 --- a/django/models/core.py +++ b/django/models/core.py @@ -11,6 +11,10 @@ class Site(meta.Model): verbose_name_plural = _('sites') db_table = 'sites' ordering = ('domain',) + admin = meta.Admin( + list_display = ('domain', 'name'), + search_fields = ('domain', 'name'), + ) def __repr__(self): return self.domain From 290040f7fea4875bc7fbe43c3c05dca5d9debdd0 Mon Sep 17 00:00:00 2001 From: Adrian Holovaty Date: Mon, 7 Nov 2005 14:21:31 +0000 Subject: [PATCH 35/39] Fixed #748 -- Improved error handling in make-messages.py. It no longer clobbers files on error. Thanks, Hugo git-svn-id: http://code.djangoproject.com/svn/django/trunk@1120 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/bin/make-messages.py | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/django/bin/make-messages.py b/django/bin/make-messages.py index c78faac694..ea4f76b4aa 100755 --- a/django/bin/make-messages.py +++ b/django/bin/make-messages.py @@ -70,7 +70,13 @@ for lang in languages: if verbose: sys.stdout.write('processing file %s in %s\n' % (file, dirpath)) cmd = 'xgettext %s -d %s -L Python --keyword=gettext_noop --keyword=gettext_lazy --keyword=ngettext_lazy -o - "%s"' % ( os.path.exists(potfile) and '--omit-header' or '', domain, os.path.join(dirpath, thefile)) - msgs = os.popen(cmd, 'r').read() + (stdin, stdout, stderr) = os.popen3(cmd, 'r') + msgs = stdout.read() + errors = stderr.read() + if errors: + print "errors happened while running xgettext on %s" % file + print errors + sys.exit(8) if thefile != file: old = '#: '+os.path.join(dirpath, thefile)[2:] new = '#: '+os.path.join(dirpath, file)[2:] @@ -80,10 +86,22 @@ for lang in languages: if thefile != file: os.unlink(os.path.join(dirpath, thefile)) - msgs = os.popen('msguniq %s' % potfile, 'r').read() + (stdin, stdout, stderr) = os.popen3('msguniq %s' % potfile, 'r') + msgs = stdout.read() + errors = stderr.read() + if errors: + print "errors happened while running msguniq" + print errors + sys.exit(8) open(potfile, 'w').write(msgs) if os.path.exists(pofile): - msgs = os.popen('msgmerge %s %s' % (pofile, potfile), 'r').read() + (stdin, stdout, stderr) = os.popen3('msgmerge -q %s %s' % (pofile, potfile), 'r') + msgs = stdout.read() + errors = stderr.read() + if errors: + print "errors happened while running msgmerge" + print errors + sys.exit(8) open(pofile, 'wb').write(msgs) os.unlink(potfile) From e205b96825df26a53229dea6fdd9ad70d9531888 Mon Sep 17 00:00:00 2001 From: Adrian Holovaty Date: Mon, 7 Nov 2005 14:24:13 +0000 Subject: [PATCH 36/39] Fixed typo in docs/i18n.txt. Thanks, Esaj git-svn-id: http://code.djangoproject.com/svn/django/trunk@1121 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- docs/i18n.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/i18n.txt b/docs/i18n.txt index ceda2ade83..8ab9a1f2cb 100644 --- a/docs/i18n.txt +++ b/docs/i18n.txt @@ -454,7 +454,7 @@ that sets a user's language preference and redirects back to the previous page. Activate this view by adding the following line to your URLconf:: - (r'^i18n/', include('django.conf.urls.i18n'), + (r'^i18n/', include('django.conf.urls.i18n')), (Note that this example makes the view available at ``/i18n/setlang/``.) From c6ef1e0588f157fac91c441453780202fa1e4f1a Mon Sep 17 00:00:00 2001 From: Adrian Holovaty Date: Mon, 7 Nov 2005 14:26:40 +0000 Subject: [PATCH 37/39] Changed register_tag example in docs/templates_python.txt to be consistent with other examples. Thanks, EABinGA git-svn-id: http://code.djangoproject.com/svn/django/trunk@1122 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- docs/templates_python.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/templates_python.txt b/docs/templates_python.txt index b4e09252bd..81c423f33b 100644 --- a/docs/templates_python.txt +++ b/docs/templates_python.txt @@ -611,7 +611,7 @@ Registering the tag Finally, use a ``register_tag`` call, as in ``register_filter`` above. Example:: from django.core import template - template.register_tag('cycle', do_cycle) + template.register_tag('current_time', do_current_time) ``register_tag`` takes two arguments: From 54c3367a6301f7f7978727aee92edbdc98b80dee Mon Sep 17 00:00:00 2001 From: Adrian Holovaty Date: Mon, 7 Nov 2005 14:39:13 +0000 Subject: [PATCH 38/39] Updated install.txt and modpython.txt to note required Apache and mod_python versions. Also gave full example for Apache config git-svn-id: http://code.djangoproject.com/svn/django/trunk@1123 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- docs/install.txt | 2 +- docs/modpython.txt | 23 ++++++++++++++++++++++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/docs/install.txt b/docs/install.txt index b18d26d5c8..40366e0228 100644 --- a/docs/install.txt +++ b/docs/install.txt @@ -15,7 +15,7 @@ mod_python is similar to mod_perl -- it embeds Python within Apache and loads Python code into memory when the server starts. Code stays in memory throughout the life of an Apache process, which leads to significant performance gains over other server arrangements. Make sure you have Apache installed, with the -mod_python module activated. +mod_python module activated. Django requires Apache 2.x and mod_python 3.x. See `How to use Django with mod_python`_ for information on how to configure mod_python once you have it installed. diff --git a/docs/modpython.txt b/docs/modpython.txt index 13377ad2dd..b89eda9184 100644 --- a/docs/modpython.txt +++ b/docs/modpython.txt @@ -10,6 +10,8 @@ Python code into memory when the server starts. Code stays in memory throughout the life of an Apache process, which leads to significant performance gains over other server arrangements. +Django requires Apache 2.x and mod_python 3.x. + .. _Apache: http://httpd.apache.org/ .. _mod_python: http://www.modpython.org/ .. _mod_perl: http://perl.apache.org/ @@ -129,7 +131,26 @@ particular part of the site:: SetHandler None -Just change ``Location`` to the root URL of your media files. +Just change ``Location`` to the root URL of your media files. You can also use +```` to match a regular expression. + +This example sets up Django at the site root but explicitly disables Django for +the ``media`` subdirectory and any URL that ends with ``.jpg``, ``.gif`` or +``.png``:: + + + SetHandler python-program + PythonHandler django.core.handlers.modpython + SetEnv DJANGO_SETTINGS_MODULE myproject.settings + + + + SetHandler None + + + + SetHandler None + Note that the Django development server automagically serves admin media files, but this is not the case when you use any other server arrangement. From c7b28cf7e62ed8a5ddd0be269b449f8d0efd6e0c Mon Sep 17 00:00:00 2001 From: Adrian Holovaty Date: Mon, 7 Nov 2005 14:47:29 +0000 Subject: [PATCH 39/39] Added 'Serving the admin files' section in docs/modpython.txt git-svn-id: http://code.djangoproject.com/svn/django/trunk@1124 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- docs/modpython.txt | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/docs/modpython.txt b/docs/modpython.txt index b89eda9184..734998c9da 100644 --- a/docs/modpython.txt +++ b/docs/modpython.txt @@ -2,7 +2,7 @@ How to use Django with mod_python ================================= -`Apache`_ with `mod_python`_ currently is the preferred setup for using Django +Apache_ with `mod_python`_ currently is the preferred setup for using Django on a production server. mod_python is similar to `mod_perl`_ : It embeds Python within Apache and loads @@ -112,12 +112,11 @@ revoke your Django privileges. Serving media files =================== -Django doesn't serve media files itself. It'd be inefficient to flow media -files through a (relatively) complex framework when much, much more well-tuned -solutions are better. +Django doesn't serve media files itself; it leaves that job to whichever Web +server you choose. -We recommend using a separate Web server for serving media. Here are some good -choices: +We recommend using a separate Web server -- i.e., one that's not also running +Django -- for serving media. Here are some good choices: * lighttpd_ * TUX_ @@ -152,9 +151,28 @@ the ``media`` subdirectory and any URL that ends with ``.jpg``, ``.gif`` or SetHandler None -Note that the Django development server automagically serves admin media files, -but this is not the case when you use any other server arrangement. .. _lighttpd: http://www.lighttpd.net/ .. _TUX: http://en.wikipedia.org/wiki/TUX_web_server .. _Apache: http://httpd.apache.org/ + +Serving the admin files +======================= + +Note that the Django development server automagically serves admin media files, +but this is not the case when you use any other server arrangement. You're +responsible for setting up Apache, or whichever media server you're using, to +serve the admin files. + +The admin files live in (``django/contrib/admin/media``) of the Django +distribution. + +Here are two recommended approaches: + + 1. Create a symbolic link to the admin media files from within your + document root. This way, all of your Django-related files -- code + **and** templates -- stay in one place, and you'll still be able to + ``svn update`` your code to get the latest admin templates, if they + change. + 2. Or, copy the admin media files so that they live within your document + root.