From 650f92c03b6d8b91b77a0773e1a26649bdb725fe Mon Sep 17 00:00:00 2001 From: Georg Bauer Date: Tue, 15 Nov 2005 16:57:18 +0000 Subject: [PATCH] new_admin: even more translation hooks. This time only 'de' updated (to reduce file-number on update). git-svn-id: http://code.djangoproject.com/svn/django/branches/new-admin@1248 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/conf/locale/de/LC_MESSAGES/django.mo | Bin 27591 -> 30331 bytes django/conf/locale/de/LC_MESSAGES/django.po | 229 +++++++++++++++++++- django/contrib/admin/views/main.py | 14 +- django/contrib/comments/models/comments.py | 84 ++++--- 4 files changed, 279 insertions(+), 48 deletions(-) diff --git a/django/conf/locale/de/LC_MESSAGES/django.mo b/django/conf/locale/de/LC_MESSAGES/django.mo index 8bdfc78ef1c9954e8526905a723ff519b5165bab..5b7d1fce0a67ca0ea729e4423a8d6e6189d8016b 100644 GIT binary patch delta 9656 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 delta 7015 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\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-1\n" "Content-Transfer-Encoding: 8bit\n" +#: contrib/comments/models/comments.py:8 +#: contrib/comments/models/comments.py:161 +msgid "object ID" +msgstr "Objekt ID" + +#: contrib/comments/models/comments.py:9 +msgid "headline" +msgstr "Überschrift" + +#: contrib/comments/models/comments.py:10 +#: contrib/comments/models/comments.py:162 +msgid "comment" +msgstr "Kommentar" + +#: contrib/comments/models/comments.py:11 +msgid "rating #1" +msgstr "Bewertung #1" + +#: contrib/comments/models/comments.py:12 +msgid "rating #2" +msgstr "Bewertung #2" + +#: contrib/comments/models/comments.py:13 +msgid "rating #3" +msgstr "Bewertung #3" + +#: contrib/comments/models/comments.py:14 +msgid "rating #4" +msgstr "Bewertung #4" + +#: contrib/comments/models/comments.py:15 +msgid "rating #5" +msgstr "Bewertung #5" + +#: contrib/comments/models/comments.py:16 +msgid "rating #6" +msgstr "Bewertung #6" + +#: contrib/comments/models/comments.py:17 +msgid "rating #7" +msgstr "Bewertung #7" + +#: contrib/comments/models/comments.py:18 +msgid "rating #8" +msgstr "Bewertung #8" + +#: contrib/comments/models/comments.py:23 +msgid "is valid rating" +msgstr "ist eine Bewertung" + +#: contrib/comments/models/comments.py:24 +#: contrib/comments/models/comments.py:164 +msgid "date/time submitted" +msgstr "Datum/Zeit Erstellung" + +#: contrib/comments/models/comments.py:25 +#: contrib/comments/models/comments.py:165 +msgid "is public" +msgstr "ist öffentlich" + +#: contrib/comments/models/comments.py:26 contrib/admin/views/doc.py:274 +msgid "IP address" +msgstr "IP-Adresse" + +#: contrib/comments/models/comments.py:27 +msgid "is removed" +msgstr "ist gelöscht" + +#: contrib/comments/models/comments.py:27 +msgid "" +"Check this box if the comment is inappropriate. A \"This comment has been " +"removed\" message will be displayed instead." +msgstr "" +"Hier einen Haken setzen, wenn der Kommentar unpassend ist. Es wird dann eine " +"\"Dieser Kommentar wurde entfernt\" Meldung statt dessen angezeigt." + +#: contrib/comments/models/comments.py:31 +msgid "Comment" +msgstr "Kommentar" + +#: contrib/comments/models/comments.py:32 +msgid "Comments" +msgstr "Kommentare" + +#: contrib/comments/models/comments.py:85 +#: contrib/comments/models/comments.py:204 +msgid "Content object" +msgstr "Inhaltsobjekt" + +#: contrib/comments/models/comments.py:113 +#, python-format +msgid "" +"Posted by %(user)s at %(date)s\n" +"\n" +"%(comment)s\n" +"\n" +"http://%(domain)s%(url)s" +msgstr "" +"Geschrieben von %(user)s am %(date)s\n" +"\n" +"%(comment)s\n" +"\n" +"http://%(domain)s%(url)s" + +#: contrib/comments/models/comments.py:163 +msgid "person's name" +msgstr "Autorname" + +#: contrib/comments/models/comments.py:166 +msgid "ip address" +msgstr "IP-Adresse" + +#: contrib/comments/models/comments.py:168 +msgid "approved by staff" +msgstr "Bestätigt vom Betreiber" + +#: contrib/comments/models/comments.py:172 +msgid "Free comment" +msgstr "Freier Kommentar" + +#: contrib/comments/models/comments.py:173 +msgid "Free comments" +msgstr "Freie Kommentare" + +#: contrib/comments/models/comments.py:209 +msgid "score" +msgstr "Bewertung" + +#: contrib/comments/models/comments.py:210 +msgid "score date" +msgstr "Bewertungsdatum" + +#: contrib/comments/models/comments.py:213 +msgid "Karma score" +msgstr "Karma Bewertung" + +#: contrib/comments/models/comments.py:214 +msgid "Karma scores" +msgstr "Karma Bewertungen" + +#: contrib/comments/models/comments.py:223 +#, python-format +msgid "%(score)d rating by %(user)s" +msgstr "%(score)d Bewertung von %(user)s" + +#: contrib/comments/models/comments.py:248 +msgid "flag date" +msgstr "Kennzeichnungsdatum" + +#: contrib/comments/models/comments.py:251 +msgid "User flag" +msgstr "Benutzerkennzeichnung" + +#: contrib/comments/models/comments.py:252 +msgid "User flags" +msgstr "Benutzerkennzeichnungen" + +#: contrib/comments/models/comments.py:256 +#, python-format +msgid "Flag by %r" +msgstr "Gekennzeichnet von %r" + +#: contrib/comments/models/comments.py:271 +#, python-format +msgid "" +"This comment was flagged by %(user)s:\n" +"\n" +"%(text)s" +msgstr "" +"Dieser Kommentar ist von %(user)s markiert:\n" +"\n" +"%(text)s" + +#: contrib/comments/models/comments.py:278 +msgid "deletion date" +msgstr "Löschdatum" + +#: contrib/comments/models/comments.py:281 +msgid "Moderator deletion" +msgstr "Löschung vom Moderator" + +#: contrib/comments/models/comments.py:282 +msgid "Moderator deletions" +msgstr "Löschungen vom Moderator" + +#: contrib/comments/models/comments.py:286 +#, python-format +msgid "Moderator deletion by %r" +msgstr "Vom Moderator %r gelöscht" + #: contrib/comments/views/karma.py:18 msgid "Anonymous users cannot vote" msgstr "Anonyme Benutzer können nicht abstimmen" @@ -152,6 +342,10 @@ msgstr "" "Die eMail-Adresse ist nicht der Benutzername. Bitte '%s' stattdessen " "versuchen." +#: contrib/admin/views/main.py:50 +msgid "Site administration" +msgstr "Website Verwaltung" + #: contrib/admin/views/main.py:84 #, python-format msgid "" @@ -162,9 +356,38 @@ msgstr "" "
    \n" #: contrib/admin/views/main.py:114 contrib/admin/views/main.py:131 +#: contrib/admin/views/main.py:186 msgid "All" msgstr "Alle" +#: contrib/admin/views/main.py:152 +msgid "Any date" +msgstr "Alle Daten" + +#: contrib/admin/views/main.py:153 +msgid "Today" +msgstr "Heute" + +#: contrib/admin/views/main.py:156 +msgid "Past 7 days" +msgstr "Letzte 7 Tage" + +#: contrib/admin/views/main.py:158 +msgid "This month" +msgstr "Diesen Monat" + +#: contrib/admin/views/main.py:160 +msgid "This year" +msgstr "Dieses Jahr" + +#: contrib/admin/views/main.py:186 +msgid "Yes" +msgstr "Ja" + +#: contrib/admin/views/main.py:186 +msgid "No" +msgstr "Nein" + #: contrib/admin/views/main.py:194 msgid "Unknown" msgstr "Unbekannt" @@ -303,10 +526,6 @@ msgstr "Dateipfad" msgid "Decimal number" msgstr "Dezimalzahl" -#: contrib/admin/views/doc.py:274 -msgid "IP address" -msgstr "IP-Adresse" - #: contrib/admin/views/doc.py:276 msgid "Boolean (Either True, False or None)" msgstr "Wahrheitswert (Wahr, Falsch oder Nichts)" diff --git a/django/contrib/admin/views/main.py b/django/contrib/admin/views/main.py index 99f5149aaf..a6a054167b 100644 --- a/django/contrib/admin/views/main.py +++ b/django/contrib/admin/views/main.py @@ -47,7 +47,7 @@ def _get_mod_opts(app_label, module_name): def index(request): - return render_to_response('admin/index', {'title': 'Site administration'}, context_instance=Context(request)) + return render_to_response('admin/index', {'title': _('Site administration')}, context_instance=Context(request)) index = staff_member_required(index) class IncorrectLookupParameters(Exception): @@ -149,15 +149,15 @@ class DateFieldFilterSpec(FilterSpec): today_str = isinstance(self.field, meta.DateTimeField) and today.strftime('%Y-%m-%d 23:59:59') or today.strftime('%Y-%m-%d') self.links = ( - ('Any date', {}), - ('Today', {'%s__year' % self.field.name: str(today.year), + (_('Any date'), {}), + (_('Today'), {'%s__year' % self.field.name: str(today.year), '%s__month' % self.field.name: str(today.month), '%s__day' % self.field.name: str(today.day)}), - ('Past 7 days', {'%s__gte' % self.field.name: one_week_ago.strftime('%Y-%m-%d'), + (_('Past 7 days'), {'%s__gte' % self.field.name: one_week_ago.strftime('%Y-%m-%d'), '%s__lte' % f.name: today_str}), - ('This month', {'%s__year' % self.field.name: str(today.year), + (_('This month'), {'%s__year' % self.field.name: str(today.year), '%s__month' % f.name: str(today.month)}), - ('This year', {'%s__year' % self.field.name: str(today.year)}) + (_('This year'), {'%s__year' % self.field.name: str(today.year)}) ) def title(self): @@ -183,7 +183,7 @@ class BooleanFieldFilterSpec(FilterSpec): return self.field.verbose_name def choices(self, cl): - for k, v in (('All', None), ('Yes', '1'), ('No', '0')): + for k, v in ((_('All'), None), (_('Yes'), '1'), (_('No'), '0')): yield { 'selected' : self.lookup_val == v and not self.lookup_val2, 'query_string' : cl.get_query_string( {self.lookup_kwarg: v}, [self.lookup_kwarg2]), 'display': k diff --git a/django/contrib/comments/models/comments.py b/django/contrib/comments/models/comments.py index 33a44c8494..3062af62de 100644 --- a/django/contrib/comments/models/comments.py +++ b/django/contrib/comments/models/comments.py @@ -1,32 +1,35 @@ from django.core import meta from django.models import auth, core +from django.utils.translation import gettext_lazy as _ class Comment(meta.Model): user = meta.ForeignKey(auth.User, raw_id_admin=True) content_type = meta.ForeignKey(core.ContentType) - object_id = meta.IntegerField('object ID') - headline = meta.CharField(maxlength=255, blank=True) - comment = meta.TextField(maxlength=3000) - rating1 = meta.PositiveSmallIntegerField('rating #1', blank=True, null=True) - rating2 = meta.PositiveSmallIntegerField('rating #2', blank=True, null=True) - rating3 = meta.PositiveSmallIntegerField('rating #3', blank=True, null=True) - rating4 = meta.PositiveSmallIntegerField('rating #4', blank=True, null=True) - rating5 = meta.PositiveSmallIntegerField('rating #5', blank=True, null=True) - rating6 = meta.PositiveSmallIntegerField('rating #6', blank=True, null=True) - rating7 = meta.PositiveSmallIntegerField('rating #7', blank=True, null=True) - rating8 = meta.PositiveSmallIntegerField('rating #8', blank=True, null=True) + object_id = meta.IntegerField(_('object ID')) + headline = meta.CharField(_('headline'), maxlength=255, blank=True) + comment = meta.TextField(_('comment'), maxlength=3000) + rating1 = meta.PositiveSmallIntegerField(_('rating #1'), blank=True, null=True) + rating2 = meta.PositiveSmallIntegerField(_('rating #2'), blank=True, null=True) + rating3 = meta.PositiveSmallIntegerField(_('rating #3'), blank=True, null=True) + rating4 = meta.PositiveSmallIntegerField(_('rating #4'), blank=True, null=True) + rating5 = meta.PositiveSmallIntegerField(_('rating #5'), blank=True, null=True) + rating6 = meta.PositiveSmallIntegerField(_('rating #6'), blank=True, null=True) + rating7 = meta.PositiveSmallIntegerField(_('rating #7'), blank=True, null=True) + rating8 = meta.PositiveSmallIntegerField(_('rating #8'), blank=True, null=True) # This field designates whether to use this row's ratings in aggregate # functions (summaries). We need this because people are allowed to post # multiple reviews on the same thing, but the system will only use the # latest one (with valid_rating=True) in tallying the reviews. - valid_rating = meta.BooleanField('is valid rating') - submit_date = meta.DateTimeField('date/time submitted', auto_now_add=True) - is_public = meta.BooleanField() - ip_address = meta.IPAddressField('IP address', blank=True, null=True) - is_removed = meta.BooleanField(help_text='Check this box if the comment is inappropriate. A "This comment has been removed" message will be displayed instead.') + valid_rating = meta.BooleanField(_('is valid rating')) + submit_date = meta.DateTimeField(_('date/time submitted'), auto_now_add=True) + is_public = meta.BooleanField(_('is public')) + ip_address = meta.IPAddressField(_('IP address'), blank=True, null=True) + is_removed = meta.BooleanField(_('is removed'), help_text=_('Check this box if the comment is inappropriate. A "This comment has been removed" message will be displayed instead.')) site = meta.ForeignKey(core.Site) class META: db_table = 'comments' + verbose_name = _('Comment') + verbose_name_plural = _('Comments') module_constants = { # min. and max. allowed dimensions for photo resizing (in pixels) 'MIN_PHOTO_DIMENSION': 5, @@ -79,7 +82,7 @@ class Comment(meta.Model): except ObjectDoesNotExist: return None - get_content_object.short_description = 'Content object' + get_content_object.short_description = _('Content object') def _fill_karma_cache(self): "Helper function that populates good/bad karma caches" @@ -107,9 +110,9 @@ class Comment(meta.Model): return self._karma_total_good + self._karma_total_bad def get_as_text(self): - return 'Posted by %s at %s\n\n%s\n\nhttp://%s%s' % \ - (self.get_user().username, self.submit_date, - self.comment, self.get_site().domain, self.get_absolute_url()) + return _('Posted by %(user)s at %(date)s\n\n%(comment)s\n\nhttp://%(domain)s%(url)s') % \ + {'user': self.get_user().username, 'date': self.submit_date, + 'comment': self.comment, 'domain': self.get_site().domain, 'url': self.get_absolute_url()} def _module_get_security_hash(options, photo_options, rating_options, target): """ @@ -155,17 +158,19 @@ class Comment(meta.Model): class FreeComment(meta.Model): # A FreeComment is a comment by a non-registered user. content_type = meta.ForeignKey(core.ContentType) - object_id = meta.IntegerField('object ID') - comment = meta.TextField(maxlength=3000) - person_name = meta.CharField("person's name", maxlength=50) - submit_date = meta.DateTimeField('date/time submitted', auto_now_add=True) - is_public = meta.BooleanField() - ip_address = meta.IPAddressField() + object_id = meta.IntegerField(_('object ID')) + comment = meta.TextField(_('comment'), maxlength=3000) + person_name = meta.CharField(_("person's name"), maxlength=50) + submit_date = meta.DateTimeField(_('date/time submitted'), auto_now_add=True) + is_public = meta.BooleanField(_('is public')) + ip_address = meta.IPAddressField(_('ip address')) # TODO: Change this to is_removed, like Comment - approved = meta.BooleanField('approved by staff') + approved = meta.BooleanField(_('approved by staff')) site = meta.ForeignKey(core.Site) class META: db_table = 'comments_free' + verbose_name = _('Free comment') + verbose_name_plural = _('Free comments') ordering = ('-submit_date',) admin = meta.Admin( fields = ( @@ -196,15 +201,17 @@ class FreeComment(meta.Model): except ObjectDoesNotExist: return None - get_content_object.short_description = 'Content object' + get_content_object.short_description = _('Content object') class KarmaScore(meta.Model): user = meta.ForeignKey(auth.User) comment = meta.ForeignKey(Comment) - score = meta.SmallIntegerField(db_index=True) - scored_date = meta.DateTimeField(auto_now=True) + score = meta.SmallIntegerField(_('score'), db_index=True) + scored_date = meta.DateTimeField(_('score date'), auto_now=True) class META: module_name = 'karma' + verbose_name = _('Karma score') + verbose_name_plural = _('Karma scores') unique_together = (('user', 'comment'),) module_constants = { # what users get if they don't have any karma @@ -213,7 +220,7 @@ class KarmaScore(meta.Model): } def __repr__(self): - return "%d rating by %s" % (self.score, self.get_user()) + return _("%(score)d rating by %(user)s") % {'score': self.score, 'user': self.get_user()} def _module_vote(user_id, comment_id, score): try: @@ -238,13 +245,15 @@ class KarmaScore(meta.Model): class UserFlag(meta.Model): user = meta.ForeignKey(auth.User) comment = meta.ForeignKey(Comment) - flag_date = meta.DateTimeField(auto_now_add=True) + flag_date = meta.DateTimeField(_('flag date'), auto_now_add=True) class META: db_table = 'comments_user_flags' + verbose_name = _('User flag') + verbose_name_plural = _('User flags') unique_together = (('user', 'comment'),) def __repr__(self): - return "Flag by %r" % self.get_user() + return _("Flag by %r") % self.get_user() def _module_flag(comment, user): """ @@ -259,17 +268,20 @@ class UserFlag(meta.Model): except UserFlagDoesNotExist: from django.core.mail import mail_managers f = UserFlag(None, user.id, comment.id, None) - message = 'This comment was flagged by %s:\n\n%s' % (user.username, comment.get_as_text()) + message = _('This comment was flagged by %(user)s:\n\n%(text)s') % {'user': user.username, 'text': comment.get_as_text()} mail_managers('Comment flagged', message, fail_silently=True) f.save() class ModeratorDeletion(meta.Model): user = meta.ForeignKey(auth.User, verbose_name='moderator') comment = meta.ForeignKey(Comment) - deletion_date = meta.DateTimeField(auto_now_add=True) + deletion_date = meta.DateTimeField(_('deletion date'), auto_now_add=True) class META: db_table = 'comments_moderator_deletions' + verbose_name = _('Moderator deletion') + verbose_name_plural = _('Moderator deletions') unique_together = (('user', 'comment'),) def __repr__(self): - return "Moderator deletion by %r" % self.get_user() + return _("Moderator deletion by %r") % self.get_user() +